From ea4d4410be9791fff82fb52104334b5479836d7c Mon Sep 17 00:00:00 2001 From: SonnyPoint <sonitao@163.com> Date: Sun, 26 Mar 2023 05:52:08 +0800 Subject: [PATCH 1/2] [sites:twitch] Add proxy support for connecting chatirc Signed-off-by: SonnyPoint <sonitao@163.com> --- chat_downloader/sites/twitch.py | 25 ++++++++++++++++++++++--- 1 file changed, 22 insertions(+), 3 deletions(-) diff --git a/chat_downloader/sites/twitch.py b/chat_downloader/sites/twitch.py index 9cb2194..90dac7f 100644 --- a/chat_downloader/sites/twitch.py +++ b/chat_downloader/sites/twitch.py @@ -49,9 +49,24 @@ class TwitchError(SiteError): class TwitchChatIRC(): - def __init__(self): + def __init__(self, proxy=None): + + if proxy is not None: + # use pysocks when needed + import socks + from urllib.parse import urlparse + proxy_url = urlparse(proxy) + self.socket = socks.socksocket() + scheme = socks.HTTP + if proxy_url.scheme == "socks4" or proxy_url.scheme == "socks": + scheme = socks.SOCKS4 + if proxy_url.scheme == "socks5": + scheme = socks.SOCKS5 + self.socket.set_proxy(scheme, proxy_url.hostname, proxy_url.port) + # create new socket - self.socket = socket.socket() + if proxy is None: + self.socket = socket.socket() # start connection self.socket.connect(('irc.chat.twitch.tv', 6667)) @@ -94,6 +109,10 @@ class TwitchChatDownloader(BaseChatDownloader): _NAME = 'twitch.tv' + def __init__(self, **kwargs): + super().__init__(**kwargs) + self.proxy = kwargs["proxy"] + _TESTS = [ # Live { @@ -1516,7 +1535,7 @@ def _get_chat_messages_by_stream_id(self, stream_id, params): def create_connection(): for attempt_number in attempts(max_attempts): try: - irc = TwitchChatIRC() + irc = TwitchChatIRC(self.proxy) irc.set_timeout(message_receive_timeout) irc.join_channel(stream_id) return irc From 89f72493d19096749bead8faeb58c8289ccbc27b Mon Sep 17 00:00:00 2001 From: SonnyPoint <sonitao@163.com> Date: Sun, 26 Mar 2023 05:52:50 +0800 Subject: [PATCH 2/2] [setup] Add pysocks to requirements Signed-off-by: SonnyPoint <sonitao@163.com> --- setup.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/setup.py b/setup.py index 89c4352..04990df 100644 --- a/setup.py +++ b/setup.py @@ -20,7 +20,8 @@ 'isodate', 'docstring-parser', 'colorlog', - 'websocket-client' + 'websocket-client', + 'pysocks' ] setup(