diff --git a/libs/subliminal_patch/providers/legendasdivx.py b/libs/subliminal_patch/providers/legendasdivx.py index 5537e5828..9d2796964 100644 --- a/libs/subliminal_patch/providers/legendasdivx.py +++ b/libs/subliminal_patch/providers/legendasdivx.py @@ -12,7 +12,7 @@ from subliminal_patch.exceptions import ParseResponseError from subliminal_patch.providers import Provider from subliminal.providers import ParserBeautifulSoup from subliminal_patch.subtitle import Subtitle -from subliminal.video import Episode +from subliminal.video import Episode, Movie from subliminal.subtitle import SUBTITLE_EXTENSIONS, fix_line_ending,guess_matches from subzero.language import Language @@ -125,9 +125,9 @@ class LegendasdivxProvider(Provider): } loginpage = site + '/forum/ucp.php?mode=login' searchurl = site + '/modules.php?name=Downloads&file=jz&d_op=search&op=_jz00&query={query}' + imdbsearchurl = site + '/modules.php?name=Downloads&d_op=search&imdbid={query}' language_list = list(languages) - def __init__(self, username, password): self.username = username self.password = password @@ -173,48 +173,14 @@ class LegendasdivxProvider(Provider): return False return True + def logout(self): # need to figure this out return True - def query(self, video, language): - try: - logger.debug('Got session id %s' % - self.session.cookies.get_dict()['PHPSESSID']) - except Exception as e: - self.login() - return [] - - language_ids = '0' - if isinstance(language, (tuple, list, set)): - if len(language) == 1: - language_ids = ','.join(sorted(l.opensubtitles for l in language)) - if language_ids == 'por': - language_ids = '&form_cat=28' - else: - language_ids = '&form_cat=29' - - querytext = video.name - querytext = os.path.basename(querytext) - querytext, _ = os.path.splitext(querytext) - videoname = querytext - querytext = querytext.lower() - querytext = querytext.replace( - ".", "+").replace("[", "").replace("]", "") - if language_ids != '0': - querytext = querytext + language_ids - self.headers['Referer'] = self.site + '/index.php' - self.session.headers.update(self.headers.items()) - res = self.session.get(self.searchurl.format(query=querytext)) - # form_cat=28 = br - # form_cat=29 = pt - if "A legenda não foi encontrada" in res.text: - logger.warning('%s not found', querytext) - return [] - - bsoup = ParserBeautifulSoup(res.content, ['html.parser']) - _allsubs = bsoup.findAll("div", {"class": "sub_box"}) + def _process_page(self, video, bsoup, querytext, videoname): subtitles = [] + _allsubs = bsoup.findAll("div", {"class": "sub_box"}) lang = Language.fromopensubtitles("pob") for _subbox in _allsubs: hits=0 @@ -228,7 +194,6 @@ class LegendasdivxProvider(Provider): else: lang = Language.fromopensubtitles('por') - description = _subbox.find("td", {"class": "td_desc brd_up"}) download = _subbox.find("a", {"class": "sub_download"}) try: @@ -249,6 +214,55 @@ class LegendasdivxProvider(Provider): subtitles.append( LegendasdivxSubtitle(lang, video, data) ) + return subtitles + + def query(self, video, language): + try: + logger.debug('Got session id %s' % + self.session.cookies.get_dict()['PHPSESSID']) + except Exception as e: + self.login() + + language_ids = '0' + if isinstance(language, (tuple, list, set)): + if len(language) == 1: + language_ids = ','.join(sorted(l.opensubtitles for l in language)) + if language_ids == 'por': + language_ids = '&form_cat=28' + else: + language_ids = '&form_cat=29' + + videoname = video.name + videoname = os.path.basename(videoname) + videoname, _ = os.path.splitext(videoname) + # querytext = videoname.lower() + _searchurl = self.searchurl + if video.imdb_id is None: + if isinstance(video, Episode): + querytext = "{} S{:02d}E{:02d}".format(video.series, video.season, video.episode) + elif isinstance(video, Movie): + querytext = video.title + else: + # _searchurl = self.imdbsearchurl + querytext = video.title + # querytext = video.imdb_id + + + # querytext = querytext.replace( + # ".", "+").replace("[", "").replace("]", "") + if language_ids != '0': + querytext = querytext + language_ids + self.headers['Referer'] = self.site + '/index.php' + self.session.headers.update(self.headers.items()) + res = self.session.get(_searchurl.format(query=querytext)) + # form_cat=28 = br + # form_cat=29 = pt + if "A legenda não foi encontrada" in res.text: + logger.warning('%s not found', querytext) + return [] + + bsoup = ParserBeautifulSoup(res.content, ['html.parser']) + subtitles = self._process_page(video, bsoup, querytext, videoname) return subtitles