From 6cd95babef4a150a8c07db5fab572029d18ff5c3 Mon Sep 17 00:00:00 2001 From: Adam Miller Date: Wed, 8 Jan 2025 16:32:40 -0800 Subject: [PATCH] feat: first pass at handling redirects in process_ie_result() --- yt_dlp/YoutubeDL.py | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/yt_dlp/YoutubeDL.py b/yt_dlp/YoutubeDL.py index 764baf3a0..510f0cbae 100644 --- a/yt_dlp/YoutubeDL.py +++ b/yt_dlp/YoutubeDL.py @@ -1822,6 +1822,18 @@ def process_ie_result(self, ie_result, download=True, extra_info=None): result_type = ie_result.get('_type', 'video') if result_type in ('url', 'url_transparent'): + if 'redirect_count' in extra_info: + extra_info['redirect_count'] = 1 + extra_info.get('redirect_count', 0) + else: + extra_info['redirect_count'] = 0 + + # TODO: make command line arg with large or infinite default + if extra_info['redirect_count'] >= 5: + raise ExtractorError( + f"Too many redirects for URL: {ie_result['url']}", + expected=True, + ) + ie_result['url'] = sanitize_url( ie_result['url'], scheme='http' if self.params.get('prefer_insecure') else 'https') if ie_result.get('original_url') and not extra_info.get('original_url'):