From e2d4f9a60d8ed3bc9c0414714a38c5d77f0dccc9 Mon Sep 17 00:00:00 2001 From: Ville Rantanen Date: Thu, 12 Jan 2023 17:21:42 +0200 Subject: [PATCH] control parser verbosity --- .../ffmpegparser/ffmpegparser.py | 100 +++++++++++------- 1 file changed, 64 insertions(+), 36 deletions(-) diff --git a/py-packages/ffmpeg-parser/ffmpegparser/ffmpegparser.py b/py-packages/ffmpeg-parser/ffmpegparser/ffmpegparser.py index 05b598c..770aa95 100755 --- a/py-packages/ffmpeg-parser/ffmpegparser/ffmpegparser.py +++ b/py-packages/ffmpeg-parser/ffmpegparser/ffmpegparser.py @@ -8,7 +8,7 @@ import parse from ansi import cursor from datetime import datetime -__version__ = 1.1 +__version__ = 1.2 class Chopper: @@ -53,11 +53,20 @@ class Progress: self.input_size = "NA" self.outputs = [] self.output = "NA" + self.verbosity = os.getenv("PARSER_VERBOSITY", "").upper() + try: + + self.verbosity_level = ["NONE", "PROGRESS", "STATUS", "ALL"].index( + self.verbosity + ) + except ValueError: + self.verbosity_level = 3 def parse(self, line): if not self.parse_frame(line): - print(line.rstrip()) + if self.verbosity_level == 3: + print(line.rstrip()) self.parse_input(line) self.parse_output(line) self.parse_duration(line) @@ -166,35 +175,45 @@ class Progress: self.framedata["projected_size"] = "NA" try: - msg = """{cl}==== Q to exit =============== -{cl}Input: {input_file} -{cl}Output: {output_file} -{cl}Progress: {progress}% Elapsed: H{elapsed} -{cl}Finished in: H{left} -{cl}Frame: {frame} = {out_time} -{cl}Source duration: {duration} -{cl}Processing speed: FPS {fps} / {speed} -{cl}Bitrate: {bitrate} -{cl}File size: {total_size}Mb -> {projected_size}Mb (Input: {input_size}Mb) -{cl}{progress_bar}\r{up}""".format( - input_file=self.input, - input_size=self.input_size, - output_file=self.output, - progress=self.framedata["percent_done"], - progress_bar=self._progress_bar(self.framedata["percent_done"]), - elapsed=self._timestr(self.framedata["time_elapsed"]), - left=self._timestr(self.framedata["time_remaining"]), - duration=self._timestr(self.duration), - out_time=self._timestr(self.framedata["out_time_s"]), - frame=self.framedata.get("frame", "NA"), - fps=self.framedata.get("fps", "NA"), - bitrate=self.framedata["bitrate"], - speed=self.framedata["speed"], - total_size=self._mbstr(self.framedata["total_size"]), - projected_size=self._mbstr(self.framedata["projected_size"]), - up=cursor.up(10), - cl=cursor.erase_line(), - ) + msg = "" + if self.verbosity_level > 1: + msg = """{cl}==== Q to exit =============== + {cl}Input: {input_file} + {cl}Output: {output_file} + {cl}Progress: {progress}% Elapsed: H{elapsed} + {cl}Finished in: H{left} + {cl}Frame: {frame} = {out_time} + {cl}Source duration: {duration} + {cl}Processing speed: FPS {fps} / {speed} + {cl}Bitrate: {bitrate} + {cl}File size: {total_size}Mb -> {projected_size}Mb (Input: {input_size}Mb) + {cl}{progress_bar}\r{up}""".format( + input_file=self.input, + input_size=self.input_size, + output_file=self.output, + progress=self.framedata["percent_done"], + progress_bar=self._progress_bar(self.framedata["percent_done"]), + elapsed=self._timestr(self.framedata["time_elapsed"]), + left=self._timestr(self.framedata["time_remaining"]), + duration=self._timestr(self.duration), + out_time=self._timestr(self.framedata["out_time_s"]), + frame=self.framedata.get("frame", "NA"), + fps=self.framedata.get("fps", "NA"), + bitrate=self.framedata["bitrate"], + speed=self.framedata["speed"], + total_size=self._mbstr(self.framedata["total_size"]), + projected_size=self._mbstr(self.framedata["projected_size"]), + up=cursor.up(10), + cl=cursor.erase_line(), + ) + + if self.verbosity_level == 1: + msg = "{cl}{progress_bar} {progress}%\r".format( + progress_bar=self._progress_bar(self.framedata["percent_done"]), + progress=self.framedata["percent_done"], + up=cursor.up(1), + cl=cursor.erase_line(), + ) sys.stdout.write(msg) sys.stdout.flush() @@ -220,7 +239,7 @@ class Progress: def _mbstr(self, b): try: - return "{:.1f}".format((float(b) / (1024 ** 2))) + return "{:.1f}".format((float(b) / (1024**2))) except Exception: return b @@ -253,14 +272,23 @@ def ask_for_overwrite(commands, path): return commands +def help_exit(): + print( + """This command passes all arguments to FFMPEG, and parses output to +readable format with progress. Change verbosity with env PARSER_VERBOSITY. +Values are NONE,PROGRESS,STATUS,ALL.""" + ) + sys.exit(0) + + def main(): commands = sys.argv[1:] if len(commands) == 1: if commands[0] == "-h": - print( - "This command passes all arguments to FFMPEG, and parses output to readable format with progress" - ) - sys.exit(0) + help_exit() + if len(commands) == 0: + help_exit() + try: has_overwrite = parse_overwrite(commands) if not has_overwrite: