mirror of
https://github.com/yt-dlp/yt-dlp.git
synced 2026-05-05 06:56:03 +00:00
[ie/youtube] Fix PO token sanitization for Python>=3.14.4 (#16453)
Ref: https://github.com/python/cpython/issues/145264 Authored by: syphyr
This commit is contained in:
parent
c229d4b620
commit
9c1f3cf337
@ -6,6 +6,7 @@ import dataclasses
|
|||||||
import datetime as dt
|
import datetime as dt
|
||||||
import hashlib
|
import hashlib
|
||||||
import json
|
import json
|
||||||
|
import re
|
||||||
import traceback
|
import traceback
|
||||||
import typing
|
import typing
|
||||||
import urllib.parse
|
import urllib.parse
|
||||||
@ -433,9 +434,13 @@ def provider_display_list(providers: Iterable[IEContentProvider]):
|
|||||||
def clean_pot(po_token: str):
|
def clean_pot(po_token: str):
|
||||||
# Clean and validate the PO Token. This will strip invalid characters off
|
# Clean and validate the PO Token. This will strip invalid characters off
|
||||||
# (e.g. additional url params the user may accidentally include)
|
# (e.g. additional url params the user may accidentally include)
|
||||||
|
mobj = re.match(r'([^?&#]+)', urllib.parse.unquote(po_token))
|
||||||
|
if not mobj:
|
||||||
|
raise ValueError('Invalid PO Token')
|
||||||
|
|
||||||
try:
|
try:
|
||||||
return base64.urlsafe_b64encode(
|
return base64.urlsafe_b64encode(
|
||||||
base64.urlsafe_b64decode(urllib.parse.unquote(po_token))).decode()
|
base64.urlsafe_b64decode(mobj.group(1))).decode()
|
||||||
except (binascii.Error, ValueError):
|
except (binascii.Error, ValueError):
|
||||||
raise ValueError('Invalid PO Token')
|
raise ValueError('Invalid PO Token')
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user