diff options
author | morpheus65535 <[email protected]> | 2021-07-14 19:16:12 -0400 |
---|---|---|
committer | morpheus65535 <[email protected]> | 2021-07-14 19:16:12 -0400 |
commit | 8cdd362caab710923f6d6247d8e24c5cfc8ac72c (patch) | |
tree | 8088201f26f395470fa49124d7788e98ae59d58c | |
parent | 8429087d8aded18d771646adc36c84b108ca5a0b (diff) | |
download | bazarr-8cdd362caab710923f6d6247d8e24c5cfc8ac72c.tar.gz bazarr-8cdd362caab710923f6d6247d8e24c5cfc8ac72c.zip |
Fixed zimuku provider to prevent unexpected exception. #1459v0.9.6-beta.42
-rw-r--r-- | libs/subliminal_patch/providers/zimuku.py | 15 |
1 files changed, 9 insertions, 6 deletions
diff --git a/libs/subliminal_patch/providers/zimuku.py b/libs/subliminal_patch/providers/zimuku.py index 1facb5348..a405bf086 100644 --- a/libs/subliminal_patch/providers/zimuku.py +++ b/libs/subliminal_patch/providers/zimuku.py @@ -18,8 +18,8 @@ from subzero.language import Language from guessit import guessit from requests import Session from six import text_type +from random import randint -from subliminal import __short_version__ from subliminal.providers import ParserBeautifulSoup from subliminal_patch.providers import Provider from subliminal.subtitle import ( @@ -30,6 +30,7 @@ from subliminal_patch.subtitle import ( Subtitle, guess_matches ) +from .utils import FIRST_THOUSAND_OR_SO_USER_AGENTS as AGENT_LIST from subliminal.video import Episode, Movie logger = logging.getLogger(__name__) @@ -89,8 +90,6 @@ class ZimukuProvider(Provider): search_url = "/search?q={}" download_url = "http://zimuku.org/" - UserAgent = "Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; Trident/6.0)" - subtitle_class = ZimukuSubtitle def __init__(self): @@ -98,7 +97,7 @@ class ZimukuProvider(Provider): def initialize(self): self.session = Session() - self.session.headers["User-Agent"] = "Subliminal/{}".format(__short_version__) + self.session.headers["User-Agent"] = AGENT_LIST[randint(0, len(AGENT_LIST) - 1)] def terminate(self): self.session.close() @@ -258,9 +257,13 @@ class ZimukuProvider(Provider): logger.info("Downloading subtitle %r", subtitle) self.session = subtitle.session download_link = _get_archive_dowload_link(self.session, subtitle.page_link) - r = self.session.get(download_link, timeout=30) + r = self.session.get(download_link, headers={'Referer': subtitle.page_link}, timeout=30) r.raise_for_status() - filename = r.headers["Content-Disposition"] + try: + filename = r.headers["Content-Disposition"] + except KeyError: + logger.debug("Unable to parse subtitles filename. Dropping this subtitles.") + return if not r.content: logger.debug("Unable to download subtitle. No data returned from provider") |