feat: improve status tracking in downloads
This commit is contained in:
parent
a0fef50248
commit
84077349c7
4 changed files with 27 additions and 5 deletions
|
|
@ -1,4 +1,4 @@
|
|||
# flake8: noqa: F401
|
||||
# flake8: noqa: F401, RUF100, W291, I001
|
||||
import sys
|
||||
from typing import Any
|
||||
|
||||
|
|
@ -49,6 +49,7 @@ class _ArchiveProxy:
|
|||
|
||||
class YTDLP(yt_dlp.YoutubeDL):
|
||||
_interrupted = False
|
||||
_registered = False
|
||||
|
||||
def __init__(self, params=None, auto_init=True):
|
||||
# Avoid yt-dlp preloading the archive file by stripping the param first
|
||||
|
|
@ -73,6 +74,15 @@ class YTDLP(yt_dlp.YoutubeDL):
|
|||
pass
|
||||
|
||||
self.archive = _ArchiveProxy(orig_file)
|
||||
if not YTDLP._registered:
|
||||
try:
|
||||
from app.yt_dlp_plugins.postprocessor.nfo_maker import NFOMakerPP
|
||||
from yt_dlp.postprocessor import postprocessors
|
||||
|
||||
postprocessors.value.update({"NFOMakerPP": NFOMakerPP})
|
||||
YTDLP._registered = True
|
||||
except Exception:
|
||||
pass
|
||||
|
||||
def _delete_downloaded_files(self, *args, **kwargs) -> None:
|
||||
if self._interrupted:
|
||||
|
|
|
|||
|
|
@ -66,9 +66,17 @@ class StatusTracker:
|
|||
|
||||
"""
|
||||
self.info.datetime = str(formatdate(time.time()))
|
||||
self.info.filename = safe_relative_path(filepath, Path(self.download_dir), self.temp_path)
|
||||
self.info.filename = safe_relative_path(filepath, Path(self.download_dir))
|
||||
self.final_update = True
|
||||
self.logger.debug(f"Final file name: '{filepath}'.")
|
||||
try:
|
||||
filepath.relative_to(self.download_dir)
|
||||
except ValueError:
|
||||
self.logger.warning(
|
||||
f"Final file '{filepath}' is outside of the intended download directory '{self.download_dir}'."
|
||||
)
|
||||
self.info.filename = None
|
||||
return
|
||||
|
||||
if filepath.is_file() and filepath.exists():
|
||||
try:
|
||||
|
|
|
|||
|
|
@ -120,6 +120,10 @@ class NFOMakerPP(PostProcessor):
|
|||
return "NFOMaker"
|
||||
|
||||
def run(self, info: dict | None = None) -> tuple[list, dict]:
|
||||
if "fail" == self.mode:
|
||||
msg = "Intentionally failing due to mode=fail."
|
||||
raise Exception(msg)
|
||||
|
||||
if not info:
|
||||
self.report_warning("No info provided to NFO Maker.")
|
||||
return [], {}
|
||||
|
|
|
|||
|
|
@ -121,7 +121,7 @@
|
|||
</td>
|
||||
<td>
|
||||
<div class="progress-bar is-unselectable">
|
||||
<div class="progress-percentage">{{ updateProgress(item) }}</div>
|
||||
<div class="progress-percentage" v-html="updateProgress(item)" />
|
||||
<div class="progress" :style="{ width: percentPipe(item.percent as number) + '%' }"></div>
|
||||
</div>
|
||||
</td>
|
||||
|
|
@ -247,7 +247,7 @@
|
|||
<div class="columns is-multiline is-mobile">
|
||||
<div class="column is-12">
|
||||
<div class="progress-bar is-unselectable">
|
||||
<div class="progress-percentage">{{ updateProgress(item) }}</div>
|
||||
<div class="progress-percentage" v-html="updateProgress(item)" />
|
||||
<div class="progress" :style="{ width: percentPipe(item.percent as number) + '%' }"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
@ -600,7 +600,7 @@ const updateProgress = (item: StoreItem): string => {
|
|||
|
||||
if ('postprocessing' === item.status) {
|
||||
if (item.postprocessor) {
|
||||
return `PP Running: ${item.postprocessor}`
|
||||
return `<i class="fa fa-cog fa-spin"></i> PP: ${item.postprocessor}`
|
||||
}
|
||||
return 'Post-processors are running.'
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue