From a1c98226a4e869a34cc764a9dcf7a4558516308e Mon Sep 17 00:00:00 2001 From: Will Smillie Date: Wed, 10 Sep 2025 14:17:24 -0400 Subject: [PATCH] [ie/xhamster] Fix extractor (#14286) Closes #14145 Authored by: nicolaasjan, willsmillie Co-authored-by: nicolaasjan <14093220+nicolaasjan@users.noreply.github.com> --- yt_dlp/extractor/xhamster.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/yt_dlp/extractor/xhamster.py b/yt_dlp/extractor/xhamster.py index 9d90f181ba..27efd43129 100644 --- a/yt_dlp/extractor/xhamster.py +++ b/yt_dlp/extractor/xhamster.py @@ -1,3 +1,4 @@ +import base64 import itertools import re @@ -12,6 +13,7 @@ from ..utils import ( int_or_none, parse_duration, str_or_none, + try_call, try_get, unified_strdate, url_or_none, @@ -229,6 +231,11 @@ class XHamsterIE(InfoExtractor): standard_url = standard_format.get(standard_format_key) if not standard_url: continue + decoded = try_call(lambda: base64.b64decode(standard_url)) + if decoded and decoded[:4] == b'xor_': + standard_url = bytes( + a ^ b for a, b in + zip(decoded[4:], itertools.cycle(b'xh7999'))).decode() standard_url = urljoin(url, standard_url) if not standard_url or standard_url in format_urls: continue