From 23052029a00c3bc9cb10057416255624ea9f7d4c Mon Sep 17 00:00:00 2001 From: bashonly Date: Fri, 23 May 2025 04:45:42 -0500 Subject: [PATCH] [ie/patreon] Fix referer header used for embeds Fix e0d6c0822930f6e63f574d46d946a58b73ecd10c Authored by: bashonly --- yt_dlp/extractor/patreon.py | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/yt_dlp/extractor/patreon.py b/yt_dlp/extractor/patreon.py index dddb09c915..3e1e4f60f3 100644 --- a/yt_dlp/extractor/patreon.py +++ b/yt_dlp/extractor/patreon.py @@ -16,6 +16,7 @@ from ..utils import ( parse_iso8601, smuggle_url, str_or_none, + update_url, url_or_none, urljoin, ) @@ -340,8 +341,9 @@ class PatreonIE(PatreonBaseIE): 'channel_follower_count': ('attributes', 'patron_count', {int_or_none}), })) - # all-lowercase 'referer' so we can smuggle it to Generic, SproutVideo, Vimeo - headers = {'referer': url} + # Must be all-lowercase 'referer' so we can smuggle it to Generic, SproutVideo, and Vimeo. + # patreon.com URLs redirect to www.patreon.com; this matters when requesting mux.com m3u8s + headers = {'referer': update_url(url, netloc='www.patreon.com')} # handle Vimeo embeds if traverse_obj(attributes, ('embed', 'provider')) == 'Vimeo': @@ -352,7 +354,7 @@ class PatreonIE(PatreonBaseIE): v_url, video_id, 'Checking Vimeo embed URL', headers=headers, fatal=False, errnote=False, expected_status=429): # 429 is TLS fingerprint rejection entries.append(self.url_result( - VimeoIE._smuggle_referrer(v_url, 'https://patreon.com/'), + VimeoIE._smuggle_referrer(v_url, headers['referer']), VimeoIE, url_transparent=True)) embed_url = traverse_obj(attributes, ('embed', 'url', {url_or_none}))