def batch_mux_files(mkv_list_1, mkv_list_2, settings_1, settings_2, output_directory): if len(mkv_list_1) == len(mkv_list_2): for item_num in range(0, len(mkv_list_1)): mkv = MKVfile() # Add tracks from source 1 mkv_file_1 = MKVfile(mkv_list_1[item_num]) track_list_1 = mkv_file_1.get_track() for track_number in settings_1: mkv.add_track(track_list_1[track_number]) mkv_file_2 = MKVfile(mkv_list_2[item_num]) track_list_2 = mkv_file_2.get_track() for track_number in settings_2: mkv.add_track(track_list_2[track_number]) output_name = mkv_list_1[item_num].split("/")[-1] logger.debug("Output directory is: " + output_directory + "/" + output_name) mkv.mux(output_directory + "/" + output_name) else: logger.error("Source 1 and Source 2 directory have different numbers of files. Unable to batch mux.") pass
def extract_subs(fn): mkv = MKVFile(fn) tracks = mkv.get_track() for track in tracks: if track.track_type == 'subtitles': ext = genExt(track._track_codec) lang = track._language id = str(track._track_id) subprocess.call([ 'mkvextract', 'tracks', fn, id + ':' + lang + '_' + id + '.' + ext ])
def extract_audio(fn): mkv = MKVFile(fn) tracks = mkv.get_track() for track in tracks: if track.track_type == 'audio': ext = track._track_codec lang = language_mapping[track._language] id = str(track._track_id) subprocess.call( ['mkvextract', 'tracks', fn, id + ':' + lang + '.' + ext]) flacs = [] for file in glob.glob("*.FLAC"): flacs.append(file) if len(flacs) > 0: convert_menu = TerminalMenu( ["Yes", "No"], title="Do you want to convert every FLAC to Opus?") convert_choice = convert_menu.show() if convert_choice == 0: for f in flacs: br_menu = TerminalMenu( ["Stereo", "5.1", "7.1"], title="Whats the format of the file? => {0}".format(f)) br_choice = br_menu.show() if br_choice == 0: br = "192K" elif br_choice == 1: br = "384K" elif br_choice == 2: br = "512K" else: br = "192K" fn_base = f.split(".")[0] out_audio = fn_base + ".Opus" subprocess.call([ "ffmpeg", "-hide_banner", "-i", f, "-c:a", "libopus", "-b:a", br, "-vbr", "on", out_audio ]) time.sleep(1) os.remove(f)
def get_all_track_information(mkv_file: MKVfile): track_list = mkv_file.get_track() return track_list
def process_file(file_path : str): mkv_file = MKVfile(file_path) track_list = mkv_file.get_track() return track_list