|
|
|
@ -4,6 +4,7 @@ import io
|
|
|
|
|
import logging
|
|
|
|
|
import os
|
|
|
|
|
import time
|
|
|
|
|
import inflect
|
|
|
|
|
|
|
|
|
|
from random import randint
|
|
|
|
|
from zipfile import ZipFile
|
|
|
|
@ -20,6 +21,8 @@ from subliminal_patch.converters.subscene import language_ids, supported_languag
|
|
|
|
|
from subscene_api.subscene import search, Subtitle as APISubtitle
|
|
|
|
|
from subzero.language import Language
|
|
|
|
|
|
|
|
|
|
p = inflect.engine()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
language_converters.register('subscene = subliminal_patch.converters.subscene:SubsceneConverter')
|
|
|
|
|
logger = logging.getLogger(__name__)
|
|
|
|
@ -192,21 +195,27 @@ class SubsceneProvider(Provider, ProviderSubtitleArchiveMixin):
|
|
|
|
|
|
|
|
|
|
def query(self, video):
|
|
|
|
|
vfn = get_video_filename(video)
|
|
|
|
|
subtitles = []
|
|
|
|
|
logger.debug(u"Searching for: %s", vfn)
|
|
|
|
|
film = search(vfn, session=self.session)
|
|
|
|
|
|
|
|
|
|
subtitles = []
|
|
|
|
|
if film and film.subtitles:
|
|
|
|
|
logger.debug('Release results found: %s', len(film.subtitles))
|
|
|
|
|
subtitles = self.parse_results(video, film)
|
|
|
|
|
else:
|
|
|
|
|
logger.debug('No release results found')
|
|
|
|
|
|
|
|
|
|
# re-search for episodes without explicit release name
|
|
|
|
|
if isinstance(video, Episode):
|
|
|
|
|
term = u"%s S%02iE%02i" % (video.series, video.season, video.episode)
|
|
|
|
|
#term = u"%s S%02iE%02i" % (video.series, video.season, video.episode)
|
|
|
|
|
term = u"%s - %s Season" % (video.series, p.number_to_words("%sth" % video.season).capitalize())
|
|
|
|
|
time.sleep(self.search_throttle)
|
|
|
|
|
logger.debug('Searching for alternative results: %s', term)
|
|
|
|
|
film = search(term, session=self.session)
|
|
|
|
|
film = search(term, session=self.session, release=False)
|
|
|
|
|
if film and film.subtitles:
|
|
|
|
|
logger.debug('Alternative results found: %s', len(film.subtitles))
|
|
|
|
|
subtitles += self.parse_results(video, film)
|
|
|
|
|
else:
|
|
|
|
|
logger.debug('No alternative results found')
|
|
|
|
|
|
|
|
|
|
# packs
|
|
|
|
|
if video.season_fully_aired:
|
|
|
|
@ -215,9 +224,17 @@ class SubsceneProvider(Provider, ProviderSubtitleArchiveMixin):
|
|
|
|
|
time.sleep(self.search_throttle)
|
|
|
|
|
film = search(term, session=self.session)
|
|
|
|
|
if film and film.subtitles:
|
|
|
|
|
logger.debug('Pack results found: %s', len(film.subtitles))
|
|
|
|
|
subtitles += self.parse_results(video, film)
|
|
|
|
|
else:
|
|
|
|
|
logger.debug('No pack results found')
|
|
|
|
|
else:
|
|
|
|
|
logger.debug("Not searching for packs, because the season hasn't fully aired")
|
|
|
|
|
else:
|
|
|
|
|
logger.debug('Searching for movie results: %s', video.title)
|
|
|
|
|
film = search(video.title, year=video.year, session=self.session, limit_to=None, release=False)
|
|
|
|
|
if film and film.subtitles:
|
|
|
|
|
subtitles += self.parse_results(video, film)
|
|
|
|
|
|
|
|
|
|
logger.info("%s subtitles found" % len(subtitles))
|
|
|
|
|
return subtitles
|
|
|
|
|