From 19d63f1eb907c5a3cf32d69394275699d2e13aab Mon Sep 17 00:00:00 2001 From: iwconfig Date: Thu, 2 Jan 2020 20:53:23 +0100 Subject: [PATCH] Added some boolean flags to the postprocess * replaced `--remux` with `--no-remux` * added `--no-merge` * added `--no-postprocess` * added `--keep-original` This should be sufficient to consider issue #1194 fixed. --- lib/svtplay_dl/postprocess/__init__.py | 10 ++++++++++ lib/svtplay_dl/utils/getmedia.py | 25 ++++++++++++++++++------- lib/svtplay_dl/utils/parser.py | 25 ++++++++++++++++++++++--- 3 files changed, 50 insertions(+), 10 deletions(-) diff --git a/lib/svtplay_dl/postprocess/__init__.py b/lib/svtplay_dl/postprocess/__init__.py index cc369ba..ec89eeb 100644 --- a/lib/svtplay_dl/postprocess/__init__.py +++ b/lib/svtplay_dl/postprocess/__init__.py @@ -83,6 +83,11 @@ class postprocess: if returncode != 0: return + if self.config.get("keep_original") is True: + logging.info("Muxing done, keeping original file(s).") + os.rename(tempfile, new_name) + return + if self.config.get("merge_subtitle") and not self.config.get("subtitle"): logging.info("Muxing done, removing the old files.") if self.subfixes and len(self.subfixes) >= 2: @@ -166,6 +171,11 @@ class postprocess: if returncode != 0: return + if self.config.get("keep_original") is True: + logging.info("Merging done, keeping original files.") + os.rename(tempfile, orig_filename) + return + logging.info("Merging done, removing old files.") if self.config.get("only_video") or not self.config.get("only_audio"): os.remove(orig_filename) diff --git a/lib/svtplay_dl/utils/getmedia.py b/lib/svtplay_dl/utils/getmedia.py index 6ae73b2..341d239 100644 --- a/lib/svtplay_dl/utils/getmedia.py +++ b/lib/svtplay_dl/utils/getmedia.py @@ -208,12 +208,23 @@ def get_one_media(stream): if fstream.config.get("thumbnail") and hasattr(stream, "get_thumbnail"): stream.get_thumbnail(stream.config) - post = postprocess(fstream, fstream.config, subfixes) - if fstream.audio and not post.detect and fstream.finished: - logging.warning("Cant find ffmpeg/avconv. audio and video is in seperate files. if you dont want this use -P hls") - elif fstream.audio and post.detect: - post.merge() - elif fstream.name == "hls" or fstream.config.get("remux"): - post.remux() + if fstream.config.get("no_postprocess") is True or all(fstream.config.get(x) for x in ["no_remux", "no_merge"]) is True: + logging.info("All done. Not postprocessing files, leaving them completely untouched.") + + if fstream.config.get("no_postprocess") is False: + post = postprocess(fstream, fstream.config, subfixes) + if fstream.audio and not post.detect and fstream.finished: + logging.warning("Can't find ffmpeg/avconv. audio and video is in seperate files. if you dont want this use -P hls or hds") + + if fstream.audio and post.detect and fstream.config.get("no_merge") is False: + post.merge() + elif fstream.name == "hls" and post.detect and fstream.config.get("no_remux") is False: + if fstream.config.get("no_merge") is True: + logging.warning("Can't remux HLS streams without merging. Use --no-postprocess to leave content completely untouched.") + post.merge() + post.remux() + else: + logging.info("All done. Not postprocessing files, leaving them completely untouched.") + if fstream.config.get("silent_semi") and fstream.finished: logging.log(25, "Download of %s was completed" % fstream.options.output) diff --git a/lib/svtplay_dl/utils/parser.py b/lib/svtplay_dl/utils/parser.py index 117f861..468ff87 100644 --- a/lib/svtplay_dl/utils/parser.py +++ b/lib/svtplay_dl/utils/parser.py @@ -124,7 +124,6 @@ def gen_parser(version="unknown"): metavar="cookie1=value;cookie2=value2", help="A cookies to add to each HTTP request.", ) - general.add_argument("--remux", dest="remux", default=False, action="store_true", help="Remux from one container to mp4 using ffmpeg or avconv") general.add_argument( "--exclude", dest="exclude", @@ -267,6 +266,20 @@ def gen_parser(version="unknown"): cmorep.add_argument("--cmore-operatorlist", dest="cmoreoperatorlist", default=False, action="store_true", help="show operatorlist for cmore") cmorep.add_argument("--cmore-operator", dest="cmoreoperator", default=None, metavar="operator") + postprocessing = parser.add_argument_group("Post-processing") + postprocessing.add_argument("--no-remux", dest="no_remux", default=False, action="store_true", help="Do not automatically remux to mp4") + postprocessing.add_argument( + "--no-merge", + dest="no_merge", + default=False, + action="store_true", + help="Do not automatically merge video, audio and possibly also subtitle(s) together", + ) + postprocessing.add_argument("--no-postprocess", dest="no_postprocess", default=False, action="store_true", help="Do not postprocess anything") + postprocessing.add_argument( + "--keep-original", dest="keep_original", default=False, action="store_true", help="Do postprocessing while also keeping original files" + ) + parser.add_argument("urls", nargs="*") return parser @@ -321,7 +334,10 @@ def setup_defaults(): options.set("audio_language", None) options.set("audio_role", None) options.set("stream_prio", None) - options.set("remux", False) + options.set("no_remux", False) + options.set("no_merge", False) + options.set("no_postprocess", False) + options.set("keep_original", False) options.set("silent_semi", False) options.set("proxy", None) options.set("include_clips", False) @@ -369,7 +385,10 @@ def parsertoconfig(config, parser): config.set("audio_role", parser.audio_role) config.set("audio_language", parser.audio_language) config.set("stream_prio", parser.stream_prio) - config.set("remux", parser.remux) + config.set("no_remux", parser.no_remux) + config.set("no_merge", parser.no_merge) + config.set("no_postprocess", parser.no_postprocess) + config.set("keep_original", parser.keep_original) config.set("get_all_subtitles", parser.get_all_subtitles) config.set("get_raw_subtitles", parser.get_raw_subtitles) config.set("convert_subtitle_colors", parser.convert_subtitle_colors)