Compare commits
16 commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
2a9ff01123 |
||
|
|
9c7f1f9f6d |
||
|
|
b860ff73b7 | ||
|
|
8eacb27463 | ||
|
|
b32c6119e7 | ||
|
|
58c7b223ae | ||
|
|
6b9deb5086 | ||
|
|
0b3bfa128f | ||
|
|
bb236482e6 | ||
|
|
9690485ec7 | ||
|
|
699b594e50 | ||
|
|
50a4a661a1 | ||
|
|
429a67881c | ||
|
|
c070263390 | ||
|
|
64d87fdda4 | ||
|
|
3093ca0390 |
7 changed files with 703 additions and 259 deletions
11
.gitignore
vendored
11
.gitignore
vendored
|
|
@ -42,3 +42,14 @@
|
|||
/yt-dlp-2024.08.01.tar.gz
|
||||
/yt-dlp-2024.08.06.tar.gz
|
||||
/yt-dlp-2024.09.27.tar.gz
|
||||
/yt-dlp-2024.10.07.tar.gz
|
||||
/yt-dlp-2024.10.22.tar.gz
|
||||
/yt-dlp-2024.11.04.tar.gz
|
||||
/yt-dlp-2024.11.18.tar.gz
|
||||
/yt-dlp-2024.12.23.tar.gz
|
||||
/yt-dlp-2025.01.12.tar.gz
|
||||
/yt-dlp-2025.01.15.tar.gz
|
||||
/yt-dlp-2025.01.26.tar.gz
|
||||
/yt-dlp-2025.02.19.tar.gz
|
||||
/yt-dlp-2025.03.26.tar.gz
|
||||
/yt-dlp-2025.03.31.tar.gz
|
||||
|
|
|
|||
119
0001-Revert-rh-websockets-Upgrade-websockets-to-13.0-1081.patch
Normal file
119
0001-Revert-rh-websockets-Upgrade-websockets-to-13.0-1081.patch
Normal file
|
|
@ -0,0 +1,119 @@
|
|||
From fbc486f4fac78bfd49011c1b60362e656c679c71 Mon Sep 17 00:00:00 2001
|
||||
From: Maxwell G <maxwell@gtmx.me>
|
||||
Date: Mon, 6 Jan 2025 14:37:58 -0600
|
||||
Subject: [PATCH 1/2] Revert "[rh:websockets] Upgrade websockets to 13.0
|
||||
(#10815)"
|
||||
|
||||
This reverts commit 6f9e6537434562d513d0c9b68ced8a61ade94a64.
|
||||
---
|
||||
.github/workflows/core.yml | 1 -
|
||||
.github/workflows/quick-test.yml | 1 -
|
||||
pyproject.toml | 2 +-
|
||||
test/test_websockets.py | 8 ++++----
|
||||
yt_dlp/networking/_websockets.py | 5 ++++-
|
||||
5 files changed, 9 insertions(+), 8 deletions(-)
|
||||
|
||||
diff --git a/.github/workflows/core.yml b/.github/workflows/core.yml
|
||||
index 9a4342a58..bed3af94b 100644
|
||||
--- a/.github/workflows/core.yml
|
||||
+++ b/.github/workflows/core.yml
|
||||
@@ -59,7 +59,6 @@ jobs:
|
||||
- name: Install test requirements
|
||||
run: python3 ./devscripts/install_deps.py --include test --include curl-cffi
|
||||
- name: Run tests
|
||||
- timeout-minutes: 15
|
||||
continue-on-error: False
|
||||
run: |
|
||||
python3 -m yt_dlp -v || true # Print debug head
|
||||
diff --git a/.github/workflows/quick-test.yml b/.github/workflows/quick-test.yml
|
||||
index 1a32bbfe3..235a2c64d 100644
|
||||
--- a/.github/workflows/quick-test.yml
|
||||
+++ b/.github/workflows/quick-test.yml
|
||||
@@ -17,7 +17,6 @@ jobs:
|
||||
- name: Install test requirements
|
||||
run: python3 ./devscripts/install_deps.py -o --include test
|
||||
- name: Run tests
|
||||
- timeout-minutes: 15
|
||||
run: |
|
||||
python3 -m yt_dlp -v || true
|
||||
python3 ./devscripts/run_tests.py --pytest-args '--reruns 2 --reruns-delay 3.0' core
|
||||
diff --git a/pyproject.toml b/pyproject.toml
|
||||
index 5e987a6fd..6810415d1 100644
|
||||
--- a/pyproject.toml
|
||||
+++ b/pyproject.toml
|
||||
@@ -52,7 +52,7 @@ default = [
|
||||
"pycryptodomex",
|
||||
"requests>=2.32.2,<3",
|
||||
"urllib3>=1.26.17,<3",
|
||||
- "websockets>=13.0",
|
||||
+ "websockets>=12.0",
|
||||
]
|
||||
curl-cffi = [
|
||||
"curl-cffi>=0.5.10,!=0.6.*,!=0.7.*,!=0.8.*,!=0.9.*,<0.11; implementation_name=='cpython'",
|
||||
diff --git a/test/test_websockets.py b/test/test_websockets.py
|
||||
index dead5fe5c..5e0ce48cc 100644
|
||||
--- a/test/test_websockets.py
|
||||
+++ b/test/test_websockets.py
|
||||
@@ -88,7 +88,7 @@ def create_wss_websocket_server():
|
||||
certfn = os.path.join(TEST_DIR, 'testcert.pem')
|
||||
sslctx = ssl.SSLContext(ssl.PROTOCOL_TLS_SERVER)
|
||||
sslctx.load_cert_chain(certfn, None)
|
||||
- return create_websocket_server(ssl=sslctx)
|
||||
+ return create_websocket_server(ssl_context=sslctx)
|
||||
|
||||
|
||||
MTLS_CERT_DIR = os.path.join(TEST_DIR, 'testdata', 'certificate')
|
||||
@@ -103,7 +103,7 @@ def create_mtls_wss_websocket_server():
|
||||
sslctx.load_verify_locations(cafile=cacertfn)
|
||||
sslctx.load_cert_chain(certfn, None)
|
||||
|
||||
- return create_websocket_server(ssl=sslctx)
|
||||
+ return create_websocket_server(ssl_context=sslctx)
|
||||
|
||||
|
||||
def create_legacy_wss_websocket_server():
|
||||
@@ -112,7 +112,7 @@ def create_legacy_wss_websocket_server():
|
||||
sslctx.maximum_version = ssl.TLSVersion.TLSv1_2
|
||||
sslctx.set_ciphers('SHA1:AESCCM:aDSS:eNULL:aNULL')
|
||||
sslctx.load_cert_chain(certfn, None)
|
||||
- return create_websocket_server(ssl=sslctx)
|
||||
+ return create_websocket_server(ssl_context=sslctx)
|
||||
|
||||
|
||||
def ws_validate_and_send(rh, req):
|
||||
@@ -139,7 +139,7 @@ def setup_class(cls):
|
||||
cls.wss_thread, cls.wss_port = create_wss_websocket_server()
|
||||
cls.wss_base_url = f'wss://127.0.0.1:{cls.wss_port}'
|
||||
|
||||
- cls.bad_wss_thread, cls.bad_wss_port = create_websocket_server(ssl=ssl.SSLContext(ssl.PROTOCOL_TLS_SERVER))
|
||||
+ cls.bad_wss_thread, cls.bad_wss_port = create_websocket_server(ssl_context=ssl.SSLContext(ssl.PROTOCOL_TLS_SERVER))
|
||||
cls.bad_wss_host = f'wss://127.0.0.1:{cls.bad_wss_port}'
|
||||
|
||||
cls.mtls_wss_thread, cls.mtls_wss_port = create_mtls_wss_websocket_server()
|
||||
diff --git a/yt_dlp/networking/_websockets.py b/yt_dlp/networking/_websockets.py
|
||||
index d29f8e45a..a2bdb9c82 100644
|
||||
--- a/yt_dlp/networking/_websockets.py
|
||||
+++ b/yt_dlp/networking/_websockets.py
|
||||
@@ -48,7 +48,10 @@
|
||||
# 2: "AttributeError: 'ClientConnection' object has no attribute 'recv_events_exc'. Did you mean: 'recv_events'?"
|
||||
import websockets.sync.connection # isort: split
|
||||
with contextlib.suppress(Exception):
|
||||
+ # > 12.0
|
||||
websockets.sync.connection.Connection.recv_exc = None
|
||||
+ # 12.0
|
||||
+ websockets.sync.connection.Connection.recv_events_exc = None
|
||||
|
||||
|
||||
class WebsocketsResponseAdapter(WebSocketResponse):
|
||||
@@ -162,7 +165,7 @@ def _send(self, request):
|
||||
additional_headers=headers,
|
||||
open_timeout=timeout,
|
||||
user_agent_header=None,
|
||||
- ssl=ssl_ctx if wsuri.secure else None,
|
||||
+ ssl_context=ssl_ctx if wsuri.secure else None,
|
||||
close_timeout=0, # not ideal, but prevents yt-dlp hanging
|
||||
)
|
||||
return WebsocketsResponseAdapter(conn, url=request.url)
|
||||
--
|
||||
2.48.1
|
||||
|
||||
369
0002-Revert-rh-requests-Bump-minimum-requests-version-to-.patch
Normal file
369
0002-Revert-rh-requests-Bump-minimum-requests-version-to-.patch
Normal file
|
|
@ -0,0 +1,369 @@
|
|||
From 86b38cb4301ee26dbea2c3ef1865d463aaf67721 Mon Sep 17 00:00:00 2001
|
||||
From: Maxwell G <maxwell@gtmx.me>
|
||||
Date: Mon, 6 Jan 2025 14:48:08 -0600
|
||||
Subject: [PATCH 2/2] Revert "[rh:requests] Bump minimum `requests` version to
|
||||
2.32.2 (#10079)"
|
||||
|
||||
This reverts commit db50f19d76c6870a5a13d0cab9287d684fd7449a.
|
||||
---
|
||||
pyproject.toml | 2 +-
|
||||
yt_dlp/networking/_requests.py | 163 ++++++++++++++++++++++-----------
|
||||
2 files changed, 109 insertions(+), 56 deletions(-)
|
||||
|
||||
diff --git a/pyproject.toml b/pyproject.toml
|
||||
index 6810415d1..2c1d485d4 100644
|
||||
--- a/pyproject.toml
|
||||
+++ b/pyproject.toml
|
||||
@@ -50,7 +50,7 @@ default = [
|
||||
"certifi",
|
||||
"mutagen",
|
||||
"pycryptodomex",
|
||||
- "requests>=2.32.2,<3",
|
||||
+ "requests>=2.31.0,<3",
|
||||
"urllib3>=1.26.17,<3",
|
||||
"websockets>=12.0",
|
||||
]
|
||||
diff --git a/yt_dlp/networking/_requests.py b/yt_dlp/networking/_requests.py
|
||||
index 5b6b264a6..98c755d57 100644
|
||||
--- a/yt_dlp/networking/_requests.py
|
||||
+++ b/yt_dlp/networking/_requests.py
|
||||
@@ -13,20 +13,21 @@
|
||||
from ..utils.networking import normalize_url
|
||||
|
||||
if requests is None:
|
||||
- raise ImportError('requests module is not installed')
|
||||
+ raise ImportError("requests module is not installed")
|
||||
|
||||
if urllib3 is None:
|
||||
- raise ImportError('urllib3 module is not installed')
|
||||
+ raise ImportError("urllib3 module is not installed")
|
||||
|
||||
-urllib3_version = tuple(int_or_none(x, default=0) for x in urllib3.__version__.split('.'))
|
||||
+urllib3_version = tuple(
|
||||
+ int_or_none(x, default=0) for x in urllib3.__version__.split(".")
|
||||
+)
|
||||
|
||||
if urllib3_version < (1, 26, 17):
|
||||
- urllib3._yt_dlp__version = f'{urllib3.__version__} (unsupported)'
|
||||
- raise ImportError('Only urllib3 >= 1.26.17 is supported')
|
||||
+ urllib3._yt_dlp__version = f"{urllib3.__version__} (unsupported)"
|
||||
+ raise ImportError("Only urllib3 >= 1.26.17 is supported")
|
||||
|
||||
-if requests.__build__ < 0x023202:
|
||||
- requests._yt_dlp__version = f'{requests.__version__} (unsupported)'
|
||||
- raise ImportError('Only requests >= 2.32.2 is supported')
|
||||
+if requests.__build__ < 0x023100:
|
||||
+ raise ImportError("Only requests >= 2.31.0 is supported")
|
||||
|
||||
import requests.adapters
|
||||
import requests.utils
|
||||
@@ -62,13 +63,14 @@
|
||||
from ..socks import ProxyError as SocksProxyError
|
||||
|
||||
SUPPORTED_ENCODINGS = [
|
||||
- 'gzip', 'deflate',
|
||||
+ "gzip",
|
||||
+ "deflate",
|
||||
]
|
||||
|
||||
if brotli is not None:
|
||||
- SUPPORTED_ENCODINGS.append('br')
|
||||
+ SUPPORTED_ENCODINGS.append("br")
|
||||
|
||||
-'''
|
||||
+"""
|
||||
Override urllib3's behavior to not convert lower-case percent-encoded characters
|
||||
to upper-case during url normalization process.
|
||||
|
||||
@@ -83,7 +85,7 @@
|
||||
|
||||
1: https://tools.ietf.org/html/rfc3986#section-2.1
|
||||
2: https://github.com/streamlink/streamlink/pull/4003
|
||||
-'''
|
||||
+"""
|
||||
|
||||
|
||||
class Urllib3PercentREOverride:
|
||||
@@ -102,14 +104,19 @@ def subn(self, repl, string, *args, **kwargs):
|
||||
# https://github.com/urllib3/urllib3/commit/a2697e7c6b275f05879b60f593c5854a816489f0
|
||||
import urllib3.util.url
|
||||
|
||||
-if hasattr(urllib3.util.url, 'PERCENT_RE'):
|
||||
+if hasattr(urllib3.util.url, "PERCENT_RE"):
|
||||
urllib3.util.url.PERCENT_RE = Urllib3PercentREOverride(urllib3.util.url.PERCENT_RE)
|
||||
-elif hasattr(urllib3.util.url, '_PERCENT_RE'): # urllib3 >= 2.0.0
|
||||
- urllib3.util.url._PERCENT_RE = Urllib3PercentREOverride(urllib3.util.url._PERCENT_RE)
|
||||
+elif hasattr(urllib3.util.url, "_PERCENT_RE"): # urllib3 >= 2.0.0
|
||||
+ urllib3.util.url._PERCENT_RE = Urllib3PercentREOverride(
|
||||
+ urllib3.util.url._PERCENT_RE
|
||||
+ )
|
||||
else:
|
||||
- warnings.warn('Failed to patch PERCENT_RE in urllib3 (does the attribute exist?)' + bug_reports_message())
|
||||
+ warnings.warn(
|
||||
+ "Failed to patch PERCENT_RE in urllib3 (does the attribute exist?)"
|
||||
+ + bug_reports_message()
|
||||
+ )
|
||||
|
||||
-'''
|
||||
+"""
|
||||
Workaround for issue in urllib.util.ssl_.py: ssl_wrap_context does not pass
|
||||
server_hostname to SSLContext.wrap_socket if server_hostname is an IP,
|
||||
however this is an issue because we set check_hostname to True in our SSLContext.
|
||||
@@ -118,7 +125,7 @@ def subn(self, repl, string, *args, **kwargs):
|
||||
|
||||
This has been fixed in urllib3 2.0+.
|
||||
See: https://github.com/urllib3/urllib3/issues/517
|
||||
-'''
|
||||
+"""
|
||||
|
||||
if urllib3_version < (2, 0, 0):
|
||||
with contextlib.suppress(Exception):
|
||||
@@ -134,8 +141,12 @@ def subn(self, repl, string, *args, **kwargs):
|
||||
class RequestsResponseAdapter(Response):
|
||||
def __init__(self, res: requests.models.Response):
|
||||
super().__init__(
|
||||
- fp=res.raw, headers=res.headers, url=res.url,
|
||||
- status=res.status_code, reason=res.reason)
|
||||
+ fp=res.raw,
|
||||
+ headers=res.headers,
|
||||
+ url=res.url,
|
||||
+ status=res.status_code,
|
||||
+ reason=res.reason,
|
||||
+ )
|
||||
|
||||
self._requests_response = res
|
||||
|
||||
@@ -152,12 +163,21 @@ def read(self, amt: int | None = None):
|
||||
# IncompleteRead is always contained within ProtocolError
|
||||
# See urllib3.response.HTTPResponse._error_catcher()
|
||||
ir_err = next(
|
||||
- (err for err in (e.__context__, e.__cause__, *variadic(e.args))
|
||||
- if isinstance(err, http.client.IncompleteRead)), None)
|
||||
+ (
|
||||
+ err
|
||||
+ for err in (e.__context__, e.__cause__, *variadic(e.args))
|
||||
+ if isinstance(err, http.client.IncompleteRead)
|
||||
+ ),
|
||||
+ None,
|
||||
+ )
|
||||
if ir_err is not None:
|
||||
# `urllib3.exceptions.IncompleteRead` is subclass of `http.client.IncompleteRead`
|
||||
# but uses an `int` for its `partial` property.
|
||||
- partial = ir_err.partial if isinstance(ir_err.partial, int) else len(ir_err.partial)
|
||||
+ partial = (
|
||||
+ ir_err.partial
|
||||
+ if isinstance(ir_err.partial, int)
|
||||
+ else len(ir_err.partial)
|
||||
+ )
|
||||
raise IncompleteRead(partial=partial, expected=ir_err.expected) from e
|
||||
raise TransportError(cause=e) from e
|
||||
|
||||
@@ -167,12 +187,14 @@ def read(self, amt: int | None = None):
|
||||
|
||||
|
||||
class RequestsHTTPAdapter(requests.adapters.HTTPAdapter):
|
||||
- def __init__(self, ssl_context=None, proxy_ssl_context=None, source_address=None, **kwargs):
|
||||
+ def __init__(
|
||||
+ self, ssl_context=None, proxy_ssl_context=None, source_address=None, **kwargs
|
||||
+ ):
|
||||
self._pm_args = {}
|
||||
if ssl_context:
|
||||
- self._pm_args['ssl_context'] = ssl_context
|
||||
+ self._pm_args["ssl_context"] = ssl_context
|
||||
if source_address:
|
||||
- self._pm_args['source_address'] = (source_address, 0)
|
||||
+ self._pm_args["source_address"] = (source_address, 0)
|
||||
self._proxy_ssl_context = proxy_ssl_context or ssl_context
|
||||
super().__init__(**kwargs)
|
||||
|
||||
@@ -181,14 +203,21 @@ def init_poolmanager(self, *args, **kwargs):
|
||||
|
||||
def proxy_manager_for(self, proxy, **proxy_kwargs):
|
||||
extra_kwargs = {}
|
||||
- if not proxy.lower().startswith('socks') and self._proxy_ssl_context:
|
||||
- extra_kwargs['proxy_ssl_context'] = self._proxy_ssl_context
|
||||
- return super().proxy_manager_for(proxy, **proxy_kwargs, **self._pm_args, **extra_kwargs)
|
||||
+ if not proxy.lower().startswith("socks") and self._proxy_ssl_context:
|
||||
+ extra_kwargs["proxy_ssl_context"] = self._proxy_ssl_context
|
||||
+ return super().proxy_manager_for(
|
||||
+ proxy, **proxy_kwargs, **self._pm_args, **extra_kwargs
|
||||
+ )
|
||||
|
||||
# Skip `requests` internal verification; we use our own SSLContext
|
||||
+ # requests 2.31.0+
|
||||
def cert_verify(*args, **kwargs):
|
||||
pass
|
||||
|
||||
+ # requests 2.31.0-2.32.1
|
||||
+ def _get_connection(self, request, *_, proxies=None, **__):
|
||||
+ return self.get_connection(request.url, proxies)
|
||||
+
|
||||
# requests 2.32.2+: Reimplementation without `_urllib3_request_context`
|
||||
def get_connection_with_tls_context(self, request, verify, proxies=None, cert=None):
|
||||
url = urllib3.util.parse_url(request.url).url
|
||||
@@ -222,7 +251,7 @@ def rebuild_method(self, prepared_request, response):
|
||||
def rebuild_auth(self, prepared_request, response):
|
||||
# HACK: undo status code change from rebuild_method, if applicable.
|
||||
# rebuild_auth runs after requests would remove headers/body based on status code
|
||||
- if hasattr(response, '_real_status_code'):
|
||||
+ if hasattr(response, "_real_status_code"):
|
||||
response.status_code = response._real_status_code
|
||||
del response._real_status_code
|
||||
return super().rebuild_auth(prepared_request, response)
|
||||
@@ -256,23 +285,30 @@ def emit(self, record):
|
||||
|
||||
@register_rh
|
||||
class RequestsRH(RequestHandler, InstanceStoreMixin):
|
||||
-
|
||||
"""Requests RequestHandler
|
||||
https://github.com/psf/requests
|
||||
"""
|
||||
- _SUPPORTED_URL_SCHEMES = ('http', 'https')
|
||||
+
|
||||
+ _SUPPORTED_URL_SCHEMES = ("http", "https")
|
||||
_SUPPORTED_ENCODINGS = tuple(SUPPORTED_ENCODINGS)
|
||||
- _SUPPORTED_PROXY_SCHEMES = ('http', 'https', 'socks4', 'socks4a', 'socks5', 'socks5h')
|
||||
+ _SUPPORTED_PROXY_SCHEMES = (
|
||||
+ "http",
|
||||
+ "https",
|
||||
+ "socks4",
|
||||
+ "socks4a",
|
||||
+ "socks5",
|
||||
+ "socks5h",
|
||||
+ )
|
||||
_SUPPORTED_FEATURES = (Features.NO_PROXY, Features.ALL_PROXY)
|
||||
- RH_NAME = 'requests'
|
||||
+ RH_NAME = "requests"
|
||||
|
||||
def __init__(self, *args, **kwargs):
|
||||
super().__init__(*args, **kwargs)
|
||||
|
||||
# Forward urllib3 debug messages to our logger
|
||||
- logger = logging.getLogger('urllib3')
|
||||
+ logger = logging.getLogger("urllib3")
|
||||
self.__logging_handler = Urllib3LoggingHandler(logger=self._logger)
|
||||
- self.__logging_handler.setFormatter(logging.Formatter('requests: %(message)s'))
|
||||
+ self.__logging_handler.setFormatter(logging.Formatter("requests: %(message)s"))
|
||||
self.__logging_handler.addFilter(Urllib3LoggingFilter())
|
||||
logger.addHandler(self.__logging_handler)
|
||||
# TODO: Use a logger filter to suppress pool reuse warning instead
|
||||
@@ -291,14 +327,14 @@ def close(self):
|
||||
self._clear_instances()
|
||||
# Remove the logging handler that contains a reference to our logger
|
||||
# See: https://github.com/yt-dlp/yt-dlp/issues/8922
|
||||
- logging.getLogger('urllib3').removeHandler(self.__logging_handler)
|
||||
+ logging.getLogger("urllib3").removeHandler(self.__logging_handler)
|
||||
|
||||
def _check_extensions(self, extensions):
|
||||
super()._check_extensions(extensions)
|
||||
- extensions.pop('cookiejar', None)
|
||||
- extensions.pop('timeout', None)
|
||||
- extensions.pop('legacy_ssl', None)
|
||||
- extensions.pop('keep_header_casing', None)
|
||||
+ extensions.pop("cookiejar", None)
|
||||
+ extensions.pop("timeout", None)
|
||||
+ extensions.pop("legacy_ssl", None)
|
||||
+ extensions.pop("keep_header_casing", None)
|
||||
|
||||
def _create_instance(self, cookiejar, legacy_ssl_support=None):
|
||||
session = RequestsSession()
|
||||
@@ -308,9 +344,11 @@ def _create_instance(self, cookiejar, legacy_ssl_support=None):
|
||||
max_retries=urllib3.util.retry.Retry(False),
|
||||
)
|
||||
session.adapters.clear()
|
||||
- session.headers = requests.models.CaseInsensitiveDict({'Connection': 'keep-alive'})
|
||||
- session.mount('https://', http_adapter)
|
||||
- session.mount('http://', http_adapter)
|
||||
+ session.headers = requests.models.CaseInsensitiveDict(
|
||||
+ {"Connection": "keep-alive"}
|
||||
+ )
|
||||
+ session.mount("https://", http_adapter)
|
||||
+ session.mount("http://", http_adapter)
|
||||
session.cookies = cookiejar
|
||||
session.trust_env = False # no need, we already load proxies from env
|
||||
return session
|
||||
@@ -325,7 +363,7 @@ def _send(self, request):
|
||||
|
||||
session = self._get_instance(
|
||||
cookiejar=self._get_cookiejar(request),
|
||||
- legacy_ssl_support=request.extensions.get('legacy_ssl'),
|
||||
+ legacy_ssl_support=request.extensions.get("legacy_ssl"),
|
||||
)
|
||||
|
||||
try:
|
||||
@@ -345,7 +383,7 @@ def _send(self, request):
|
||||
requests_res = e.response
|
||||
|
||||
except requests.exceptions.SSLError as e:
|
||||
- if 'CERTIFICATE_VERIFY_FAILED' in str(e):
|
||||
+ if "CERTIFICATE_VERIFY_FAILED" in str(e):
|
||||
raise CertificateVerifyError(cause=e) from e
|
||||
raise SSLError(cause=e) from e
|
||||
|
||||
@@ -378,26 +416,33 @@ def requests_preference(rh, request):
|
||||
|
||||
# Use our socks proxy implementation with requests to avoid an extra dependency.
|
||||
class SocksHTTPConnection(urllib3.connection.HTTPConnection):
|
||||
- def __init__(self, _socks_options, *args, **kwargs): # must use _socks_options to pass PoolKey checks
|
||||
+ def __init__(
|
||||
+ self, _socks_options, *args, **kwargs
|
||||
+ ): # must use _socks_options to pass PoolKey checks
|
||||
self._proxy_args = _socks_options
|
||||
super().__init__(*args, **kwargs)
|
||||
|
||||
def _new_conn(self):
|
||||
try:
|
||||
return create_connection(
|
||||
- address=(self._proxy_args['addr'], self._proxy_args['port']),
|
||||
+ address=(self._proxy_args["addr"], self._proxy_args["port"]),
|
||||
timeout=self.timeout,
|
||||
source_address=self.source_address,
|
||||
_create_socket_func=functools.partial(
|
||||
- create_socks_proxy_socket, (self.host, self.port), self._proxy_args))
|
||||
+ create_socks_proxy_socket, (self.host, self.port), self._proxy_args
|
||||
+ ),
|
||||
+ )
|
||||
except (socket.timeout, TimeoutError) as e:
|
||||
raise urllib3.exceptions.ConnectTimeoutError(
|
||||
- self, f'Connection to {self.host} timed out. (connect timeout={self.timeout})') from e
|
||||
+ self,
|
||||
+ f"Connection to {self.host} timed out. (connect timeout={self.timeout})",
|
||||
+ ) from e
|
||||
except SocksProxyError as e:
|
||||
raise urllib3.exceptions.ProxyError(str(e), e) from e
|
||||
except OSError as e:
|
||||
raise urllib3.exceptions.NewConnectionError(
|
||||
- self, f'Failed to establish a new connection: {e}') from e
|
||||
+ self, f"Failed to establish a new connection: {e}"
|
||||
+ ) from e
|
||||
|
||||
|
||||
class SocksHTTPSConnection(SocksHTTPConnection, urllib3.connection.HTTPSConnection):
|
||||
@@ -414,12 +459,20 @@ class SocksHTTPSConnectionPool(urllib3.HTTPSConnectionPool):
|
||||
|
||||
class SocksProxyManager(urllib3.PoolManager):
|
||||
|
||||
- def __init__(self, socks_proxy, username=None, password=None, num_pools=10, headers=None, **connection_pool_kw):
|
||||
- connection_pool_kw['_socks_options'] = make_socks_proxy_opts(socks_proxy)
|
||||
+ def __init__(
|
||||
+ self,
|
||||
+ socks_proxy,
|
||||
+ username=None,
|
||||
+ password=None,
|
||||
+ num_pools=10,
|
||||
+ headers=None,
|
||||
+ **connection_pool_kw,
|
||||
+ ):
|
||||
+ connection_pool_kw["_socks_options"] = make_socks_proxy_opts(socks_proxy)
|
||||
super().__init__(num_pools, headers, **connection_pool_kw)
|
||||
self.pool_classes_by_scheme = {
|
||||
- 'http': SocksHTTPConnectionPool,
|
||||
- 'https': SocksHTTPSConnectionPool,
|
||||
+ "http": SocksHTTPConnectionPool,
|
||||
+ "https": SocksHTTPSConnectionPool,
|
||||
}
|
||||
|
||||
|
||||
--
|
||||
2.48.1
|
||||
|
||||
180
changelog
Normal file
180
changelog
Normal file
|
|
@ -0,0 +1,180 @@
|
|||
* Mon Nov 18 2024 Mikel Olasagasti Uranga <mikel@olasagasti.info> - 2024.11.18-1
|
||||
- Update to 2024.11.18. Fixes rhbz#2326919
|
||||
|
||||
* Tue Nov 05 2024 Mikel Olasagasti Uranga <mikel@olasagasti.info> - 2024.11.04-1
|
||||
- Update to 2024.11.04. Fixes rhbz#2323783
|
||||
|
||||
* Wed Oct 23 2024 Mikel Olasagasti Uranga <mikel@olasagasti.info> - 2024.10.22-1
|
||||
- Update to 2024.10.22. Fixes rhbz#2321221
|
||||
|
||||
* Tue Oct 08 2024 Maxwell G <maxwell@gtmx.me> - 2024.10.07-1
|
||||
- Update to 2024.10.07.
|
||||
|
||||
* Sat Sep 28 2024 Maxwell G <maxwell@gtmx.me> - 2024.09.27-1
|
||||
- Update to 2024.09.27.
|
||||
|
||||
* Mon Aug 12 2024 Maxwell G <maxwell@gtmx.me> - 2024.08.06-1
|
||||
- Update to 2024.08.06. Fixes rhbz#2303069.
|
||||
|
||||
* Sat Aug 03 2024 Mikel Olasagasti Uranga <mikel@olasagasti.info> - 2024.08.01-1
|
||||
- Update to 2024.08.01. Fixes rhbz#2302522
|
||||
|
||||
* Fri Jul 26 2024 Mikel Olasagasti Uranga <mikel@olasagasti.info> - 2024.07.25-1
|
||||
- Update to 2024.07.25. Fixes rhbz#2300087
|
||||
|
||||
* Wed Jul 24 2024 Mikel Olasagasti Uranga <mikel@olasagasti.info> - 2024.07.16-1
|
||||
- Update to 2024.07.16. Fixes rhbz#2298550
|
||||
|
||||
* Sat Jul 20 2024 Fedora Release Engineering <releng@fedoraproject.org> - 2024.07.09-2
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild
|
||||
|
||||
* Thu Jul 11 2024 Mikel Olasagasti Uranga <mikel@olasagasti.info> - 2024.07.09-1
|
||||
- Update to 2024.07.09. Fixes rhbz#2297344
|
||||
|
||||
* Mon Jul 08 2024 Mikel Olasagasti Uranga <mikel@olasagasti.info> - 2024.07.07-1
|
||||
- Update to 2024.07.07. Fixes rhbz#2296356
|
||||
|
||||
* Thu Jul 04 2024 Mikel Olasagasti Uranga <mikel@olasagasti.info> - 2024.07.02-1
|
||||
- Update to 2024.07.02. Fixes rhbz#2295769
|
||||
|
||||
* Fri Jun 07 2024 Python Maint <python-maint@redhat.com> - 2024.05.27-2
|
||||
- Rebuilt for Python 3.13
|
||||
|
||||
* Wed May 29 2024 Mikel Olasagasti Uranga <mikel@olasagasti.info> - 2024.05.27-1
|
||||
- Update to 2024.05.27. Fixes rhbz#2283578.
|
||||
|
||||
* Mon May 27 2024 Mikel Olasagasti Uranga <mikel@olasagasti.info> - 2024.05.26-1
|
||||
- Update to 2024.05.26. Fixes rhbz#2274266.
|
||||
|
||||
* Wed Apr 10 2024 Maxwell G <maxwell@gtmx.me> - 2024.04.09-1
|
||||
- Update to 2024.04.09.
|
||||
|
||||
* Wed Mar 13 2024 Maxwell G <maxwell@gtmx.me> - 2024.03.10-1
|
||||
- Update to 2024.03.10. Fixes rhbz#2268944.
|
||||
|
||||
* Sat Jan 27 2024 Fedora Release Engineering <releng@fedoraproject.org> - 2023.12.30-2
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
|
||||
|
||||
* Wed Jan 3 2024 Maxwell G <maxwell@gtmx.me> - 2023.12.30-1
|
||||
- Update to 2023.12.30. Fixes rhbz#2244200.
|
||||
|
||||
* Wed Oct 11 2023 Marcus Müller <marcus_fedora@baseband.digital> - 2023.10.07-1
|
||||
- Update to 2023.10.07.
|
||||
- Fixes rhbz#2243274
|
||||
- Fixes rhbz#2240465
|
||||
|
||||
* Sat Jul 22 2023 Fedora Release Engineering <releng@fedoraproject.org> - 2023.07.06-2
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild
|
||||
|
||||
* Fri Jul 07 2023 Maxwell G <maxwell@gtmx.me> - 2023.07.06-1
|
||||
- Update to 2023.07.06.
|
||||
- Mitigates CVE-2023-35934 / GHSA-v8mc-9377-rwjj
|
||||
|
||||
* Wed Jul 05 2023 Maxwell G <maxwell@gtmx.me> - 2023.06.22-1
|
||||
- Update to 2023.06.22. Fixes rhbz#2216612.
|
||||
|
||||
* Thu Jun 22 2023 Maxwell G <maxwell@gtmx.me> - 2023.06.21-1
|
||||
- Update to 2023.06.21. Fixes rhbz#2216612.
|
||||
|
||||
* Thu Jun 15 2023 Python Maint <python-maint@redhat.com> - 2023.03.04-2
|
||||
- Rebuilt for Python 3.12
|
||||
|
||||
* Mon Mar 06 2023 Maxwell G <maxwell@gtmx.me> - 2023.03.04-1
|
||||
- Update to 2023.03.04. Fixes rhbz#2175395.
|
||||
|
||||
* Fri Feb 17 2023 Maxwell G <maxwell@gtmx.me> - 2023.02.17-1
|
||||
- Update to 2023.02.17.
|
||||
|
||||
* Sat Jan 21 2023 Fedora Release Engineering <releng@fedoraproject.org> - 2023.01.06-2
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild
|
||||
|
||||
* Tue Jan 10 2023 Maxwell G <gotmax@e.email> - 2023.01.06-1
|
||||
- Update to 2023.01.06. Fixes rhbz#2157879.
|
||||
|
||||
* Mon Nov 14 2022 Maxwell G <gotmax@e.email> - 2022.11.11-1
|
||||
- Update to 2022.11.11. Fixes rhbz#2142417.
|
||||
|
||||
* Sat Oct 08 2022 Maxwell G <gotmax@e.email> - 2022.10.04-1
|
||||
- Update to 2022.10.04. Fixes rhbz#2132726.
|
||||
|
||||
* Fri Sep 02 2022 Maxwell G <gotmax@e.email> - 2022.09.01-1
|
||||
- Update to 2022.09.01. Fixes rhbz#2123442.
|
||||
|
||||
* Fri Aug 19 2022 Maxwell G <gotmax@e.email> - 2022.08.19-1
|
||||
- Update to 2022.08.19. Fixes rhbz#2118224.
|
||||
|
||||
* Tue Aug 09 2022 Maxwell G <gotmax@e.email> - 2022.08.08-1
|
||||
- Update to 2022.08.08.
|
||||
|
||||
* Sat Jul 23 2022 Fedora Release Engineering <releng@fedoraproject.org> - 2022.06.29-3
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild
|
||||
|
||||
* Mon Jul 04 2022 Maxwell G <gotmax@e.email> - 2022.06.29-2
|
||||
- Fix shell completions subpackages
|
||||
|
||||
* Mon Jul 04 2022 Maxwell G <gotmax@e.email> - 2022.06.29-1
|
||||
- Update to 2022.06.29. Fixes rhbz#2102238.
|
||||
|
||||
* Thu Jun 23 2022 Maxwell G <gotmax@e.email> - 2022.06.22.1-1
|
||||
- Update to 2022.06.22.1. Fixes rhbz#2100019.
|
||||
|
||||
* Fri Jun 17 2022 Maxwell G <gotmax@e.email> - 2022.05.18-3
|
||||
- Fix gating configuration
|
||||
|
||||
* Thu Jun 16 2022 Python Maint <python-maint@redhat.com> - 2022.05.18-2
|
||||
- Rebuilt for Python 3.11
|
||||
|
||||
* Tue May 24 2022 Maxwell G <gotmax@e.email> - 2022.05.18-1
|
||||
- Update to 2022.05.18. Fixes rhbz#2088564.
|
||||
|
||||
* Fri Apr 08 2022 Maxwell G <gotmax@e.email> - 2022.04.08-1
|
||||
- Update to 2022.04.08. Fixes rhbz#2073359.
|
||||
|
||||
* Sat Mar 12 2022 Artem Polishchuk <ego.cordatus@gmail.com> - 2022.03.08.1-2
|
||||
- build: Make ffmpeg and ffprobe conditional deps for >= f36 only
|
||||
|
||||
* Thu Mar 10 2022 Maxwell G <gotmax@e.email> - 2022.03.08.1-1
|
||||
- Update to 2022.03.08.1. Fixes rhbz#2061973.
|
||||
|
||||
* Mon Mar 07 2022 Maxwell G <gotmax@e.email> - 2022.02.04-2
|
||||
- Add weak dependency on ffmpeg and ffprobe.
|
||||
- Make shell-completion subpackages optional again.
|
||||
|
||||
* Fri Feb 04 2022 Maxwell G <gotmax@e.email> - 2022.2.4-1
|
||||
- Update to 2022.2.4. Fixes rhbz#2050497.
|
||||
|
||||
* Mon Jan 24 2022 Maxwell G <gotmax@e.email> - 2022.01.21-1
|
||||
- Update to 2022.01.21.
|
||||
|
||||
* Sat Jan 22 2022 Fedora Release Engineering <releng@fedoraproject.org> - 2021.12.27-2
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild
|
||||
|
||||
* Mon Dec 27 2021 Maxwell G <gotmax@e.email> - 2021.12.27-1
|
||||
- Update to 2021.12.27.
|
||||
|
||||
* Sun Dec 26 2021 Maxwell G <gotmax@e.email> - 2021.12.25-1
|
||||
- Update to 2021.12.25.
|
||||
|
||||
* Wed Dec 01 2021 Maxwell G <gotmax@e.email> - 2021.12.01-1
|
||||
- Update to 2021.12.01.
|
||||
|
||||
* Tue Nov 9 2021 Maxwell G <gotmax@e.email> - 2021.11.10.1-1
|
||||
- Update to 2021.11.10.1.
|
||||
|
||||
* Tue Nov 9 2021 Maxwell G <gotmax@e.email> - 2021.10.22-2
|
||||
- Skip installing unnecessary tox dependencies
|
||||
- Fix shell-completion subpackages
|
||||
- Only package README.md; don't generate extra README.txt
|
||||
|
||||
* Sat Oct 23 2021 Maxwell G <gotmax@e.email> - 2021.10.22-1
|
||||
- Update to 2021.10.22
|
||||
|
||||
* Sun Oct 10 2021 Maxwell G <gotmax@e.email> - 2021.10.10-1
|
||||
- Mark LICENSE with %%license instead of %%doc
|
||||
- Update to 2021.10.10
|
||||
- Fix non-executable-script rpmlint error
|
||||
- Use `python3dist(NAME)` for dependencies
|
||||
- Fix rpm-buildroot-usage rpmlint error
|
||||
|
||||
* Sat Oct 9 2021 Maxwell G <gotmax@e.email> - 2021.10.09-1
|
||||
- Initial package
|
||||
2
sources
2
sources
|
|
@ -1 +1 @@
|
|||
SHA512 (yt-dlp-2024.09.27.tar.gz) = 8c518aae18d049495def31dad1e81374ff7a2f1b136356c574d97643c6bbde37f757f74d77c519a8782c4d69668db80f367a21424923f249e82491c14f4880e8
|
||||
SHA512 (yt-dlp-2025.03.31.tar.gz) = 3ac5e5d13e3d1d4965ec398901bea158f451e0aed3600dace706e9e1a8f89580349fe1249c76fe097966c8254eb1cc526075138fc16ea29cf933ab0019cfaf27
|
||||
|
|
|
|||
|
|
@ -1,77 +0,0 @@
|
|||
diff --git a/pyproject.toml b/pyproject.toml
|
||||
index d5480e1c6d73..fe6894a42838 100644
|
||||
--- a/pyproject.toml
|
||||
+++ b/pyproject.toml
|
||||
@@ -49,7 +49,7 @@ dependencies = [
|
||||
"pycryptodomex",
|
||||
"requests>=2.32.2,<3",
|
||||
"urllib3>=1.26.17,<3",
|
||||
- "websockets>=12.0",
|
||||
+ "websockets>=13.0",
|
||||
]
|
||||
|
||||
[project.optional-dependencies]
|
||||
diff --git a/test/test_websockets.py b/test/test_websockets.py
|
||||
index 43f20ac655ad..06112cc0b8fb 100644
|
||||
--- a/test/test_websockets.py
|
||||
+++ b/test/test_websockets.py
|
||||
@@ -88,7 +88,7 @@ def create_wss_websocket_server():
|
||||
certfn = os.path.join(TEST_DIR, 'testcert.pem')
|
||||
sslctx = ssl.SSLContext(ssl.PROTOCOL_TLS_SERVER)
|
||||
sslctx.load_cert_chain(certfn, None)
|
||||
- return create_websocket_server(ssl_context=sslctx)
|
||||
+ return create_websocket_server(ssl=sslctx)
|
||||
|
||||
|
||||
MTLS_CERT_DIR = os.path.join(TEST_DIR, 'testdata', 'certificate')
|
||||
@@ -103,7 +103,7 @@ def create_mtls_wss_websocket_server():
|
||||
sslctx.load_verify_locations(cafile=cacertfn)
|
||||
sslctx.load_cert_chain(certfn, None)
|
||||
|
||||
- return create_websocket_server(ssl_context=sslctx)
|
||||
+ return create_websocket_server(ssl=sslctx)
|
||||
|
||||
|
||||
def create_legacy_wss_websocket_server():
|
||||
@@ -112,7 +112,7 @@ def create_legacy_wss_websocket_server():
|
||||
sslctx.maximum_version = ssl.TLSVersion.TLSv1_2
|
||||
sslctx.set_ciphers('SHA1:AESCCM:aDSS:eNULL:aNULL')
|
||||
sslctx.load_cert_chain(certfn, None)
|
||||
- return create_websocket_server(ssl_context=sslctx)
|
||||
+ return create_websocket_server(ssl=sslctx)
|
||||
|
||||
|
||||
def ws_validate_and_send(rh, req):
|
||||
@@ -139,7 +139,7 @@ def setup_class(cls):
|
||||
cls.wss_thread, cls.wss_port = create_wss_websocket_server()
|
||||
cls.wss_base_url = f'wss://127.0.0.1:{cls.wss_port}'
|
||||
|
||||
- cls.bad_wss_thread, cls.bad_wss_port = create_websocket_server(ssl_context=ssl.SSLContext(ssl.PROTOCOL_TLS_SERVER))
|
||||
+ cls.bad_wss_thread, cls.bad_wss_port = create_websocket_server(ssl=ssl.SSLContext(ssl.PROTOCOL_TLS_SERVER))
|
||||
cls.bad_wss_host = f'wss://127.0.0.1:{cls.bad_wss_port}'
|
||||
|
||||
cls.mtls_wss_thread, cls.mtls_wss_port = create_mtls_wss_websocket_server()
|
||||
diff --git a/yt_dlp/networking/_websockets.py b/yt_dlp/networking/_websockets.py
|
||||
index 492af1154de7..21b765b91dc8 100644
|
||||
--- a/yt_dlp/networking/_websockets.py
|
||||
+++ b/yt_dlp/networking/_websockets.py
|
||||
@@ -47,10 +47,7 @@
|
||||
# 2: "AttributeError: 'ClientConnection' object has no attribute 'recv_events_exc'. Did you mean: 'recv_events'?"
|
||||
import websockets.sync.connection # isort: split
|
||||
with contextlib.suppress(Exception):
|
||||
- # > 12.0
|
||||
websockets.sync.connection.Connection.recv_exc = None
|
||||
- # 12.0
|
||||
- websockets.sync.connection.Connection.recv_events_exc = None
|
||||
|
||||
|
||||
class WebsocketsResponseAdapter(WebSocketResponse):
|
||||
@@ -162,7 +159,7 @@ def _send(self, request):
|
||||
additional_headers=headers,
|
||||
open_timeout=timeout,
|
||||
user_agent_header=None,
|
||||
- ssl_context=ssl_ctx if wsuri.secure else None,
|
||||
+ ssl=ssl_ctx if wsuri.secure else None,
|
||||
close_timeout=0, # not ideal, but prevents yt-dlp hanging
|
||||
)
|
||||
return WebsocketsResponseAdapter(conn, url=request.url)
|
||||
204
yt-dlp.spec
204
yt-dlp.spec
|
|
@ -7,8 +7,8 @@
|
|||
%bcond_without tests
|
||||
|
||||
Name: yt-dlp
|
||||
Version: 2024.09.27
|
||||
Release: 1%{?dist}
|
||||
Version: 2025.03.31
|
||||
Release: %autorelease
|
||||
Summary: A command-line program to download videos from online video platforms
|
||||
|
||||
License: Unlicense
|
||||
|
|
@ -20,15 +20,18 @@ Source: yt-dlp.spec.license
|
|||
# https://github.com/yt-dlp/yt-dlp/commit/6f9e6537434562d513d0c9b68ced8a61ade94a64
|
||||
# [rh:websockets] Upgrade websockets to 13.0 (#10815)
|
||||
# Revert this patch for compatibility with older Fedora versions
|
||||
Patch1000: websockets-13.patch
|
||||
# This patch is applied conditionally to Fedora <= 41
|
||||
Patch1000: 0001-Revert-rh-websockets-Upgrade-websockets-to-13.0-1081.patch
|
||||
|
||||
# Revert "[rh:requests] Bump minimum `requests` version to 2.32.2 (#10079)"
|
||||
# Revert this patch for compatibility with older Fedora versions
|
||||
# This patch is applied conditionally to Fedora <= 40
|
||||
Patch1001: 0002-Revert-rh-requests-Bump-minimum-requests-version-to-.patch
|
||||
|
||||
BuildArch: noarch
|
||||
|
||||
BuildRequires: python3-devel
|
||||
|
||||
# Needed for %%prep
|
||||
BuildRequires: tomcli
|
||||
|
||||
%if %{with tests}
|
||||
# Needed for %%check
|
||||
BuildRequires: %{py3_dist pytest}
|
||||
|
|
@ -38,6 +41,8 @@ BuildRequires: %{py3_dist pytest}
|
|||
BuildRequires: pandoc
|
||||
BuildRequires: make
|
||||
|
||||
Requires: yt-dlp+default = %{?epoch:%{epoch}:}%{version}-%{release}
|
||||
|
||||
# ffmpeg-free is now available in Fedora.
|
||||
Recommends: /usr/bin/ffmpeg
|
||||
Recommends: /usr/bin/ffprobe
|
||||
|
|
@ -80,19 +85,21 @@ Fish command line completion support for %{name}.
|
|||
|
||||
%prep
|
||||
%autosetup -N
|
||||
%if %{defined fedora} && %{fedora} <= 41
|
||||
%autopatch -M 999 -p1
|
||||
%if %{defined fedora} && 0%{?fedora} <= 41
|
||||
# Revert patch for compatibility with older websockets
|
||||
%patch -P1000 -p1 -R
|
||||
%autopatch 1000 -p1
|
||||
%endif
|
||||
%if %{defined fedora} && 0%{?fedora} <= 40
|
||||
# Revert patch for compatibility with older requests
|
||||
%autopatch 1001 -p1
|
||||
%endif
|
||||
|
||||
# Remove unnecessary shebangs
|
||||
find -type f ! -executable -name '*.py' -print -exec sed -i -e '1{\@^#!.*@d}' '{}' +
|
||||
# Relax version constraints
|
||||
tomcli-set pyproject.toml lists replace project.dependencies \
|
||||
'(requests|urllib3|websockets)>=.*' '\1'
|
||||
|
||||
%generate_buildrequires
|
||||
%pyproject_buildrequires -r
|
||||
%pyproject_buildrequires -x default,secretstorage
|
||||
|
||||
%build
|
||||
# Docs and shell completions
|
||||
|
|
@ -108,7 +115,7 @@ make yt-dlp.1 completion-bash completion-zsh completion-fish
|
|||
%check
|
||||
%if %{with tests}
|
||||
# See https://github.com/yt-dlp/yt-dlp/blob/master/devscripts/run_tests.sh
|
||||
%pytest -k "not download"
|
||||
%pytest -k "not download and not test_verify_cert[Websockets]"
|
||||
%endif
|
||||
|
||||
%files -f %{pyproject_files}
|
||||
|
|
@ -126,172 +133,7 @@ make yt-dlp.1 completion-bash completion-zsh completion-fish
|
|||
%files fish-completion
|
||||
%{fish_completions_dir}/%{name}.fish
|
||||
|
||||
%pyproject_extras_subpkg -n yt-dlp default secretstorage
|
||||
|
||||
%changelog
|
||||
* Sat Sep 28 2024 Maxwell G <maxwell@gtmx.me> - 2024.09.27-1
|
||||
- Update to 2024.09.27.
|
||||
|
||||
* Mon Aug 12 2024 Maxwell G <maxwell@gtmx.me> - 2024.08.06-1
|
||||
- Update to 2024.08.06. Fixes rhbz#2303069.
|
||||
|
||||
* Sat Aug 03 2024 Mikel Olasagasti Uranga <mikel@olasagasti.info> - 2024.08.01-1
|
||||
- Update to 2024.08.01. Fixes rhbz#2302522
|
||||
|
||||
* Fri Jul 26 2024 Mikel Olasagasti Uranga <mikel@olasagasti.info> - 2024.07.25-1
|
||||
- Update to 2024.07.25. Fixes rhbz#2300087
|
||||
|
||||
* Wed Jul 24 2024 Mikel Olasagasti Uranga <mikel@olasagasti.info> - 2024.07.16-1
|
||||
- Update to 2024.07.16. Fixes rhbz#2298550
|
||||
|
||||
* Sat Jul 20 2024 Fedora Release Engineering <releng@fedoraproject.org> - 2024.07.09-2
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild
|
||||
|
||||
* Thu Jul 11 2024 Mikel Olasagasti Uranga <mikel@olasagasti.info> - 2024.07.09-1
|
||||
- Update to 2024.07.09. Fixes rhbz#2297344
|
||||
|
||||
* Mon Jul 08 2024 Mikel Olasagasti Uranga <mikel@olasagasti.info> - 2024.07.07-1
|
||||
- Update to 2024.07.07. Fixes rhbz#2296356
|
||||
|
||||
* Thu Jul 04 2024 Mikel Olasagasti Uranga <mikel@olasagasti.info> - 2024.07.02-1
|
||||
- Update to 2024.07.02. Fixes rhbz#2295769
|
||||
|
||||
* Fri Jun 07 2024 Python Maint <python-maint@redhat.com> - 2024.05.27-2
|
||||
- Rebuilt for Python 3.13
|
||||
|
||||
* Wed May 29 2024 Mikel Olasagasti Uranga <mikel@olasagasti.info> - 2024.05.27-1
|
||||
- Update to 2024.05.27. Fixes rhbz#2283578.
|
||||
|
||||
* Mon May 27 2024 Mikel Olasagasti Uranga <mikel@olasagasti.info> - 2024.05.26-1
|
||||
- Update to 2024.05.26. Fixes rhbz#2274266.
|
||||
|
||||
* Wed Apr 10 2024 Maxwell G <maxwell@gtmx.me> - 2024.04.09-1
|
||||
- Update to 2024.04.09.
|
||||
|
||||
* Wed Mar 13 2024 Maxwell G <maxwell@gtmx.me> - 2024.03.10-1
|
||||
- Update to 2024.03.10. Fixes rhbz#2268944.
|
||||
|
||||
* Sat Jan 27 2024 Fedora Release Engineering <releng@fedoraproject.org> - 2023.12.30-2
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
|
||||
|
||||
* Wed Jan 3 2024 Maxwell G <maxwell@gtmx.me> - 2023.12.30-1
|
||||
- Update to 2023.12.30. Fixes rhbz#2244200.
|
||||
|
||||
* Wed Oct 11 2023 Marcus Müller <marcus_fedora@baseband.digital> - 2023.10.07-1
|
||||
- Update to 2023.10.07.
|
||||
- Fixes rhbz#2243274
|
||||
- Fixes rhbz#2240465
|
||||
|
||||
* Sat Jul 22 2023 Fedora Release Engineering <releng@fedoraproject.org> - 2023.07.06-2
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild
|
||||
|
||||
* Fri Jul 07 2023 Maxwell G <maxwell@gtmx.me> - 2023.07.06-1
|
||||
- Update to 2023.07.06.
|
||||
- Mitigates CVE-2023-35934 / GHSA-v8mc-9377-rwjj
|
||||
|
||||
* Wed Jul 05 2023 Maxwell G <maxwell@gtmx.me> - 2023.06.22-1
|
||||
- Update to 2023.06.22. Fixes rhbz#2216612.
|
||||
|
||||
* Thu Jun 22 2023 Maxwell G <maxwell@gtmx.me> - 2023.06.21-1
|
||||
- Update to 2023.06.21. Fixes rhbz#2216612.
|
||||
|
||||
* Thu Jun 15 2023 Python Maint <python-maint@redhat.com> - 2023.03.04-2
|
||||
- Rebuilt for Python 3.12
|
||||
|
||||
* Mon Mar 06 2023 Maxwell G <maxwell@gtmx.me> - 2023.03.04-1
|
||||
- Update to 2023.03.04. Fixes rhbz#2175395.
|
||||
|
||||
* Fri Feb 17 2023 Maxwell G <maxwell@gtmx.me> - 2023.02.17-1
|
||||
- Update to 2023.02.17.
|
||||
|
||||
* Sat Jan 21 2023 Fedora Release Engineering <releng@fedoraproject.org> - 2023.01.06-2
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild
|
||||
|
||||
* Tue Jan 10 2023 Maxwell G <gotmax@e.email> - 2023.01.06-1
|
||||
- Update to 2023.01.06. Fixes rhbz#2157879.
|
||||
|
||||
* Mon Nov 14 2022 Maxwell G <gotmax@e.email> - 2022.11.11-1
|
||||
- Update to 2022.11.11. Fixes rhbz#2142417.
|
||||
|
||||
* Sat Oct 08 2022 Maxwell G <gotmax@e.email> - 2022.10.04-1
|
||||
- Update to 2022.10.04. Fixes rhbz#2132726.
|
||||
|
||||
* Fri Sep 02 2022 Maxwell G <gotmax@e.email> - 2022.09.01-1
|
||||
- Update to 2022.09.01. Fixes rhbz#2123442.
|
||||
|
||||
* Fri Aug 19 2022 Maxwell G <gotmax@e.email> - 2022.08.19-1
|
||||
- Update to 2022.08.19. Fixes rhbz#2118224.
|
||||
|
||||
* Tue Aug 09 2022 Maxwell G <gotmax@e.email> - 2022.08.08-1
|
||||
- Update to 2022.08.08.
|
||||
|
||||
* Sat Jul 23 2022 Fedora Release Engineering <releng@fedoraproject.org> - 2022.06.29-3
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild
|
||||
|
||||
* Mon Jul 04 2022 Maxwell G <gotmax@e.email> - 2022.06.29-2
|
||||
- Fix shell completions subpackages
|
||||
|
||||
* Mon Jul 04 2022 Maxwell G <gotmax@e.email> - 2022.06.29-1
|
||||
- Update to 2022.06.29. Fixes rhbz#2102238.
|
||||
|
||||
* Thu Jun 23 2022 Maxwell G <gotmax@e.email> - 2022.06.22.1-1
|
||||
- Update to 2022.06.22.1. Fixes rhbz#2100019.
|
||||
|
||||
* Fri Jun 17 2022 Maxwell G <gotmax@e.email> - 2022.05.18-3
|
||||
- Fix gating configuration
|
||||
|
||||
* Thu Jun 16 2022 Python Maint <python-maint@redhat.com> - 2022.05.18-2
|
||||
- Rebuilt for Python 3.11
|
||||
|
||||
* Tue May 24 2022 Maxwell G <gotmax@e.email> - 2022.05.18-1
|
||||
- Update to 2022.05.18. Fixes rhbz#2088564.
|
||||
|
||||
* Fri Apr 08 2022 Maxwell G <gotmax@e.email> - 2022.04.08-1
|
||||
- Update to 2022.04.08. Fixes rhbz#2073359.
|
||||
|
||||
* Sat Mar 12 2022 Artem Polishchuk <ego.cordatus@gmail.com> - 2022.03.08.1-2
|
||||
- build: Make ffmpeg and ffprobe conditional deps for >= f36 only
|
||||
|
||||
* Thu Mar 10 2022 Maxwell G <gotmax@e.email> - 2022.03.08.1-1
|
||||
- Update to 2022.03.08.1. Fixes rhbz#2061973.
|
||||
|
||||
* Mon Mar 07 2022 Maxwell G <gotmax@e.email> - 2022.02.04-2
|
||||
- Add weak dependency on ffmpeg and ffprobe.
|
||||
- Make shell-completion subpackages optional again.
|
||||
|
||||
* Fri Feb 04 2022 Maxwell G <gotmax@e.email> - 2022.2.4-1
|
||||
- Update to 2022.2.4. Fixes rhbz#2050497.
|
||||
|
||||
* Mon Jan 24 2022 Maxwell G <gotmax@e.email> - 2022.01.21-1
|
||||
- Update to 2022.01.21.
|
||||
|
||||
* Sat Jan 22 2022 Fedora Release Engineering <releng@fedoraproject.org> - 2021.12.27-2
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild
|
||||
|
||||
* Mon Dec 27 2021 Maxwell G <gotmax@e.email> - 2021.12.27-1
|
||||
- Update to 2021.12.27.
|
||||
|
||||
* Sun Dec 26 2021 Maxwell G <gotmax@e.email> - 2021.12.25-1
|
||||
- Update to 2021.12.25.
|
||||
|
||||
* Wed Dec 01 2021 Maxwell G <gotmax@e.email> - 2021.12.01-1
|
||||
- Update to 2021.12.01.
|
||||
|
||||
* Tue Nov 9 2021 Maxwell G <gotmax@e.email> - 2021.11.10.1-1
|
||||
- Update to 2021.11.10.1.
|
||||
|
||||
* Tue Nov 9 2021 Maxwell G <gotmax@e.email> - 2021.10.22-2
|
||||
- Skip installing unnecessary tox dependencies
|
||||
- Fix shell-completion subpackages
|
||||
- Only package README.md; don't generate extra README.txt
|
||||
|
||||
* Sat Oct 23 2021 Maxwell G <gotmax@e.email> - 2021.10.22-1
|
||||
- Update to 2021.10.22
|
||||
|
||||
* Sun Oct 10 2021 Maxwell G <gotmax@e.email> - 2021.10.10-1
|
||||
- Mark LICENSE with %%license instead of %%doc
|
||||
- Update to 2021.10.10
|
||||
- Fix non-executable-script rpmlint error
|
||||
- Use `python3dist(NAME)` for dependencies
|
||||
- Fix rpm-buildroot-usage rpmlint error
|
||||
|
||||
* Sat Oct 9 2021 Maxwell G <gotmax@e.email> - 2021.10.09-1
|
||||
- Initial package
|
||||
%autochangelog
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue