[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:
Deltadroid
2026-04-11 01:31:55 +02:00
committed by GitHub
parent c229d4b620
commit 9c1f3cf337

View File

@@ -6,6 +6,7 @@ import dataclasses
import datetime as dt
import hashlib
import json
import re
import traceback
import typing
import urllib.parse
@@ -433,9 +434,13 @@ def provider_display_list(providers: Iterable[IEContentProvider]):
def clean_pot(po_token: str):
# Clean and validate the PO Token. This will strip invalid characters off
# (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:
return base64.urlsafe_b64encode(
base64.urlsafe_b64decode(urllib.parse.unquote(po_token))).decode()
base64.urlsafe_b64decode(mobj.group(1))).decode()
except (binascii.Error, ValueError):
raise ValueError('Invalid PO Token')