Browse Source

[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 months ago
parent
commit
5c019f6328

+ 2 - 2
Makefile

@@ -74,11 +74,11 @@ codetest:
 	autopep8 --diff .
 	autopep8 --diff .
 
 
 test:
 test:
-	$(PYTHON) -m pytest
+	$(PYTHON) -m pytest -Werror
 	$(MAKE) codetest
 	$(MAKE) codetest
 
 
 offlinetest: 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_CMD = find yt_dlp -type f -name '__init__.py' | sed 's,/__init__.py,,' | grep -v '/__' | sort
 CODE_FOLDERS != $(CODE_FOLDERS_CMD)
 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_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_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](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_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_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)
 [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
 yt-dlp --update-to nightly
 
 
 # To install nightly with pip:
 # To install nightly with pip:
-python3 -m pip install -U --pre yt-dlp[default]
+python3 -m pip install -U --pre "yt-dlp[default]"
 ```
 ```
 
 
 ## DEPENDENCIES
 ## 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. 
 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)
 * [**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
   * 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
 # 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"`
 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",
         "action": "add",
         "when": "9590cc6b4768e190183d7d071a6c78170889116a",
         "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."
         "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, fatal=False), {})
         self.assertEqual(self.ie._search_nextjs_data('', None, default=None), None)
         self.assertEqual(self.ie._search_nextjs_data('', None, default=None), None)
         self.assertEqual(self.ie._search_nextjs_data('', None, default={}), {})
         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='{}'), {})
             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')
         site_name = self._og_search_property('site_name', webpage, fatal=False, default='Česká televize')
         playlist_title = self._og_search_title(webpage, default=None)
         playlist_title = self._og_search_title(webpage, default=None)
         if site_name and playlist_title:
         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)
         playlist_description = self._og_search_description(webpage, default=None)
         if playlist_description:
         if playlist_description:
             playlist_description = playlist_description.replace('\xa0', ' ')
             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
                     # See com/longtailvideo/jwplayer/media/RTMPMediaProvider.as
                     # of jwplayer.flash.swf
                     # of jwplayer.flash.swf
                     rtmp_url_parts = re.split(
                     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:
                     if len(rtmp_url_parts) == 3:
                         rtmp_url, prefix, play_path = rtmp_url_parts
                         rtmp_url, prefix, play_path = rtmp_url_parts
                         a_format.update({
                         a_format.update({

Some files were not shown because too many files changed in this diff