import nuke

def AE_Transform(AE_Text):
	file = AE_Text
	splitFile = file.splitlines()


	fileWithLineNumbers = zip(range(len(splitFile)), splitFile)
	numberOfLines = len(fileWithLineNumbers)

	positionData = []
	scaleData = []
	rotationData = []

	for i in range(numberOfLines):
		if "Position" in fileWithLineNumbers[i][1]:
			positionLineNumber = fileWithLineNumbers[i][0]
		elif "Scale" in fileWithLineNumbers[i][1]:
			scaleLineNumber = fileWithLineNumbers[i][0]
		elif "Rotation" in fileWithLineNumbers[i][1]:
			rotationLineNumber = fileWithLineNumbers[i][0]


	for aPosItem in fileWithLineNumbers[positionLineNumber+2:]:
		if aPosItem[1] == "":
			break
		else:
			positionData.append(aPosItem[1].strip().split("\t"))   

	for aSclItem in fileWithLineNumbers[scaleLineNumber+2:]:
		if aSclItem[1] == "":
			break
		else:
			scaleData.append(aSclItem[1].strip().split("\t"))   

	for aRotItem in fileWithLineNumbers[rotationLineNumber+2:]:
		if aRotItem[1] == "":
			break
		else:
			rotationData.append(aRotItem[1].strip().split("\t"))   

	for i in range(numberOfLines):
		if "Width" in fileWithLineNumbers[i][1]:
			aeWidth = fileWithLineNumbers[i][1].strip().split("\t")[-1]
		elif "Height" in fileWithLineNumbers[i][1]:
			aeHeight = fileWithLineNumbers[i][1].strip().split("\t")[-1]
	resolution = [aeWidth, aeHeight]




	node = nuke.createNode( 'Transform' )
	p = node['translate']
	s = node['scale']
	r = node['rotate']

	p.setAnimated()
	for i in positionData:
		p.setValueAt(float(i[1])-float(resolution[0][0])/2, float(i[0]), 0)
		p.setValueAt(float(i[2])-float(resolution[0][1])/2, float(i[0]), 1)

	s.setAnimated()
	for i in scaleData:
		s.setValueAt(float(i[1])/100, float(i[0]), 0)
		s.setValueAt(float(i[2])/100, float(i[0]), 1)

	r.setAnimated()
	for i in rotationData:
		r.setValueAt(float(i[1]), float(i[0]))

def AE_Drop( mimeType, text ):
    
    if 'Adobe' in text:
        AE_Text = text
        if 'Transform' in AE_Text:
	        AE_Transform(AE_Text)
        return True
    else:
        return False

nukescripts.addDropDataCallback( AE_Drop )