import bpy

def chulip_fix(mesh, material):
    nodes = [] if not material.node_tree else material.node_tree.nodes
    img_nodes = [n for n in nodes if n.type == 'TEX_IMAGE' and n.image]
    image = img_nodes[0].image if img_nodes else None

    semitransparent = 'transparent' in material.name.lower()

    if image and semitransparent:
        node_img = nodes.new('ShaderNodeTexImage')
        node_img.image = image
        node_img.image.alpha_mode = 'CHANNEL_PACKED'

if __name__ == '__main__':
    obs = bpy.context.selected_objects or bpy.data.objects
    for ob in obs:
        if ob.type != 'MESH': continue
        for mat in ob.data.materials:
            if not mat: continue
            chulip_fix(ob.data, mat)
