File indexing completed on 2024-05-12 04:52:38

0001 #!/usr/bin/env python3
0002 
0003 import os
0004 import ntpath
0005 import subprocess
0006 import sys
0007 import xml.dom.minidom
0008 
0009 # assign directory
0010 directory = "projects"
0011 
0012 # iterate over files in
0013 # that directory
0014 counter = 1
0015 tmpFolder = os.path.join(".", "tmp")
0016 if not os.path.isdir(tmpFolder):
0017     os.mkdir(tmpFolder)
0018 outFolder = os.path.join(".", "renders")
0019 
0020 if len(sys.argv) > 1:
0021     binaryFile = sys.argv[1]
0022 else:
0023     binaryFile = "kdenlive"
0024 # ensure the renders folder exists
0025 if not os.path.isdir(outFolder):
0026     os.mkdir(outFolder)
0027 elif len(os.listdir(outFolder)) > 0 :
0028     # If renders folder is not empty, ask if ok the clear it
0029     answer = input("Render folder is not empty, files will be overwritten. Continue [Y/n] ?")
0030     if answer.lower() in ["y","yes",""]:
0031         # Ok, proceed
0032         print("Proceeding...")
0033     else:
0034         # Abort
0035         sys.exit()
0036 
0037 for filename in os.listdir(directory):
0038     projectFile = os.path.join(directory, filename)
0039     # checking if it is a file
0040     if os.path.isfile(projectFile):
0041         document = xml.dom.minidom.parse(projectFile)
0042         pl = document.getElementsByTagName("playlist")
0043         renderProfile = ''
0044         renderUrl = ''
0045         for node in pl:
0046             pl_id=node.getAttribute('id')
0047             if pl_id == "main_bin":
0048                 props=node.getElementsByTagName('property')
0049                 for prop in props:
0050                     prop_name=prop.getAttribute('name')
0051                     if prop_name == "kdenlive:docproperties.renderprofile":
0052                         renderProfile = prop.firstChild.data
0053                     if prop_name == "kdenlive:docproperties.renderurl":
0054                         renderUrl = prop.firstChild.data
0055                 break
0056 
0057         print('GOT PROFILE INFO:', renderProfile, " = ", renderUrl)
0058         fname = ntpath.basename(projectFile)
0059         # ensure destination render does not exists
0060         if renderUrl:
0061             fname, file_extension = os.path.splitext(renderUrl)
0062             outName = os.path.splitext(filename)[0] + file_extension
0063         else:
0064             outName = os.path.splitext(filename)[0] + ".mp4"
0065         outputFile = os.path.join("renders", outName)
0066         if os.path.isfile(outputFile):
0067             # delete previous render
0068             print("Clearing previous render: " + outputFile)
0069             os.remove(outputFile)
0070         print("Processing project: " + fname + "...")
0071         if renderProfile:
0072             subprocess.call([binaryFile, "--render", projectFile, '--render-preset', renderProfile, outputFile])
0073         else:
0074             subprocess.call([binaryFile, "--render", projectFile, outputFile])
0075         print("Processing project: " + fname + "... DONE")
0076 
0077 subprocess.call(["./compare-renders.py"])