feat(ffmpeg handling): add return value for cmd_ function if files need to be moved

This commit is contained in:
Lucas Vivo committed 2026-10-26 10:22:06 +01:00
1 parent 6d229c59f7
commit d43fcd530c
1 file changed
+34 -30
+34 -30
View File
@@ -470,7 +470,7 @@ def cmd_convert_av(args):
# Prevents FFmpeg from trying to guess/add extra default streams # Prevents FFmpeg from trying to guess/add extra default streams
map_metadata=0, map_metadata=0,
) )
return out return True, out
def cmd_convert_audio(args): def cmd_convert_audio(args):
@@ -493,7 +493,7 @@ def cmd_convert_audio(args):
map="0", map="0",
map_metadata=0, map_metadata=0,
) )
return out return True, out
def cmd_convert_video(args): def cmd_convert_video(args):
@@ -513,7 +513,7 @@ def cmd_convert_video(args):
map="0", map="0",
map_metadata=0, map_metadata=0,
) )
return out return True, out
def cmd_remove_subs(args): def cmd_remove_subs(args):
@@ -561,7 +561,7 @@ def cmd_remove_subs(args):
logger.debug("%s", " ".join(cmd)) logger.debug("%s", " ".join(cmd))
if args.dry_run: if args.dry_run:
logger.debug(f"Dry run: {' '.join(cmd)}") logger.debug(f"Dry run: {' '.join(cmd)}")
return "nooutputneeded" return True, "nooutputneeded"
try: try:
subprocess.run( subprocess.run(
cmd, cmd,
@@ -575,7 +575,7 @@ def cmd_remove_subs(args):
logger.error("STDOUT:\n%s", e.stdout) logger.error("STDOUT:\n%s", e.stdout)
logger.error("STDERR:\n%s", e.stderr) logger.error("STDERR:\n%s", e.stderr)
raise raise
return "nooutputneeded" return True, "nooutputneeded"
def cmd_remove_audio_track(args): def cmd_remove_audio_track(args):
@@ -594,7 +594,7 @@ def cmd_remove_audio_track(args):
] ]
if not remaining_audio: if not remaining_audio:
logger.error("No audiotracks remaining") logger.error("No audiotracks remaining")
return False return False, "nooutputneeded"
remaining_audio = translate_audio_tracks(remaining_audio) remaining_audio = translate_audio_tracks(remaining_audio)
removed_was_default = any( removed_was_default = any(
@@ -639,7 +639,7 @@ def cmd_remove_audio_track(args):
logger.trace(" ".join(cmd)) logger.trace(" ".join(cmd))
if args.dry_run: if args.dry_run:
logger.debug(f"Dry run: {' '.join(cmd)}") logger.debug(f"Dry run: {' '.join(cmd)}")
return "nooutputneeded" return True, "nooutputneeded"
try: try:
result = subprocess.run( result = subprocess.run(
cmd, cmd,
@@ -649,7 +649,7 @@ def cmd_remove_audio_track(args):
) )
logger.debug("FFmpeg subprocess successful") logger.debug("FFmpeg subprocess successful")
logger.trace(result.stdout) logger.trace(result.stdout)
return "nooutputneeded" return True, "nooutputneeded"
except subprocess.CalledProcessError as e: except subprocess.CalledProcessError as e:
logger.error( logger.error(
@@ -683,7 +683,7 @@ def cmd_extract_audio_track(args):
out = ffmpeg.output( out = ffmpeg.output(
extracted_audio, output_audio, acodec="libmp3lame", audio_bitrate="192k" extracted_audio, output_audio, acodec="libmp3lame", audio_bitrate="192k"
) )
return out return True, out
def cmd_downsize(args): def cmd_downsize(args):
@@ -717,7 +717,7 @@ def cmd_downsize(args):
acodec="copy", acodec="copy",
scodec=get_scodec(args.output), scodec=get_scodec(args.output),
) )
return out return True, out
def cmd_filter_audio(args): def cmd_filter_audio(args):
@@ -834,7 +834,7 @@ def cmd_filter_audio(args):
scodec=get_scodec(args.output), scodec=get_scodec(args.output),
).global_args(*metadata_args) ).global_args(*metadata_args)
return out return True, out
def cmd_cut_segment(args): def cmd_cut_segment(args):
@@ -866,7 +866,7 @@ def cmd_cut_segment(args):
scodec=get_scodec(args.output), scodec=get_scodec(args.output),
) )
logger.trace(f"Command: {out}") logger.trace(f"Command: {out}")
return out return True, out
def cmd_set_primary_audio(args): def cmd_set_primary_audio(args):
@@ -925,7 +925,7 @@ def cmd_set_primary_audio(args):
**out_kwargs, **out_kwargs,
) )
return out return True, out
def cmd_show_metadata(args, show_metadata=False): def cmd_show_metadata(args, show_metadata=False):
@@ -951,7 +951,7 @@ def cmd_show_metadata(args, show_metadata=False):
# else: # else:
# for k, v in tags.items(): # for k, v in tags.items():
# logger.info(f"{k}: {v}") # logger.info(f"{k}: {v}")
return format_tags return False, format_tags
def cmd_set_metadata(args): def cmd_set_metadata(args):
@@ -971,7 +971,7 @@ def cmd_set_metadata(args):
cmd = ["kid3-cli", "-c", f"set {args.key} '{args.value}'", args.input] cmd = ["kid3-cli", "-c", f"set {args.key} '{args.value}'", args.input]
if args.dry_run: if args.dry_run:
logger.debug(f"Dry run: {' '.join(cmd)}") logger.debug(f"Dry run: {' '.join(cmd)}")
return "nooutputneeded" return True, "nooutputneeded"
result = subprocess.run( result = subprocess.run(
cmd, cmd,
capture_output=True, capture_output=True,
@@ -979,7 +979,7 @@ def cmd_set_metadata(args):
check=True, check=True,
) )
logger.trace(result.stdout) logger.trace(result.stdout)
return None # Kid3 writes in-place return False, "nooutputneeded" # Kid3 writes in-place
# ───────────────────────────────────────────── # ─────────────────────────────────────────────
# Default → ffmpeg (copy stream) # Default → ffmpeg (copy stream)
@@ -989,7 +989,7 @@ def cmd_set_metadata(args):
out = ffmpeg.output( out = ffmpeg.output(
inp, str(args.output), c="copy", metadata=f"{args.key}={args.value}" inp, str(args.output), c="copy", metadata=f"{args.key}={args.value}"
) )
return out return True, out
def cmd_apply_chapters(args): def cmd_apply_chapters(args):
@@ -1067,7 +1067,7 @@ def cmd_apply_chapters(args):
] ]
if args.dry_run: if args.dry_run:
logger.debug(f"Dry run: {' '.join(cmd)}") logger.debug(f"Dry run: {' '.join(cmd)}")
return "nooutputneeded" return True, "nooutputneeded"
result = subprocess.run( result = subprocess.run(
cmd, cmd,
capture_output=True, capture_output=True,
@@ -1091,11 +1091,11 @@ def cmd_apply_chapters(args):
audio["tracknumber"] = str(args.file_counter + 1) audio["tracknumber"] = str(args.file_counter + 1)
if args.dry_run: if args.dry_run:
logger.debug("Dry run") logger.debug("Dry run")
return "nooutputneeded" return True, "nooutputneeded"
audio.save() audio.save()
safe_rename(filename, new_path) safe_rename(filename, new_path)
return "nooutputneeded" return True, "nooutputneeded"
def cmd_remove_russian_from_db(args_in): def cmd_remove_russian_from_db(args_in):
@@ -1109,7 +1109,7 @@ def cmd_remove_russian_from_db(args_in):
audio_tracks = translate_audio_tracks(get_audio_tracks(file)) audio_tracks = translate_audio_tracks(get_audio_tracks(file))
except ValueError as e: except ValueError as e:
logger.warning("%s", e) logger.warning("%s", e)
return "nooutputneeded" return False, "nooutputneeded"
logger.trace(f"File: {file.name}: Audio tracks: {audio_tracks}") logger.trace(f"File: {file.name}: Audio tracks: {audio_tracks}")
remove_tracks = [] remove_tracks = []
@@ -1121,7 +1121,10 @@ def cmd_remove_russian_from_db(args_in):
args = args_in args = args_in
args.audio_index = number args.audio_index = number
cmd_remove_audio_track(args) cmd_remove_audio_track(args)
return "nooutputneeded" if remove_tracks:
return True, "nooutputneeded"
else:
return False, "nooutputneeded"
def cmd_test(args): def cmd_test(args):
@@ -2211,23 +2214,24 @@ def main():
args.input = Path(file) args.input = Path(file)
if args.override: if args.override:
out_path = file.with_name(f"{file.stem}_override{file.suffix}") out_path = file.with_name(f"{file.stem}_override{file.suffix}")
files_move_from.append(out_path)
files_move_to.append(file)
else: else:
out_path = file.with_name( out_path = file.with_name(
f"{file.stem}_{args.command}{file.suffix}" f"{file.stem}_{args.command}{file.suffix}"
) )
args.output = out_path args.output = out_path
args.file_counter = counter args.file_counter = counter
out = args.func(args) return_value, output_str = args.func(args)
if out != "nooutputneeded": if output_str != "nooutputneeded":
outputs.append(out) outputs.append(output_str)
if args.override and return_value:
files_move_from.append(out_path)
files_move_to.append(file)
counter += 1 counter += 1
# ---- SINGLE FILE ---- # ---- SINGLE FILE ----
elif input_path.is_file(): elif input_path.is_file():
out = args.func(args) return_value,output_str = args.func(args)
if out != "nooutputneeded": if output_str != "nooutputneeded":
outputs.append(out) outputs.append(output_str)
else: else:
raise ValueError(f"Invalid input path: {args.input}") raise ValueError(f"Invalid input path: {args.input}")