diff --git a/settings.py b/settings.py index 130ad98..1e0ee1a 100644 --- a/settings.py +++ b/settings.py @@ -19,6 +19,7 @@ class SettingsFile(TypedDict): priority: list[str] priority_only: bool autostart_tray: bool + connection_quality: int tray_notifications: bool @@ -29,6 +30,7 @@ default_settings: SettingsFile = { "autostart": False, "priority_only": True, "autostart_tray": False, + "connection_quality": 1, "language": DEFAULT_LANG, "tray_notifications": True, } @@ -51,6 +53,7 @@ class Settings: priority: list[str] priority_only: bool autostart_tray: bool + connection_quality: int tray_notifications: bool PASSTHROUGH = ("_settings", "_args", "_altered") diff --git a/twitch.py b/twitch.py index 2be09d6..d940a26 100644 --- a/twitch.py +++ b/twitch.py @@ -648,13 +648,24 @@ class Twitch: # if loading in the cookies file ends up in an error, just ignore it # clear the jar, just in case cookie_jar.clear() + # create timeouts + # connection quality mulitiplier determines the magnitude of timeouts + connection_quality = self.settings.connection_quality + if connection_quality < 1: + connection_quality = self.settings.connection_quality = 1 + elif connection_quality > 6: + connection_quality = self.settings.connection_quality = 6 + timeout = aiohttp.ClientTimeout( + sock_connect=5*connection_quality, + total=10*connection_quality, + ) # create session, limited to 50 connections at maximum connector = aiohttp.TCPConnector(limit=50) self._session = aiohttp.ClientSession( + timeout=timeout, connector=connector, cookie_jar=cookie_jar, headers={"User-Agent": USER_AGENT}, - timeout=aiohttp.ClientTimeout(connect=5, total=10), ) return self._session