control parser verbosity

This commit is contained in:
Ville Rantanen
2023-01-12 17:21:42 +02:00
parent 6afa9aa6db
commit e2d4f9a60d

View File

@@ -8,7 +8,7 @@ import parse
from ansi import cursor from ansi import cursor
from datetime import datetime from datetime import datetime
__version__ = 1.1 __version__ = 1.2
class Chopper: class Chopper:
@@ -53,11 +53,20 @@ class Progress:
self.input_size = "NA" self.input_size = "NA"
self.outputs = [] self.outputs = []
self.output = "NA" 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): def parse(self, line):
if not self.parse_frame(line): if not self.parse_frame(line):
print(line.rstrip()) if self.verbosity_level == 3:
print(line.rstrip())
self.parse_input(line) self.parse_input(line)
self.parse_output(line) self.parse_output(line)
self.parse_duration(line) self.parse_duration(line)
@@ -166,35 +175,45 @@ class Progress:
self.framedata["projected_size"] = "NA" self.framedata["projected_size"] = "NA"
try: try:
msg = """{cl}==== Q to exit =============== msg = ""
{cl}Input: {input_file} if self.verbosity_level > 1:
{cl}Output: {output_file} msg = """{cl}==== Q to exit ===============
{cl}Progress: {progress}% Elapsed: H{elapsed} {cl}Input: {input_file}
{cl}Finished in: H{left} {cl}Output: {output_file}
{cl}Frame: {frame} = {out_time} {cl}Progress: {progress}% Elapsed: H{elapsed}
{cl}Source duration: {duration} {cl}Finished in: H{left}
{cl}Processing speed: FPS {fps} / {speed} {cl}Frame: {frame} = {out_time}
{cl}Bitrate: {bitrate} {cl}Source duration: {duration}
{cl}File size: {total_size}Mb -> {projected_size}Mb (Input: {input_size}Mb) {cl}Processing speed: FPS {fps} / {speed}
{cl}{progress_bar}\r{up}""".format( {cl}Bitrate: {bitrate}
input_file=self.input, {cl}File size: {total_size}Mb -> {projected_size}Mb (Input: {input_size}Mb)
input_size=self.input_size, {cl}{progress_bar}\r{up}""".format(
output_file=self.output, input_file=self.input,
progress=self.framedata["percent_done"], input_size=self.input_size,
progress_bar=self._progress_bar(self.framedata["percent_done"]), output_file=self.output,
elapsed=self._timestr(self.framedata["time_elapsed"]), progress=self.framedata["percent_done"],
left=self._timestr(self.framedata["time_remaining"]), progress_bar=self._progress_bar(self.framedata["percent_done"]),
duration=self._timestr(self.duration), elapsed=self._timestr(self.framedata["time_elapsed"]),
out_time=self._timestr(self.framedata["out_time_s"]), left=self._timestr(self.framedata["time_remaining"]),
frame=self.framedata.get("frame", "NA"), duration=self._timestr(self.duration),
fps=self.framedata.get("fps", "NA"), out_time=self._timestr(self.framedata["out_time_s"]),
bitrate=self.framedata["bitrate"], frame=self.framedata.get("frame", "NA"),
speed=self.framedata["speed"], fps=self.framedata.get("fps", "NA"),
total_size=self._mbstr(self.framedata["total_size"]), bitrate=self.framedata["bitrate"],
projected_size=self._mbstr(self.framedata["projected_size"]), speed=self.framedata["speed"],
up=cursor.up(10), total_size=self._mbstr(self.framedata["total_size"]),
cl=cursor.erase_line(), 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.write(msg)
sys.stdout.flush() sys.stdout.flush()
@@ -220,7 +239,7 @@ class Progress:
def _mbstr(self, b): def _mbstr(self, b):
try: try:
return "{:.1f}".format((float(b) / (1024 ** 2))) return "{:.1f}".format((float(b) / (1024**2)))
except Exception: except Exception:
return b return b
@@ -253,14 +272,23 @@ def ask_for_overwrite(commands, path):
return commands 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(): def main():
commands = sys.argv[1:] commands = sys.argv[1:]
if len(commands) == 1: if len(commands) == 1:
if commands[0] == "-h": if commands[0] == "-h":
print( help_exit()
"This command passes all arguments to FFMPEG, and parses output to readable format with progress" if len(commands) == 0:
) help_exit()
sys.exit(0)
try: try:
has_overwrite = parse_overwrite(commands) has_overwrite = parse_overwrite(commands)
if not has_overwrite: if not has_overwrite: