mirror of
https://github.com/morpheus65535/bazarr
synced 2024-12-26 09:37:25 +00:00
Fix for #1034.
This commit is contained in:
parent
d38cd38399
commit
e2b1726c87
3 changed files with 25 additions and 22 deletions
|
@ -5,6 +5,8 @@ import logging
|
|||
import subliminal_patch
|
||||
import pretty
|
||||
import time
|
||||
import socket
|
||||
import requests
|
||||
|
||||
from get_args import args
|
||||
from config import settings
|
||||
|
@ -28,7 +30,7 @@ hours_until_end_of_day = time_until_end_of_day().seconds // 3600 + 1
|
|||
|
||||
VALID_THROTTLE_EXCEPTIONS = (TooManyRequests, DownloadLimitExceeded, ServiceUnavailable, APIThrottled,
|
||||
ParseResponseError, IPAddressBlocked)
|
||||
VALID_COUNT_EXCEPTIONS = ('TooManyRequests', 'ServiceUnavailable', 'APIThrottled')
|
||||
VALID_COUNT_EXCEPTIONS = ('TooManyRequests', 'ServiceUnavailable', 'APIThrottled', requests.Timeout, socket.timeout)
|
||||
|
||||
PROVIDER_THROTTLE_MAP = {
|
||||
"default": {
|
||||
|
@ -37,6 +39,8 @@ PROVIDER_THROTTLE_MAP = {
|
|||
ServiceUnavailable: (datetime.timedelta(minutes=20), "20 minutes"),
|
||||
APIThrottled: (datetime.timedelta(minutes=10), "10 minutes"),
|
||||
ParseResponseError: (datetime.timedelta(hours=6), "6 hours"),
|
||||
requests.Timeout: (datetime.timedelta(minutes=20), "20 minutes"),
|
||||
socket.timeout: (datetime.timedelta(minutes=20), "20 minutes"),
|
||||
},
|
||||
"opensubtitles": {
|
||||
TooManyRequests: (datetime.timedelta(hours=3), "3 hours"),
|
||||
|
@ -48,7 +52,6 @@ PROVIDER_THROTTLE_MAP = {
|
|||
DownloadLimitExceeded: (datetime.timedelta(hours=3), "3 hours"),
|
||||
TooManyRequests: (datetime.timedelta(minutes=5), "5 minutes"),
|
||||
IPAddressBlocked: (datetime.timedelta(hours=1), "1 hours"),
|
||||
|
||||
},
|
||||
"titulky": {
|
||||
DownloadLimitExceeded: (datetime.timedelta(hours=3), "3 hours")
|
||||
|
|
|
@ -114,10 +114,12 @@ class SZProviderPool(ProviderPool):
|
|||
try:
|
||||
logger.info('Terminating provider %s', name)
|
||||
self.initialized_providers[name].terminate()
|
||||
except (requests.Timeout, socket.timeout):
|
||||
except (requests.Timeout, socket.timeout) as e:
|
||||
logger.error('Provider %r timed out, improperly terminated', name)
|
||||
except:
|
||||
self.throttle_callback(name, e)
|
||||
except Exception as e:
|
||||
logger.exception('Provider %r terminated unexpectedly', name)
|
||||
self.throttle_callback(name, e)
|
||||
|
||||
del self.initialized_providers[name]
|
||||
|
||||
|
@ -189,8 +191,9 @@ class SZProviderPool(ProviderPool):
|
|||
|
||||
return out
|
||||
|
||||
except (requests.Timeout, socket.timeout):
|
||||
except (requests.Timeout, socket.timeout) as e:
|
||||
logger.error('Provider %r timed out', provider)
|
||||
self.throttle_callback(provider, e)
|
||||
|
||||
except Exception as e:
|
||||
logger.exception('Unexpected error in provider %r: %s', provider, traceback.format_exc())
|
||||
|
@ -269,10 +272,11 @@ class SZProviderPool(ProviderPool):
|
|||
requests.exceptions.ProxyError,
|
||||
requests.exceptions.SSLError,
|
||||
requests.Timeout,
|
||||
socket.timeout):
|
||||
socket.timeout) as e:
|
||||
logger.error('Provider %r connection error', subtitle.provider_name)
|
||||
self.throttle_callback(subtitle.provider_name, e)
|
||||
|
||||
except ResponseNotReady:
|
||||
except ResponseNotReady as e:
|
||||
logger.error('Provider %r response error, reinitializing', subtitle.provider_name)
|
||||
try:
|
||||
self[subtitle.provider_name].terminate()
|
||||
|
@ -280,6 +284,7 @@ class SZProviderPool(ProviderPool):
|
|||
except:
|
||||
logger.error('Provider %r reinitialization error: %s', subtitle.provider_name,
|
||||
traceback.format_exc())
|
||||
self.throttle_callback(subtitle.provider_name, e)
|
||||
|
||||
except rarfile.BadRarFile:
|
||||
logger.error('Malformed RAR file from provider %r, skipping subtitle.', subtitle.provider_name)
|
||||
|
|
|
@ -9,14 +9,13 @@ from random import randint
|
|||
|
||||
from dogpile.cache.api import NO_VALUE
|
||||
from requests import Session
|
||||
from requests.exceptions import ConnectionError, ConnectTimeout
|
||||
from subliminal.cache import region
|
||||
from subliminal.exceptions import DownloadLimitExceeded, AuthenticationError, ConfigurationError
|
||||
from subliminal.providers.addic7ed import Addic7edProvider as _Addic7edProvider, \
|
||||
Addic7edSubtitle as _Addic7edSubtitle, ParserBeautifulSoup
|
||||
from subliminal.subtitle import fix_line_ending
|
||||
from subliminal_patch.utils import sanitize
|
||||
from subliminal_patch.exceptions import TooManyRequests, IPAddressBlocked
|
||||
from subliminal_patch.exceptions import TooManyRequests
|
||||
from subliminal_patch.pitcher import pitchers, load_verification, store_verification
|
||||
from subzero.language import Language
|
||||
|
||||
|
@ -92,19 +91,15 @@ class Addic7edProvider(_Addic7edProvider):
|
|||
# login
|
||||
if self.username and self.password:
|
||||
def check_verification(cache_region):
|
||||
try:
|
||||
rr = self.session.get(self.server_url + 'panel.php', allow_redirects=False, timeout=10,
|
||||
headers={"Referer": self.server_url})
|
||||
if rr.status_code == 302:
|
||||
logger.info('Addic7ed: Login expired')
|
||||
cache_region.delete("addic7ed_data")
|
||||
else:
|
||||
logger.info('Addic7ed: Re-using old login')
|
||||
self.logged_in = True
|
||||
return True
|
||||
except (ConnectionError, ConnectTimeout) as e:
|
||||
logger.debug("Addic7ed: There was a problem reaching the server: %s." % e)
|
||||
raise IPAddressBlocked("Addic7ed: Your IP is temporarily blocked.")
|
||||
rr = self.session.get(self.server_url + 'panel.php', allow_redirects=False, timeout=10,
|
||||
headers={"Referer": self.server_url})
|
||||
if rr.status_code == 302:
|
||||
logger.info('Addic7ed: Login expired')
|
||||
cache_region.delete("addic7ed_data")
|
||||
else:
|
||||
logger.info('Addic7ed: Re-using old login')
|
||||
self.logged_in = True
|
||||
return True
|
||||
|
||||
if load_verification("addic7ed", self.session, callback=check_verification):
|
||||
return
|
||||
|
|
Loading…
Reference in a new issue