import re import subprocess import sys from pathlib import Path import os import xml.etree.ElementTree as ET output_folder_name = "/out_sub_audio/" regex_subtitle = re.compile("Stream #0:\d+(\(\w*\))?: Subtitle:.*") regex_audio = re.compile("Stream #0:\d(\(\w*\))?: Audio:.*") nr_files = 0 files_processed = [] #droppedFile = sys.argv[1] #droppedName = Path(droppedFile).name #originalfiles = sys.orig_argv[2:] audio_list = [] sub_list = [] # To fix I need to create symlinks to files with long paths and use the links instead. And then remove said symlinks once #droppedFile= ['X:\\test\\longpathtest\\longerpathlongerpathlongerpathlongerpathlongerpathlongerpathlongerpath\\longpathlongpathlongpathlongpathlongpathlongpathlongpathlongpathlongpathlongpathlongpathlongpathlongpathlongpath\\fourteen\\[Kira-Fansub]_Choujuushin Gravion_Episode 06_(BD 1280x960 h264 JP AAC EN AAC) [E7D92968].mkv', '', ' X:\\test\\longpathtest\\longerpathlongerpathlongerpathlongerpathlongerpathlongerpathlongerpath\\longpathlongpathlongpathlongpathlongpathlongpathlongpathlongpathlongpathlongpathlongpathlongpathlongpathlongpath\\fourteen\\[Kira-Fansub]_Choujuushin Gravion_Episode 09_(BD 1280x960 h264 JP AAC EN AAC) [A2727604].mkv'] originalfiles = ['E:\\Projects\\python\\ffmpeg_work_folder\\01 - The Great Tower of Druaga (Inner).mkv'] joined = (' '.join(originalfiles)) re.sub (' +', ' ', joined) listed = re.split(r'(.+?mkv)', joined) listed = list(filter(None, listed)) listed = [i.lstrip() for i in listed] #get path of script location and remove the tail head_tail = os.path.split(sys.argv[0]) output_path = head_tail[0] #check if output folder exists, otherwise create it isExist = os.path.exists(output_path+output_folder_name) if not isExist: os.makedirs(output_path+output_folder_name) #droppedFile = "test.mkv" for i, file in enumerate(listed): arg_list = '.\\ffprobe.exe -i "{file}" -show_entries format:streams -of xml'.format(file=file) print(arg_list) cmd = subprocess.Popen(["powershell.exe", arg_list], stdout=subprocess.PIPE, stderr=subprocess.PIPE, encoding='UTF-8') subprocess_err = cmd.communicate()[0] print("file", i+1,":", Path(file).name) print(subprocess_err) root = ET.fromstring(subprocess_err) #print(root) streams = root[1].findall("stream") print(streams) for stream in streams: if stream.get("codec_type") == "audio": index = stream.get("index") print("index:", stream.get("index")) print("channels:",stream.get("channels")) print("printing index variable:" ,index ) for tag in stream.findall("tag"): if tag.get("key") == "title": print("name:", tag.get("value")) if tag.get("key") == "BPS": print("BPS:",tag.get("value"))