Added another script for working with AFX XML files, this one Collects the required files to a given location and replaces the route on the xml file to match this path. It works (barely).
parent
a5a8675405
commit
4e688434d9
@ -0,0 +1,108 @@
|
|||||||
|
#! /usr/bin/env python3
|
||||||
|
import re, sys, shutil, os, re, codecs
|
||||||
|
import xml.etree.ElementTree as ET
|
||||||
|
|
||||||
|
print("MAkinE AFX Collecting tool. Copyleft 2016 yorch")
|
||||||
|
args = sys.argv[1:]
|
||||||
|
name = args[0]
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
dest = input("Please enter the destination path for your collect:\n")
|
||||||
|
|
||||||
|
# tested on mac only
|
||||||
|
|
||||||
|
#def get_files( text_file ):
|
||||||
|
|
||||||
|
#re_ptn=re.compile("(?<=fullpath\=\")[^\"]*")
|
||||||
|
|
||||||
|
#report = open(str( text_file ), 'r')
|
||||||
|
#report_text = str(report.read())
|
||||||
|
|
||||||
|
#matches= re_ptn.findall(report_text)
|
||||||
|
|
||||||
|
#return matches
|
||||||
|
|
||||||
|
def get_files( text_file ):
|
||||||
|
|
||||||
|
ET.register_namespace("", "http://www.adobe.com/products/aftereffects")
|
||||||
|
|
||||||
|
with open(name, 'r') as xml_file:
|
||||||
|
xml_tree = ET.parse(xml_file)
|
||||||
|
root = xml_tree.getroot()
|
||||||
|
|
||||||
|
for Pin in root.iter("{http://www.adobe.com/products/aftereffects}Item"): #<Pin> elements seem to contain file references
|
||||||
|
for fileRef in Pin.iter("{http://www.adobe.com/products/aftereffects}fileReference"):
|
||||||
|
filepath = fileRef.attrib["fullpath"]
|
||||||
|
isFile = os.path.isfile(fileRef.attrib["fullpath"])
|
||||||
|
|
||||||
|
if isFile:
|
||||||
|
copy_file( filepath , dest )
|
||||||
|
fileRef.set("fullpath",dest + os.path.basename(filepath))
|
||||||
|
else:
|
||||||
|
fileRef.set("fullpath",dest + os.path.basename(filepath))
|
||||||
|
print( "asasas", Pin[0].attrib["bdata"] )
|
||||||
|
#fileRef.set("fullpath",dest + os.path.basename(filepath))
|
||||||
|
|
||||||
|
xml_tree.write(os.path.dirname(name)+os.sep+os.path.basename(name).split(".")[0]+"_collected"+ os.path.extsep + os.path.basename(name).split(".")[1],encoding="utf-8")
|
||||||
|
|
||||||
|
#for item in root.iter("{http://www.adobe.com/products/aftereffects}fileReference"):
|
||||||
|
|
||||||
|
#filepath = item.attrib["fullpath"]
|
||||||
|
#isFile = os.path.isfile(item.attrib["fullpath"])
|
||||||
|
#if isFile:
|
||||||
|
#item.set("fullpath",dest + os.path.basename(filepath))
|
||||||
|
#print(item.attrib, isFile )
|
||||||
|
#xml_tree.write(os.path.dirname(name)+os.sep+os.path.basename(name).split(".")[0]+"_collect"+ os.path.extsep + os.path.basename(name).split(".")[1],encoding="utf-8")
|
||||||
|
#xml_file.close()
|
||||||
|
|
||||||
|
return
|
||||||
|
|
||||||
|
def get_seqs( text_file ):
|
||||||
|
|
||||||
|
report = open(str( text_file ), 'r')
|
||||||
|
report_lines = []
|
||||||
|
|
||||||
|
for line in report:
|
||||||
|
report_lines.append(line)
|
||||||
|
|
||||||
|
seqs = []
|
||||||
|
|
||||||
|
for line in report_lines:
|
||||||
|
line_content = line
|
||||||
|
if line_content.find("\tSequence") != -1:
|
||||||
|
begin_path = line_content.find("at ")+3
|
||||||
|
end_path = line_content.find(" with ") ### HACKISH: Try using regex to reliably finding out the end of the path.
|
||||||
|
seqs.append(line_content[begin_path:end_path])
|
||||||
|
|
||||||
|
return seqs
|
||||||
|
|
||||||
|
def copy_file( f , dest ):
|
||||||
|
|
||||||
|
the_file=os.path.basename(f)
|
||||||
|
|
||||||
|
if os.path.isfile(f):
|
||||||
|
if not os.path.exists(dest + os.sep + the_file ):
|
||||||
|
print("Copying: " + the_file + " ---> " + dest)
|
||||||
|
shutil.copy(f,dest);
|
||||||
|
else:
|
||||||
|
print("Skipping: " + the_file)
|
||||||
|
else:
|
||||||
|
if not os.path.exists(dest + os.sep + the_file ):
|
||||||
|
print("Copying folder: " + the_file + " ---> " + dest + os.sep + the_file )
|
||||||
|
shutil.copytree(f, dest +os.sep + the_file );
|
||||||
|
else:
|
||||||
|
print("Skipping folder: " + the_file)
|
||||||
|
|
||||||
|
def copy_files( files , dest ):
|
||||||
|
|
||||||
|
for f in files:
|
||||||
|
copy_file( f , dest )
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#for i in get_files( name ):
|
||||||
|
# print(i)
|
||||||
|
#copy_files( get_seqs( name ), dest )
|
||||||
|
#copy_files( get_files( name ), dest )
|
||||||
|
get_files( name)
|
||||||
Loading…
Reference in new issue