Skip to content

Commit

Permalink
fix(dl): Log output from mkvmerge on failure
Browse files Browse the repository at this point in the history
  • Loading branch information
rlaphoenix committed May 15, 2024
1 parent f08402d commit 2e697d9
Show file tree
Hide file tree
Showing 2 changed files with 7 additions and 3 deletions.
4 changes: 3 additions & 1 deletion devine/commands/dl.py
Original file line number Diff line number Diff line change
Expand Up @@ -701,15 +701,17 @@ def result(
):
for task_id, task_tracks in multiplex_tasks:
progress.start_task(task_id) # TODO: Needed?
muxed_path, return_code = task_tracks.mux(
muxed_path, return_code, output = task_tracks.mux(
str(title),
progress=partial(progress.update, task_id=task_id),
delete=False
)
muxed_paths.append(muxed_path)
if return_code == 1:
self.log.warning(output)
self.log.warning("mkvmerge had at least one warning, will continue anyway...")
elif return_code >= 2:
self.log.warning(output)
self.log.error(f"Failed to Mux video to Matroska file ({return_code})")
sys.exit(1)
for video_track in task_tracks.videos:
Expand Down
6 changes: 4 additions & 2 deletions devine/core/tracks/tracks.py
Original file line number Diff line number Diff line change
Expand Up @@ -316,7 +316,7 @@ def by_language(tracks: list[TrackT], languages: list[str], per_language: int =
][:per_language or None])
return selected

def mux(self, title: str, delete: bool = True, progress: Optional[partial] = None) -> tuple[Path, int]:
def mux(self, title: str, delete: bool = True, progress: Optional[partial] = None) -> tuple[Path, int, str]:
"""
Multiplex all the Tracks into a Matroska Container file.
Expand Down Expand Up @@ -410,15 +410,17 @@ def mux(self, title: str, delete: bool = True, progress: Optional[partial] = Non

# let potential failures go to caller, caller should handle
try:
output = ""
p = subprocess.Popen([
*cl,
"--output", str(output_path),
"--gui-mode"
], text=True, stdout=subprocess.PIPE)
for line in iter(p.stdout.readline, ""):
output += line
if "progress" in line:
progress(total=100, completed=int(line.strip()[14:-1]))
return output_path, p.wait()
return output_path, p.wait(), output
finally:
if chapters_path:
# regardless of delete param, we delete as it's a file we made during muxing
Expand Down

0 comments on commit 2e697d9

Please sign in to comment.