feat(ffmpeg handling): add return value for cmd_ function if files need to be moved
This commit is contained in:
1 parent
6d229c59f7
commit
d43fcd530c
1 file changed
+34
-30
@@ -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}")
|
||||||
|
|
||||||
|
|||||||
Reference in new issue
Block a user