From 834200007caf94a4daad9ae6cc9bb648305752cf Mon Sep 17 00:00:00 2001 From: cjkangme Date: Wed, 28 Jan 2026 22:03:08 +0900 Subject: [PATCH] fix: prevent duplicate -rotate suffix in proxy username --- youtube_transcript_api/proxies.py | 6 +++++- youtube_transcript_api/test/test_proxies.py | 12 ++++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/youtube_transcript_api/proxies.py b/youtube_transcript_api/proxies.py index 0b868d8..62a67c5 100644 --- a/youtube_transcript_api/proxies.py +++ b/youtube_transcript_api/proxies.py @@ -160,8 +160,12 @@ def url(self) -> str: location_codes = "".join( f"-{location_code.upper()}" for location_code in self._filter_ip_locations ) + username = self.proxy_username + suffix = "-rotate" + if username.endswith(suffix): + username = username[: -len(suffix)] return ( - f"http://{self.proxy_username}{location_codes}-rotate:{self.proxy_password}" + f"http://{username}{location_codes}{suffix}:{self.proxy_password}" f"@{self.domain_name}:{self.proxy_port}/" ) diff --git a/youtube_transcript_api/test/test_proxies.py b/youtube_transcript_api/test/test_proxies.py index a50a538..1bf0873 100644 --- a/youtube_transcript_api/test/test_proxies.py +++ b/youtube_transcript_api/test/test_proxies.py @@ -91,3 +91,15 @@ def test_to_requests_dict__with_multiple_location_filters(self): "http": "http://user-DE-US-rotate:password@p.webshare.io:80/", "https": "http://user-DE-US-rotate:password@p.webshare.io:80/", } + + def test_to_requests_dict__with_rotate_suffix_in_username(self): + proxy_config = WebshareProxyConfig( + proxy_username="user-rotate", proxy_password="password" + ) + + request_dict = proxy_config.to_requests_dict() + + assert request_dict == { + "http": "http://user-rotate:password@p.webshare.io:80/", + "https": "http://user-rotate:password@p.webshare.io:80/", + }