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"])