import re import subprocess import sys from pathlib import Path import os regex_subtitle = re.compile("Stream #0:\d(\(\w*\))?: Subtitle:.*") regex_audio = re.compile("Stream #0:\d(\(\w*\))?: Audio:.*") droppedFile = sys.argv[1] droppedName = Path(droppedFile).name skipto = " -ss " #droppedFile = "test.mkv" del sys.argv[0] for i, each in enumerate(sys.argv): arg_list = 'ffprobe.exe -i "{each}"'.format(each=each) cmd = subprocess.Popen(arg_list, stdout=subprocess.PIPE, stderr=subprocess.PIPE, encoding='UTF-8') subprocess_err = cmd.communicate()[1] print("file", i+1) for r, match in enumerate(regex_audio.finditer(subprocess_err)): print("Audio Track", r,": ", match.group(0)) for r, match in enumerate(regex_subtitle.finditer(subprocess_err)): print("Subtitle Track", r,": ", match.group(0)) print('\n') x = (int(x) for x in input ("Enter audio tracks to keep: ").split()) audio_track = "".join(" -map 0:a:{}".format(y) for y in x) z = (int(z) for z in input ("Enter subtitle tracks to keep: ").split()) subtitle_track = "".join(" -map 0:s:{}".format(y) for y in z) for each in sys.argv: path = each basename = os.path.basename(path) arg_list = 'ffmpeg.exe -i "{each}" -map 0:v {audio_track} {subtitle_track} -c copy "E:/Projects/ffmpeg_tests/audio_tracks/out/{basename}"'.format(each=each, audio_track=audio_track, subtitle_track=subtitle_track, basename=basename) print(arg_list) subprocess.run(arg_list) input("press enter to exit")