import re, nuke

def AE_Transform(AE_Text):
#	file = open('/Users/rgb_tv/Desktop/AE_to_Nuke.txt')
#	f = file.read()
	f = AE_Text
	keepSearch = 1
	location = 0
	locationList = []
	while keepSearch == 1:
		location = f.find('Transform', location+1)
		if location != -1 and location < len(f):
			locationList.append(location)
			print location
			print 'final num = ' + str(len(locationList))
		else:
			keepSearch = 0
	locationList.append(len(f))
	
	for n in range(len(locationList)-1):
		if f.find('Position', locationList[n], locationList[n+1]) != -1:
			string = f[locationList[n]:locationList[n+1]]
			regex = re.compile('\\t([-+]?\d+\.?\d*)\\t([-+]?\d+\.?\d*)\\t([-+]?\d+\.?\d*)\\t([-+]?\d+\.?\d*)\\t')
			positionList = regex.findall(string)
			print 'Position List = ' + str(positionList)
		elif f.find('Scale', locationList[n], locationList[n+1]) != -1:
			string = f[locationList[n]:locationList[n+1]]
			regex = re.compile('\\t([-+]?\d+\.?\d*)\\t([-+]?\d+\.?\d*)\\t([-+]?\d+\.?\d*)\\t([-+]?\d+\.?\d*)\\t')
			scaleList = regex.findall(string)
			print 'Scale List = ' + str(scaleList)
		elif f.find('Rotation', locationList[n], locationList[n+1]) != -1:
			string = f[locationList[n]:locationList[n+1]]
			regex = re.compile('\\t([-+]?\d+\.?\d*)\\t([-+]?\d+\.?\d*)\\t')
			rotationList = regex.findall(string)
			print 'Rotation List = ' + str(rotationList)
	
	regex = re.compile('\\tSource Width\\t(\d*)[\r\n]\\tSource Height\\t(\d*)[\r\n]')
	resolution = regex.findall(f)
	print resolution
		
	
	node = nuke.createNode( 'Transform' )
	p = node['translate']
	s = node['scale']
	r = node['rotate']
	
	p.setAnimated()
	for i in positionList:
		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 scaleList:
		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 rotationList:
		r.setValueAt(float(i[1]), float(i[0]))
		
def AE_Drop( mimeType, text ):
    
    if 'Adobe' in text:
        AE_Text = text.encode('unicode_escape')
        if 'Transform' in AE_Text:
	        AE_Transform(AE_Text)
        print AE_Text
        return True
    else:
        return False

nukescripts.addDropDataCallback( AE_Drop )

