diff --git a/DEPLOY.md b/DEPLOY.md index bb7e4a3..9afea6d 100644 --- a/DEPLOY.md +++ b/DEPLOY.md @@ -27,8 +27,8 @@ default, e.g. via QEMU emulation). ```sh docker buildx build --platform linux/amd64 \ - --build-arg VERSION=1.11 \ - -t 192.168.2.212:3000/tigeren/metube:1.11 \ + --build-arg VERSION=1.12 \ + -t 192.168.2.212:3000/tigeren/metube:1.12 \ --push . ``` diff --git a/app/ytdl.py b/app/ytdl.py index fb6d2f4..99f523f 100644 --- a/app/ytdl.py +++ b/app/ytdl.py @@ -452,6 +452,7 @@ class DownloadQueue: 'skip_download': True, # Don't download, just get info 'paths': {"home": dldirectory, "temp": self.config.TEMP_DIR}, **ytdl_options, + **({'impersonate': yt_dlp.networking.impersonate.ImpersonateTarget.from_str(ytdl_options['impersonate'])} if isinstance(ytdl_options.get('impersonate'), str) else {}), }).extract_info(dl.url, download=False) ) if full_entry and 'title' in full_entry: diff --git a/docker-compose.yml b/docker-compose.yml index d604be2..08e99ed 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -61,6 +61,9 @@ services: # Optional: yt-dlp options # - YTDL_OPTIONS={} # - YTDL_OPTIONS_FILE=/path/to/ytdl_options.json + # Impersonate Chrome's TLS fingerprint: some sites 403 the container's + # plain Python/OpenSSL fingerprint (works on desktop Python without this) + - YTDL_OPTIONS={"impersonate":"chrome"} # Optional: cookies for authenticated downloads # - YTDL_OPTIONS={"cookiefile":"/cookies/cookies.txt"} diff --git a/uv.lock b/uv.lock index 574c0bf..5aa9b13 100644 --- a/uv.lock +++ b/uv.lock @@ -848,11 +848,11 @@ wheels = [ [[package]] name = "yt-dlp" -version = "2026.2.21" +version = "2026.7.4" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/58/d9/55ffff25204733e94a507552ad984d5a8a8e4f9d1f0d91763e6b1a41c79b/yt_dlp-2026.2.21.tar.gz", hash = "sha256:4407dfc1a71fec0dee5ef916a8d4b66057812939b509ae45451fa8fb4376b539", size = 3116630, upload-time = "2026-02-21T20:40:53.522Z" } +sdist = { url = "https://files.pythonhosted.org/packages/47/c5/9972af4b472b0d55badf841ebafd2f98944cb0ae0f46e11d01f363ea5b91/yt_dlp-2026.7.4.tar.gz", hash = "sha256:b094813404f87a9dd2186f00815231df32e5fd8a5403be0f807b3bb2d21a4432", size = 3049326, upload-time = "2026-07-04T22:42:14.837Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/5a/40/664c99ee36d80d84ce7a96cd98aebcb3d16c19e6c3ad3461d2cf5424040e/yt_dlp-2026.2.21-py3-none-any.whl", hash = "sha256:0d8408f5b6d20487f5caeb946dfd04f9bcd2f1a3a125b744a0a982b590e449f7", size = 3313392, upload-time = "2026-02-21T20:40:51.514Z" }, + { url = "https://files.pythonhosted.org/packages/f9/8a/cd4c9b02c10c563adfe78118310129641900e1cd6de888cfae2452072696/yt_dlp-2026.7.4-py3-none-any.whl", hash = "sha256:f11f2b11d5a8ac4059f9bdf29fa4407dc7c6bb00c5097e95ca22a7a9db518266", size = 3184705, upload-time = "2026-07-04T22:42:12.989Z" }, ] [package.optional-dependencies] @@ -860,7 +860,7 @@ curl-cffi = [ { name = "curl-cffi", marker = "implementation_name == 'cpython'" }, ] default = [ - { name = "brotli", marker = "implementation_name == 'cpython'" }, + { name = "brotli", marker = "implementation_name == 'cpython' and sys_platform != 'ios'" }, { name = "brotlicffi", marker = "implementation_name != 'cpython'" }, { name = "certifi" }, { name = "mutagen" }, @@ -873,9 +873,9 @@ default = [ [[package]] name = "yt-dlp-ejs" -version = "0.5.0" +version = "0.8.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/6b/0d/b9e4ab1b47cdeba0842df634b74b3c0144307640ad5b632a5e189c4ab7ce/yt_dlp_ejs-0.5.0.tar.gz", hash = "sha256:8dfae59e418232f485253dcf8e197fefa232423c3af7824fe19e4517b173293b", size = 98925, upload-time = "2026-02-21T19:29:16.844Z" } +sdist = { url = "https://files.pythonhosted.org/packages/d3/e6/cceb9530e8f4e5940f6f7822d90e9d94f1b85343329a16baaf47bbbb3de1/yt_dlp_ejs-0.8.0.tar.gz", hash = "sha256:d5fa1639f63b5c4af8d932495f60689d5370f1a095782c944f7f62a303eb104e", size = 96571, upload-time = "2026-03-17T22:49:19.299Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/7e/5b/1283356b70d4893a8a050cee15092e1b08ea15310b94365f88067146721b/yt_dlp_ejs-0.5.0-py3-none-any.whl", hash = "sha256:674fc0efea741d3100cdf3f0f9e123150715ee41edf47ea7a62fbdeda204bdec", size = 54032, upload-time = "2026-02-21T19:29:15.408Z" }, + { url = "https://files.pythonhosted.org/packages/e3/bd/520769863744b669440a924271a6159ddd82ad5ae26b4ac4d4b69e9f8d44/yt_dlp_ejs-0.8.0-py3-none-any.whl", hash = "sha256:79300e5fca7f937a1eeede11f0456862c1b41107ce1d726871e0207424f4bdb4", size = 53443, upload-time = "2026-03-17T22:49:17.736Z" }, ]