diff --git a/yt-dlp-rpmlintrc b/yt-dlp-rpmlintrc new file mode 100644 index 0000000..ba8a246 --- /dev/null +++ b/yt-dlp-rpmlintrc @@ -0,0 +1,2 @@ +addFilter("files-duplicate") +addFilter("python-bytecode-inconsistent-mtime /usr/lib.*/__pycache__/.*\.pyc") diff --git a/yt-dlp.changes b/yt-dlp.changes index 3841b20..b247dc6 100644 --- a/yt-dlp.changes +++ b/yt-dlp.changes @@ -1,3 +1,319 @@ +------------------------------------------------------------------- +Sun Feb 1 09:43:09 UTC 2026 - Jan Engelhardt + +- Update to release 2026.01.31 + * yt: Add `web_embedded` fallback for `android_vr` client + * yt: Remove broken `ios_downgraded` and `tv_embedded` player + clients + +------------------------------------------------------------------- +Fri Jan 30 17:27:41 UTC 2026 - Michael Pujos + +- added quickjs recommends as a lighter alternative to deno and nodejs + +------------------------------------------------------------------- +Thu Jan 29 21:04:07 UTC 2026 - Jan Engelhardt + +- Update to release 2026.01.29 + * Accept float values for command-line option `--sleep-subtitles` + * Add `--format-sort-reset` option + * yt: Support comment subthreads + +------------------------------------------------------------------- +Mon Dec 8 00:37:12 UTC 2025 - Jan Engelhardt + +- Update to release 2025.12.08 + * cookies: Fix --cookies-from-browser for new installs of + Firefox 147+ + * floatplane: add subtitle support + * yt: detect AI-upscaled formats + +------------------------------------------------------------------- +Sat Nov 15 13:30:13 UTC 2025 - Jan Engelhardt + +- Relax JS runtime requirement from required to recommended, + some formats can be downloaded without either runtime. +- Recommend nodejs as an alternative to deno + (Leap 15.6 has just nodejs). + +------------------------------------------------------------------- +Thu Nov 13 08:30:07 UTC 2025 - Jan Engelhardt + +- Update to release 2025.11.12 + * An external JavaScript runtime is now used for full YouTube + support (e.g. deno). + +------------------------------------------------------------------- +Thu Oct 23 12:34:56 UTC 2025 - olaf@aepfle.de + +- Use the pythons macro to reduce the amount of suse_version usage + +------------------------------------------------------------------- +Wed Oct 22 15:41:02 UTC 2025 - Luigi Baldoni + +- Update to version 2025.10.22 + * A stopgap release with a TEMPORARY partial fix for YouTube + support. Some formats may still be unavailable, especially if + cookies are passed to yt-dlp. The NEXT release, expected very + soon, will require an external JS runtime (e.g. Deno) in + order for YouTube downloads to work properly. + * The minimum required Python version has been raised to 3.10 + (Python 3.9 has reached its end-of-life as of October 2025). + +------------------------------------------------------------------- +Wed Oct 15 10:18:09 UTC 2025 - Jan Engelhardt + +- Update to release 2025.10.14 + * yt: Detect experiment binding GVS PO Token to video id + * yt: Fix approximate timestamp extraction for feeds + +------------------------------------------------------------------- +Tue Oct 7 12:34:56 UTC 2025 - olaf@aepfle.de + +- Use Python 3.13 in 15.7, due to lack of 3.12 + +------------------------------------------------------------------- +Sat Sep 27 06:53:33 UTC 2025 - Luigi Baldoni + +- Update to release 2025.09.26 + * twitch: vod: Fix live_status detection + * yt: Fix player JS overrides + * yt: Improve PO token logging + * yt: Player client maintenance + * yt: Replace tv_simply with web_safari in default clients +- Fix Leap 15.6 build + +------------------------------------------------------------------- +Tue Sep 23 08:02:51 UTC 2025 - Jan Engelhardt + +- Update to release 2025.09.23 + * youtube: Force player 0004de42 + +------------------------------------------------------------------- +Sat Sep 06 09:45:45 CEST 2025 - Luigi Baldoni + +- Update to version 2025.09.05 + * Fix --id deprecation warning + * charlierose: Fix extractor + * googledrive: Fix subtitles extraction + * itvbtcc: Fix extractor + * kick: vod: Support ongoing livestream VODs + * lrt: Fix extractors + * tver: Extract more metadata + * vevo: Restore extractors + * build: Overhaul Linux builds and refactor release workflow + +------------------------------------------------------------------- +Thu Aug 28 00:09:55 UTC 2025 - Jan Engelhardt + +- Update to release 2025.08.27 + * Add tcc player JS variant + * Deprioritize web_safari m3u8 formats + * Use alternative tv user-agent when authenticated + +------------------------------------------------------------------- +Sat Aug 23 07:56:19 UTC 2025 - Jan Engelhardt + +- Update to release 2025.08.22 + * cookies: Fix --cookies-from-browser with Firefox 142+ + +------------------------------------------------------------------- +Wed Aug 20 07:42:37 UTC 2025 - Jan Engelhardt + +- Update to release 2025.08.20 + * Warn against use of `-f mp4` + * yt: Add es5 and es6 player JS variants + * yt: Default to main player JS variant + * yt: Extract title and description from initial data + * yt: Handle required preroll waiting period + +------------------------------------------------------------------- +Mon Aug 11 07:18:23 UTC 2025 - Jan Engelhardt + +- Update to release 2025.08.11 + * yt: Add player params to mweb client + * dash: Re-extract if using --load-info-json with + --live-from-start + +------------------------------------------------------------------- +Tue Jul 22 00:13:54 UTC 2025 - Jan Engelhardt + +- Update to release 2025.07.21 + * Default behaviour changed from --mtime to --no-mtime + * yt: Do not require PO Token for premium accounts + * yt: Extract global nsig helper functions + * yt: tab: Fix subscriptions feed extraction + +------------------------------------------------------------------- +Tue Jul 1 15:00:04 UTC 2025 - Jan Engelhardt + +- Update to release 2025.06.30 + * youtube: Fix premium formats extraction + +------------------------------------------------------------------- +Thu Jun 26 07:58:44 UTC 2025 - Jan Engelhardt + +- Update to release 2025.06.25 + * yt: Check any ios m3u8 formats prior to download + * yt: Improve player context payloads + +------------------------------------------------------------------- +Tue Jun 10 00:19:26 UTC 2025 - Jan Engelhardt + +- Update to release 2025.06.09 + * adobepass: add Fubo MSO, fix Philo MSO authentication + * yt: Add tv_simply player client + * yt: Extract srt subtitles + * yt: Rework nsig function name extraction + +------------------------------------------------------------------- +Thu May 22 14:36:43 UTC 2025 - Jan Engelhardt + +- Update to release 2025.05.22 + * yt: Add PO token support for subtitles + * yt: Add web_embedded client for age-restricted videos + * yt: Add a PO Token Provider Framework + * yt: Extract media_type for all videos + * yt: Fix --live-from-start support for premieres + * yt: Fix geo-restriction error handling + +------------------------------------------------------------------- +Sun May 4 08:49:41 UTC 2025 - Jan Engelhardt + +- Update to release 2025.04.30 [boo#1242186] + * New option --preset-alias/-t has been added + +------------------------------------------------------------------- +Mon Mar 31 23:24:45 UTC 2025 - Jan Engelhardt + +- Update to release 2025.03.31 + * yt: add player_js_variant extractor-arg + * yt/tab: Fix playlist continuation extraction + +------------------------------------------------------------------- +Fri Mar 28 11:09:09 UTC 2025 - Jan Engelhardt + +- Update to release 2025.03.27 + * youtube: Make signature and nsig extraction more robust + +------------------------------------------------------------------- +Wed Mar 26 02:01:15 UTC 2025 - Jan Engelhardt + +- Update to release 2025.03.26 + * youtube: fix signature and nsig extraction for player 4fcd6e4a + +------------------------------------------------------------------- +Sat Mar 22 09:03:31 UTC 2025 - Jan Engelhardt + +- Update to release 2025.03.21 + * Fix external downloader availability when using + ``--ffmpeg-location`` + * youtube: fix nsig and signature extraction for player 643afba4. + +------------------------------------------------------------------- +Fri Feb 28 21:01:45 UTC 2025 - Jan Engelhardt + +- Require same version between yt-dlp -> python-yt-dlp + +------------------------------------------------------------------- +Wed Feb 19 08:55:03 UTC 2025 - Jan Engelhardt + +- Update to release 2025.02.19 + * NSIG workaround for tce player JS + +------------------------------------------------------------------- +Sun Jan 26 18:02:45 UTC 2025 - Jan Engelhardt + +- Update to release 2025.01.26 + * bilibili: Support space video list extraction without login + * crunchyroll: Remove extractors + * youtube: Download tv client Innertube config + * youtube: Use different PO token for GVS and Player + +------------------------------------------------------------------- +Thu Jan 16 21:28:51 UTC 2025 - Jan Engelhardt + +- Update to release 2025.01.15 + * youtube: Do not use web_creator as a default client + +------------------------------------------------------------------- +Mon Jan 13 00:14:20 UTC 2025 - Jan Engelhardt + +- Update to release 2025.01.12 + * yt: fix DASH formats incorrectly skipped in some situations + * yt: refactor cookie auth + +------------------------------------------------------------------- +Wed Dec 25 09:38:56 UTC 2024 - Luigi Baldoni + +- Fix 15.6 build + +------------------------------------------------------------------- +Tue Dec 24 01:26:36 UTC 2024 - Jan Engelhardt + +- Update to release 2024.12.23 + * yt: add age-gate workaround for some embeddable videos + +------------------------------------------------------------------- +Fri Dec 13 12:28:50 UTC 2024 - Jan Engelhardt + +- Update to release 2024.12.13 + * yt: fix signature function extraction for 2f1832d2 + * yt: prioritize original language over auto-dubbed audio + +------------------------------------------------------------------- +Thu Dec 12 12:50:03 UTC 2024 - Jan Engelhardt + +- Update to release 2024.12.06 + * yt: fix ``n`` sig extraction for player 3bb1f723 + * yt: fix signature function extraction + * yt: player client maintenance + +------------------------------------------------------------------- +Tue Dec 3 20:59:18 UTC 2024 - Jan Engelhardt + +- Update to release 2024.12.03 + * bilibili: Always try to extract HD formats + * youtube: Adjust player clients for site changes + +------------------------------------------------------------------- +Tue Nov 19 19:30:07 UTC 2024 - Jan Engelhardt + +- Update to release 2024.11.18 + * cloudflarestream: Avoid extraction via videodelivery.net + * youtube: remove broken OAuth support + +------------------------------------------------------------------- +Mon Nov 4 21:48:05 UTC 2024 - Jan Engelhardt + +- Update to release 2024.11.04 + * Prioritize AV1 + * Remove Python <= 3.8 support + * youtube: Adjust OAuth refresh token handling + +------------------------------------------------------------------- +Wed Oct 23 08:32:16 UTC 2024 - Jan Engelhardt + +- Update to release 2024.10.22 + * yt: Remove broken android_producer client + * yt: Remove broken age-restriction workaround + * yt: Support logging in with OAuth + +------------------------------------------------------------------- +Tue Oct 8 08:49:07 UTC 2024 - Jan Engelhardt + +- Update to release 2024.10.07 + * Fix cookie load error handling + * youtube: Change default player clients to ios,mweb + * patreon: Extract all m3u8 formats for locked posts + +------------------------------------------------------------------- +Sun Sep 29 19:34:07 UTC 2024 - Jan Engelhardt + +- Update to release 2024.09.27 + * Support excluding player_clients in extractor-arg + * clip: Prioritize https formats + ------------------------------------------------------------------- Tue Aug 13 20:43:17 UTC 2024 - Jan Engelhardt diff --git a/yt-dlp.spec b/yt-dlp.spec index fd824bb..5cc1b35 100644 --- a/yt-dlp.spec +++ b/yt-dlp.spec @@ -1,7 +1,7 @@ # # spec file for package yt-dlp # -# Copyright (c) 2024 SUSE LLC +# Copyright (c) 2026 SUSE LLC and contributors # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -16,23 +16,33 @@ # -%define skip_python2 1 -%define skip_python36 1 -%define skip_python37 1 -%{?sle15_python_module_pythons} +%if %{defined primary_python} +%define pythons %primary_python +%else +%if 0%{?sle_version} == 150700 +%global pythons python313 +%else +%global pythons python312 +%endif +%endif + Name: yt-dlp -Version: 2024.08.06 +Version: 2026.01.31 +%define ejsver 0.4.0 Release: 0 Summary: Enhanced fork of youtube-dl, a video site downloader for offline watching License: CC-BY-SA-3.0 AND SUSE-Public-Domain Group: Productivity/Networking/Web/Utilities URL: https://github.com/yt-dlp/yt-dlp Source: https://github.com/yt-dlp/yt-dlp/releases/download/%version/yt-dlp.tar.gz +Source2: https://github.com/yt-dlp/ejs/releases/download/%ejsver/yt_dlp_ejs-%ejsver-py3-none-any.whl +Source9: yt-dlp-rpmlintrc BuildRequires: %{python_module hatchling} BuildRequires: %{python_module pip} BuildRequires: fdupes BuildRequires: make >= 4 BuildRequires: python-rpm-macros +BuildRequires: unzip BuildRequires: zip BuildArch: noarch Obsoletes: yt-dlp-bash-completion < %version-%release @@ -41,8 +51,7 @@ Obsoletes: yt-dlp-fish-completion < %version-%release Provides: yt-dlp-fish-completion = %version-%release Obsoletes: yt-dlp-zsh-completion < %version-%release Provides: yt-dlp-zsh-completion = %version-%release -# %%primary_python not available in Leap yet -Requires: %(echo %{python_module yt-dlp} | perl -pe 's{.* }{}g') +Requires: %pythons-yt-dlp = %version %define python_subpackage_only 1 %python_subpackages @@ -63,6 +72,7 @@ This package installs "youtube-dl" as a symlink to yt-dlp. Summary: yt-dlp Python library Group: Development/Languages/Python Requires: ffmpeg +Recommends: (deno or nodejs >= 20 or quickjs >= 20250913) Suggests: python-Brotli Suggests: python-certifi Suggests: python-mutagen @@ -75,12 +85,20 @@ The direct Python interface into yt-dlp. %prep %autosetup -p1 -n %name +# remove shebang +find . -type f -name "*.py" -exec sed -i '/^#!/d' {} + + +# fix Leap 15.6 build w.r.t. python-hatchling +sed -e '/3\.14/d' -e '/^license\-files/d' \ + -i pyproject.toml + %build rm -f youtube-dl yt-dlp # # A self-decompressing yt-dlp is built only when python_build is not # exercised; else yt-dlp is a loader. # +export PYTHON=$(type -P "%_bindir/python%{python_bin_suffix}" | xargs --no-run-if-empty readlink -f) %pyproject_wheel %make_build yt-dlp @@ -88,8 +106,25 @@ rm -f youtube-dl yt-dlp b="%buildroot" %pyproject_install ln -s yt-dlp "$b/%_bindir/youtube-dl" -%fdupes %buildroot/usr rm -Rf "$b/%_datadir/doc" +# if you leave everything as-is, rpmlint complains about +# python312-yt-dlp.noarch: W: files-duplicate +# /usr/lib/python3.12/site-packages/yt_dlp/utils/__pycache__/progress.cpython-312.pyc +# /usr/lib/python3.12/site-packages/yt_dlp/utils/__pycache__/progress.cpython-312.opt-1.pyc +# if you add fdupes, rpmlint complains about +# python312-yt-dlp.noarch: E: python-bytecode-inconsistent-mtime +# /usr/lib/python3.12/site-packages/yt_dlp/extractor/__pycache__/screencastomatic.cpython-312.pyc +# 2024-09-29T18:11:02 +# /usr/lib/python3.12/site-packages/yt_dlp/extractor/screencastomatic.py +# 2024-09-29T18:11:01 + +ejs="$(grep ^EJS_VERSION Makefile | perl -pe 's{^.*?=\s+(.*)}{$1}')" +%{python_expand # +d="$b/%$python_sitelib/" +mkdir -p "$d" +cd "$d" +unzip "%_sourcedir/yt_dlp_ejs-$ejs-py3-none-any.whl" +} %files -n yt-dlp %license LICENSE diff --git a/yt-dlp.tar.gz b/yt-dlp.tar.gz index 0d6b3bb..573f49c 100644 --- a/yt-dlp.tar.gz +++ b/yt-dlp.tar.gz @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e08331fb9a36eba56b4efd074b5b25fbf08413e9cb47009a28ecbffe47150310 -size 5710396 +oid sha256:928639b0355c2ee40af7b574e47a3c00048756e405f7964a7b39d70fe0cda4ba +size 6177758 diff --git a/yt_dlp_ejs-0.4.0-py3-none-any.whl b/yt_dlp_ejs-0.4.0-py3-none-any.whl new file mode 100644 index 0000000..b15a055 --- /dev/null +++ b/yt_dlp_ejs-0.4.0-py3-none-any.whl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:19278cff397b243074df46342bb7616c404296aeaff01986b62b4e21823b0b9c +size 53600