Просмотр исходного кода

[misc] Cleanup (#9765)

Closes #9763
Authored by: bashonly, seproDev, Grub4K

Co-authored-by: bashonly <88596187+bashonly@users.noreply.github.com>
Co-authored-by: sepro <4618135+seproDev@users.noreply.github.com>
Simon Sawicki 9 месяцев назад
Родитель
Сommit
5c019f6328

+ 2 - 2
Makefile

@@ -74,11 +74,11 @@ codetest:
 	autopep8 --diff .
 
 test:
-	$(PYTHON) -m pytest
+	$(PYTHON) -m pytest -Werror
 	$(MAKE) codetest
 
 offlinetest: codetest
-	$(PYTHON) -m pytest -k "not download"
+	$(PYTHON) -m pytest -Werror -m "not download"
 
 CODE_FOLDERS_CMD = find yt_dlp -type f -name '__init__.py' | sed 's,/__init__.py,,' | grep -v '/__' | sort
 CODE_FOLDERS != $(CODE_FOLDERS_CMD)

+ 3 - 4
README.md

@@ -108,7 +108,6 @@ File|Description
 [yt-dlp_x86.exe](https://github.com/yt-dlp/yt-dlp/releases/latest/download/yt-dlp_x86.exe)|Windows (Win7 SP1+) standalone x86 (32-bit) binary
 [yt-dlp_min.exe](https://github.com/yt-dlp/yt-dlp/releases/latest/download/yt-dlp_min.exe)|Windows (Win7 SP1+) standalone x64 binary built with `py2exe`<br/> ([Not recommended](#standalone-py2exe-builds-windows))
 [yt-dlp_linux](https://github.com/yt-dlp/yt-dlp/releases/latest/download/yt-dlp_linux)|Linux standalone x64 binary
-[yt-dlp_linux.zip](https://github.com/yt-dlp/yt-dlp/releases/latest/download/yt-dlp_linux.zip)|Unpackaged Linux executable (no auto-update)
 [yt-dlp_linux_armv7l](https://github.com/yt-dlp/yt-dlp/releases/latest/download/yt-dlp_linux_armv7l)|Linux standalone armv7l (32-bit) binary
 [yt-dlp_linux_aarch64](https://github.com/yt-dlp/yt-dlp/releases/latest/download/yt-dlp_linux_aarch64)|Linux standalone aarch64 (64-bit) binary
 [yt-dlp_win.zip](https://github.com/yt-dlp/yt-dlp/releases/latest/download/yt-dlp_win.zip)|Unpackaged Windows executable (no auto-update)
@@ -170,7 +169,7 @@ Example usage:
 yt-dlp --update-to nightly
 
 # To install nightly with pip:
-python3 -m pip install -U --pre yt-dlp[default]
+python3 -m pip install -U --pre "yt-dlp[default]"
 ```
 
 ## DEPENDENCIES
@@ -202,7 +201,7 @@ While all the other dependencies are optional, `ffmpeg` and `ffprobe` are highly
 The following provide support for impersonating browser requests. This may be required for some sites that employ TLS fingerprinting. 
 
 * [**curl_cffi**](https://github.com/yifeikong/curl_cffi) (recommended) - Python binding for [curl-impersonate](https://github.com/lwthiker/curl-impersonate). Provides impersonation targets for Chrome, Edge and Safari. Licensed under [MIT](https://github.com/yifeikong/curl_cffi/blob/main/LICENSE)
-  * Can be installed with the `curl-cffi` group, e.g. `pip install yt-dlp[default,curl-cffi]`
+  * Can be installed with the `curl-cffi` group, e.g. `pip install "yt-dlp[default,curl-cffi]"`
   * Currently only included in `yt-dlp.exe` and `yt-dlp_macos` builds
 
 
@@ -1751,7 +1750,7 @@ $ yt-dlp --replace-in-metadata "title,uploader" "[ _]" "-"
 
 # EXTRACTOR ARGUMENTS
 
-Some extractors accept additional arguments which can be passed using `--extractor-args KEY:ARGS`. `ARGS` is a `;` (semicolon) separated string of `ARG=VAL1,VAL2`. E.g. `--extractor-args "youtube:player-client=android_embedded,web;include_live_dash" --extractor-args "funimation:version=uncut"`
+Some extractors accept additional arguments which can be passed using `--extractor-args KEY:ARGS`. `ARGS` is a `;` (semicolon) separated string of `ARG=VAL1,VAL2`. E.g. `--extractor-args "youtube:player-client=android_embedded,web;formats=incomplete" --extractor-args "funimation:version=uncut"`
 
 Note: In CLI, `ARG` can use `-` instead of `_`; e.g. `youtube:player-client"` becomes `youtube:player_client"`
 

+ 16 - 0
devscripts/changelog_override.json

@@ -147,5 +147,21 @@
         "action": "add",
         "when": "9590cc6b4768e190183d7d071a6c78170889116a",
         "short": "[priority] Security: [[CVE-2024-22423](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2024-22423)] [Prevent RCE when using `--exec` with `%q` on Windows](https://github.com/yt-dlp/yt-dlp/security/advisories/GHSA-hjq6-52gw-2g7p)\n    - The shell escape function now properly escapes `%`, `\\` and `\\n`.\n    - `utils.Popen` has been patched accordingly."
+    },
+    {
+        "action": "change",
+        "when": "41ba4a808b597a3afed78c89675a30deb6844450",
+        "short": "[ie/tiktok] Extract via mobile API only if extractor-arg is passed (#9938)",
+        "authors": ["bashonly"]
+    },
+    {
+        "action": "remove",
+        "when": "6e36d17f404556f0e3a43f441c477a71a91877d9"
+    },
+    {
+        "action": "change",
+        "when": "beaf832c7a9d57833f365ce18f6115b88071b296",
+        "short": "[ie/soundcloud] Add `formats` extractor-arg (#10004)",
+        "authors": ["bashonly", "Grub4K"]
     }
 ]

+ 0 - 4
devscripts/run_tests.bat

@@ -1,4 +0,0 @@
-@echo off
-
->&2 echo run_tests.bat is deprecated. Please use `devscripts/run_tests.py` instead
-python %~dp0run_tests.py %~1

+ 0 - 4
devscripts/run_tests.sh

@@ -1,4 +0,0 @@
-#!/usr/bin/env sh
-
->&2 echo 'run_tests.sh is deprecated. Please use `devscripts/run_tests.py` instead'
-python3 devscripts/run_tests.py "$1"

+ 0 - 17
pyinst.py

@@ -1,17 +0,0 @@
-#!/usr/bin/env python3
-
-# Allow execution from anywhere
-import os
-import sys
-
-sys.path.insert(0, os.path.dirname(os.path.abspath(__file__)))
-
-import warnings
-
-from bundle.pyinstaller import main
-
-warnings.warn(DeprecationWarning('`pyinst.py` is deprecated and will be removed in a future version. '
-                                 'Use `bundle.pyinstaller` instead'))
-
-if __name__ == '__main__':
-    main()

+ 0 - 36
setup.py

@@ -1,36 +0,0 @@
-#!/usr/bin/env python3
-
-# Allow execution from anywhere
-import os
-import sys
-
-sys.path.insert(0, os.path.dirname(os.path.abspath(__file__)))
-
-import warnings
-
-
-if sys.argv[1:2] == ['py2exe']:
-    warnings.warn(DeprecationWarning('`setup.py py2exe` is deprecated and will be removed in a future version. '
-                                     'Use `bundle.py2exe` instead'))
-
-    import bundle.py2exe
-
-    bundle.py2exe.main()
-
-elif 'build_lazy_extractors' in sys.argv:
-    warnings.warn(DeprecationWarning('`setup.py build_lazy_extractors` is deprecated and will be removed in a future version. '
-                                     'Use `devscripts.make_lazy_extractors` instead'))
-
-    import subprocess
-
-    os.chdir(sys.path[0])
-    print('running build_lazy_extractors')
-    subprocess.run([sys.executable, 'devscripts/make_lazy_extractors.py'])
-
-else:
-
-    print(
-        'ERROR: Building by calling `setup.py` is deprecated. '
-        'Use a build frontend like `build` instead. ',
-        'Refer to  https://build.pypa.io  for more info', file=sys.stderr)
-    sys.exit(1)

+ 1 - 1
test/test_InfoExtractor.py

@@ -1912,7 +1912,7 @@ jwplayer("mediaplayer").setup({"abouttext":"Visit Indie DB","aboutlink":"http:\/
         self.assertEqual(self.ie._search_nextjs_data('', None, fatal=False), {})
         self.assertEqual(self.ie._search_nextjs_data('', None, default=None), None)
         self.assertEqual(self.ie._search_nextjs_data('', None, default={}), {})
-        with self.assertRaises(DeprecationWarning):
+        with self.assertWarns(DeprecationWarning):
             self.assertEqual(self.ie._search_nextjs_data('', None, default='{}'), {})
 
 

+ 1 - 1
yt_dlp/extractor/ceskatelevize.py

@@ -101,7 +101,7 @@ class CeskaTelevizeIE(InfoExtractor):
         site_name = self._og_search_property('site_name', webpage, fatal=False, default='Česká televize')
         playlist_title = self._og_search_title(webpage, default=None)
         if site_name and playlist_title:
-            playlist_title = re.split(r'\s*[—|]\s*%s' % (site_name, ), playlist_title, 1)[0]
+            playlist_title = re.split(r'\s*[—|]\s*%s' % (site_name, ), playlist_title, maxsplit=1)[0]
         playlist_description = self._og_search_description(webpage, default=None)
         if playlist_description:
             playlist_description = playlist_description.replace('\xa0', ' ')

+ 1 - 1
yt_dlp/extractor/common.py

@@ -3517,7 +3517,7 @@ class InfoExtractor:
                     # See com/longtailvideo/jwplayer/media/RTMPMediaProvider.as
                     # of jwplayer.flash.swf
                     rtmp_url_parts = re.split(
-                        r'((?:mp4|mp3|flv):)', source_url, 1)
+                        r'((?:mp4|mp3|flv):)', source_url, maxsplit=1)
                     if len(rtmp_url_parts) == 3:
                         rtmp_url, prefix, play_path = rtmp_url_parts
                         a_format.update({

Некоторые файлы не были показаны из-за большого количества измененных файлов