diff --git a/app/library/Download.py b/app/library/Download.py index d36cd49c..7f794e89 100644 --- a/app/library/Download.py +++ b/app/library/Download.py @@ -100,6 +100,8 @@ class Download: def _postprocessor_hook(self, data: dict): if "MoveFiles" != data.get("postprocessor") or "finished" != data.get("status"): + dataDict = {k: v for k, v in data.items() if k in self._ytdlp_fields} + self.status_queue.put({"id": self.id, **dataDict, "status": "postprocessing"}) return if self.debug: @@ -117,6 +119,7 @@ class Download: params = ( YTDLPOpts.get_instance() .preset(self.preset) + .add({"break_on_existing": True}) .add(self.ytdl_opts, from_user=True) .add( { @@ -130,7 +133,6 @@ class Download: "chapter": self.template_chapter, }, "noprogress": True, - "break_on_existing": True, "ignoreerrors": False, }, from_user=False, diff --git a/app/library/DownloadQueue.py b/app/library/DownloadQueue.py index 757b22c1..c58d7233 100644 --- a/app/library/DownloadQueue.py +++ b/app/library/DownloadQueue.py @@ -1,4 +1,5 @@ import asyncio +import functools import json import logging import os @@ -422,7 +423,15 @@ class DownloadQueue(metaclass=Singleton): entry = await asyncio.wait_for( fut=asyncio.get_running_loop().run_in_executor( - None, extract_info, yt_conf, url, bool(self.config.ytdl_debug) + None, + functools.partial( + extract_info, + config=yt_conf, + url=url, + debug=bool(self.config.ytdl_debug), + no_archive=False, + follow_redirect=True, + ), ), timeout=self.config.extract_info_timeout, ) diff --git a/ui/components/Queue.vue b/ui/components/Queue.vue index cff11603..e35d2bea 100644 --- a/ui/components/Queue.vue +++ b/ui/components/Queue.vue @@ -191,6 +191,10 @@ const setIcon = item => { return 'fa-solid fa-circle-check'; } + if ('postprocessing' === item.status) { + return 'fa-solid fa-cog fa-spin'; + } + if (null === item.status && true === config.paused) { return 'fa-solid fa-pause-circle'; } @@ -239,6 +243,10 @@ const updateProgress = (item) => { return 'Paused'; } + if ('postprocessing' === item.status) { + return 'Post-processors are running.'; + } + if ('preparing' === item.status) { return 'Preparing'; }