diff --git a/.vscode/settings.json b/.vscode/settings.json index e407602f..d8d4d134 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -27,6 +27,7 @@ "libcurl", "libx", "matroska", + "mkvtoolsnix", "mpegts", "msvideo", "muxdelay", diff --git a/README.md b/README.md index cf8ebd32..efde86ba 100644 --- a/README.md +++ b/README.md @@ -9,8 +9,8 @@ YTPTube started as a fork of [meTube](https://github.com/alexta69/metube), Since # YTPTube Features. * Multi-downloads support. * Handle live streams. -* Schedule Channels or Playlists to be downloaded automatically at a specific time. -* Send notification to targets based on specified events. +* Schedule channels or playlists to be downloaded automatically at a specified time. +* Send notification to targets based on selected events. * Support per link `yt-dlp JSON config or cli options`, `cookies` & `output format`. * Queue multiple URLs separated by comma. * A built in video player that can play any video file regardless of the format. **With support for sidecar external subtitles**. diff --git a/app/library/Download.py b/app/library/Download.py index 4e2ca691..14186fe7 100644 --- a/app/library/Download.py +++ b/app/library/Download.py @@ -203,11 +203,6 @@ class Download: self.logger.debug("Params before passing to yt-dlp.", extra=params) - if "impersonate" in params: - from yt_dlp.networking.impersonate import ImpersonateTarget - - params["impersonate"] = ImpersonateTarget.from_str(params["impersonate"]) - params["logger"] = NestedLogger(self.logger) cls = yt_dlp.YoutubeDL(params=params) diff --git a/app/library/Utils.py b/app/library/Utils.py index 07d56261..fb084df6 100644 --- a/app/library/Utils.py +++ b/app/library/Utils.py @@ -424,7 +424,6 @@ def arg_converter(args: str) -> dict: """ import yt_dlp.options - from yt_dlp.utils import DateRange create_parser = yt_dlp.options.create_parser diff --git a/app/library/YTDLPOpts.py b/app/library/YTDLPOpts.py index a6c7726c..a414543e 100644 --- a/app/library/YTDLPOpts.py +++ b/app/library/YTDLPOpts.py @@ -137,4 +137,9 @@ class YTDLPOpts(metaclass=Singleton): data["daterange"] = DateRange(data["daterange"]["start"], data["daterange"]["end"]) + if "impersonate" in data and isinstance(data["impersonate"], str): + from yt_dlp.networking.impersonate import ImpersonateTarget + + data["impersonate"] = ImpersonateTarget.from_str(data["impersonate"]) + return data diff --git a/app/library/encoder.py b/app/library/encoder.py index 70ccd127..ad3d154f 100644 --- a/app/library/encoder.py +++ b/app/library/encoder.py @@ -2,6 +2,7 @@ import json from datetime import date from pathlib import Path +from yt_dlp.networking.impersonate import ImpersonateTarget from yt_dlp.utils import DateRange @@ -22,6 +23,9 @@ class Encoder(json.JSONEncoder): if isinstance(o, date): return str(o) + if isinstance(o, ImpersonateTarget): + return str(o) + if isinstance(o, object): if hasattr(o, "serialize"): return o.serialize()