import nuke
import nukescripts

def key_mix_this():
    try:

        #SELECTION
        sel_node = nuke.selectedNode()
        sel_node_name = sel_node.name()
        
        #CREATIONG
        key_mix = nuke.createNode("Keymix")
        roto = nuke.nodes.Roto()
        
        #EDITION
        key_mix.setYpos(nuke.toNode(sel_node_name).ypos() + 150)
        key_mix.setXpos(nuke.toNode(sel_node_name).xpos()  )
        roto.setYpos(key_mix.ypos())
        roto.setXpos(key_mix.xpos()+175) 
        
        #CONNECTION
        key_mix.setInput(1,sel_node)
        key_mix.setInput(2,roto)
    
        #LOGIC

        if len(nuke.dependencies(nuke.toNode(sel_node_name))) > 0 and len(nuke.dependencies(nuke.toNode(sel_node_name))) == 1:
           
            dep_node = nuke.dependencies(nuke.toNode(sel_node_name))
            topnode_node = nuke.toNode(dep_node[0].name())
           
            key_mix.setInput(0,topnode_node)
            key_mix.setInput(2,roto)
                
        elif len(nuke.dependencies(nuke.toNode(sel_node_name))) > 1:
    
            dep_node = nuke.dependencies(nuke.toNode(sel_node_name))
            topnode_node = nuke.toNode(dep_node[0].name())
    
            key_mix.setInput(0,sel_node)
            key_mix.setInput(2,roto)
             
        else:
            pass
     
    except ValueError:
        
        nuke.message("select a node, duude")
    
    
if __name__ == "__main__":
    key_mix_this()