예제 #1
0
 def movie(self, imdb, title, localtitle, aliases, year):
     try:
         url = self.__search([localtitle] + source_utils.aliases_to_array(aliases), year)
         if not url and title != localtitle: url = self.__search([title] + source_utils.aliases_to_array(aliases), year)
         return urllib.urlencode({'url': url, 'imdb': re.sub('[^0-9]', '', imdb)}) if url else None
     except:
         return
예제 #2
0
 def movie(self, imdb, title, localtitle, aliases, year):
     try:
         url = self.__search([localtitle] + source_utils.aliases_to_array(aliases), year)
         if not url and title != localtitle: url = self.__search([title] + source_utils.aliases_to_array(aliases), year)
         return url
     except:
         return
예제 #3
0
 def tvshow(self, imdb, tvdb, tvshowtitle, localtvshowtitle, aliases, year):
     try:
         url = self.__search([localtvshowtitle] +
                             source_utils.aliases_to_array(aliases))
         if not url and tvshowtitle != localtvshowtitle:
             url = self.__search([tvshowtitle] +
                                 source_utils.aliases_to_array(aliases))
         return url
     except:
         return
예제 #4
0
 def tvshow(self, imdb, tvdb, tvshowtitle, localtvshowtitle, aliases, year):
     try:
         id = self.__search([localtvshowtitle] +
                            source_utils.aliases_to_array(aliases))
         if not id and tvshowtitle != localtvshowtitle:
             id = self.__search([tvshowtitle] +
                                source_utils.aliases_to_array(aliases))
         return urllib.urlencode({'id': id}) if id else None
     except:
         return
예제 #5
0
 def movie(self, imdb, title, localtitle, aliases, year):
     try:
         url = self.__search([localtitle] +
                             source_utils.aliases_to_array(aliases), year)
         if not url and title != localtitle:
             url = self.__search(
                 [title] + source_utils.aliases_to_array(aliases), year)
         if not url and source_utils.is_anime('movie', 'imdb', imdb):
             url = self.__search([anilist.getAlternativTitle(title)] +
                                 source_utils.aliases_to_array(aliases),
                                 year)
         return url
     except:
         return
예제 #6
0
 def tvshow(self, imdb, tvdb, tvshowtitle, localtvshowtitle, aliases, year):
     try:
         url = self.__search([localtvshowtitle] +
                             source_utils.aliases_to_array(aliases), year)
         if not url and tvshowtitle != localtvshowtitle:
             url = self.__search([tvshowtitle] +
                                 source_utils.aliases_to_array(aliases),
                                 year)
         if not url and source_utils.is_anime('show', 'tvdb', tvdb):
             url = self.__search(
                 [tvmaze.tvMaze().showLookup('thetvdb', tvdb).get('name')] +
                 source_utils.aliases_to_array(aliases), year)
         return url
     except:
         return
예제 #7
0
    def episode(self, url, imdb, tvdb, title, premiered, season, episode):
        try:
            if not url:
                return

            data = urlparse.parse_qs(url)
            data = dict([(i, data[i][0]) if data[i] else (i, '') for i in data])
            tvshowtitle = data['tvshowtitle']
            localtvshowtitle = data['localtvshowtitle']
            aliases = source_utils.aliases_to_array(eval(data['aliases']))

            url = self.__search([localtvshowtitle] + aliases, data['year'], season)
            if not url and tvshowtitle != localtvshowtitle: url = self.__search([tvshowtitle] + aliases, data['year'], season)
            if not url: return

            r = client.request(urlparse.urljoin(self.base_link, url))

            r = dom_parser.parse_dom(r, 'ul', attrs={'class': ['list-inline', 'list-film']})
            r = dom_parser.parse_dom(r, 'li')
            r = dom_parser.parse_dom(r, 'a', req='href')
            r = [(i.attrs['href'], i.content) for i in r if i]
            r = [(i[0], i[1] if re.compile("^(\d+)$").match(i[1]) else '0') for i in r]
            r = [i[0] for i in r if int(i[1]) == int(episode)][0]

            return source_utils.strip_domain(r)
        except:
            return
예제 #8
0
    def tvshow(self, imdb, tvdb, tvshowtitle, localtvshowtitle, aliases, year):
        try:
            query = self.search_link % urllib.quote_plus(
                cleantitle.query(tvshowtitle))

            # req page 3 times to workaround their BS random 404's
            # responses (legit & BS 404s) are actually very fast: timeout prob not important
            for i in range(4):
                result = client.request(query, timeout=3)
                if not result == None: break

            t = [tvshowtitle] + source_utils.aliases_to_array(aliases)
            t = [cleantitle.get(i) for i in set(t) if i]
            result = re.compile(
                'itemprop="url"\s+href="([^"]+).*?itemprop="name"\s+class="serie-title">([^<]+)',
                re.DOTALL).findall(result)
            for i in result:
                if cleantitle.get(cleantitle.normalize(
                        i[1])) in t and year in i[1]:
                    url = i[0]

            url = url.encode('utf-8')

            #log_utils.log('\n\n~~~ outgoing tvshow() url')
            #log_utils.log(url)

            # returned 'url' format like: /serie/x_files
            return url
        except:
            return
예제 #9
0
 def tvshow(self, imdb, tvdb, tvshowtitle, localtvshowtitle, aliases, year):
     try:
         url = self.__search([
             tvshowtitle, localtvshowtitle,
             tvmaze.tvMaze().showLookup('thetvdb', tvdb).get('name')
         ] + source_utils.aliases_to_array(aliases), year)
         return urllib.urlencode({'url': url}) if url else None
     except:
         return
예제 #10
0
 def movie(self, imdb, title, localtitle, aliases, year):
     try:
         url = self.__search(
             [title, localtitle,
              anilist.getAlternativTitle(title)] +
             source_utils.aliases_to_array(aliases), year)
         return urllib.urlencode({'url': url}) if url else None
     except:
         return
예제 #11
0
    def tvshow(self, imdb, tvdb, tvshowtitle, localtvshowtitle, aliases, year):
        try:
            alt_title = anilist.getAlternativTitle(tvshowtitle)
            aliases = source_utils.aliases_to_array(aliases)

            url = self.__search([alt_title] + aliases, year, 'animeseries')
            if not url and localtvshowtitle != alt_title:
                url = self.__search([localtvshowtitle] + aliases, year,
                                    'animeseries')
            if not url and tvshowtitle != localtvshowtitle:
                url = self.__search([tvshowtitle] + aliases, year,
                                    'animeseries')
            return url
        except:
            return
예제 #12
0
    def movie(self, imdb, title, localtitle, aliases, year):
        try:
            alt_title = anilist.getAlternativTitle(title)
            aliases = source_utils.aliases_to_array(aliases)

            url = self.__search([alt_title] + aliases, year, 'movie')
            if not url and localtitle != alt_title:
                url = self.__search([localtitle] + aliases, year, 'movie')
            if not url and title != localtitle:
                url = self.__search([title] + aliases, year, 'movie')
            return urllib.urlencode({
                'url': url,
                'episode': '1'
            }) if url else None
        except:
            return
예제 #13
0
    def tvshow(self, imdb, tvdb, tvshowtitle, localtvshowtitle, aliases, year):
        try:
            query = self.search_link % urllib.quote_plus(
                cleantitle.query(tvshowtitle))
            result = client.request(query)
            #tvshowtitle = cleantitle.get(tvshowtitle)
            t = [tvshowtitle] + source_utils.aliases_to_array(aliases)
            t = [cleantitle.get(i) for i in set(t) if i]
            result = re.compile(
                'itemprop="url"\s+href="([^"]+).*?itemprop="name"\s+class="serie-title">([^<]+)',
                re.DOTALL).findall(result)
            for i in result:
                if cleantitle.get(cleantitle.normalize(
                        i[1])) in t and year in i[1]:
                    url = i[0]

            url = url.encode('utf-8')
            return url
        except:
            return
예제 #14
0
    def sources(self, url, hostDict, hostprDict):
        sources = []

        try:
            if not url:
                return sources

            data = urlparse.parse_qs(url)
            data = dict([(i, data[i][0]) if data[i] else (i, '')
                         for i in data])
            tvshowtitle = data.get('tvshowtitle')
            localtvshowtitle = data.get('localtvshowtitle')
            aliases = source_utils.aliases_to_array(eval(data['aliases']))
            episode = tvmaze.tvMaze().episodeAbsoluteNumber(
                data.get('tvdb'), int(data.get('season')),
                int(data.get('episode')))

            alt_title = anilist.getAlternativTitle(tvshowtitle)
            links = self.__search([alt_title] + aliases, episode)
            if not links and localtvshowtitle != alt_title:
                links = self.__search([localtvshowtitle] + aliases, episode)
            if not links and tvshowtitle != localtvshowtitle:
                links = self.__search([tvshowtitle] + aliases, episode)

            for link in links:
                valid, host = source_utils.is_host_valid(link, hostDict)
                if not valid: continue

                sources.append({
                    'source': host,
                    'quality': 'SD',
                    'language': 'de',
                    'url': link,
                    'direct': False,
                    'debridonly': False
                })

            return sources
        except:
            return sources
예제 #15
0
    def episode(self, url, imdb, tvdb, title, premiered, season, episode):
        try:
            if not url:
                return

            data = urlparse.parse_qs(url)
            data = dict([(i, data[i][0]) if data[i] else (i, '')
                         for i in data])
            tvshowtitle = data['tvshowtitle']
            localtvshowtitle = data['localtvshowtitle']
            aliases = source_utils.aliases_to_array(eval(data['aliases']))

            url = self.__search([localtvshowtitle] + aliases, data['year'],
                                season)
            if not url and tvshowtitle != localtvshowtitle:
                url = self.__search([tvshowtitle] + aliases, data['year'],
                                    season)
            if not url: return

            return urllib.urlencode({'url': url, 'episode': episode})
        except:
            return
예제 #16
0
    def episode(self, url, imdb, tvdb, title, premiered, season, episode):
        try:
            if not url:
                return

            data = urlparse.parse_qs(url)
            data = dict([(i, data[i][0]) if data[i] else (i, '')
                         for i in data])
            tvshowtitle = data['tvshowtitle']
            localtvshowtitle = data['localtvshowtitle']
            aliases = source_utils.aliases_to_array(eval(data['aliases']))

            year = re.findall('(\d{4})', premiered)
            year = year[0] if year else data['year']

            url = self.__search([localtvshowtitle] + aliases, year, season,
                                episode)
            if not url and tvshowtitle != localtvshowtitle:
                url = self.__search([tvshowtitle] + aliases, year, season,
                                    episode)
            return url
        except:
            return
예제 #17
0
    def episode(self, url, imdb, tvdb, title, premiered, season, episode):
        try:
            if not url:
                return

            data = urlparse.parse_qs(url)
            data = dict([(i, data[i][0]) if data[i] else (i, '')
                         for i in data])
            title = data['localtvshowtitle']
            title += ' S%02dE%02d' % (int(season), int(episode))
            aliases = source_utils.aliases_to_array(eval(data['aliases']))
            aliases = [
                i + ' S%02dE%02d' % (int(season), int(episode))
                for i in aliases
            ]

            url = self.__search([title] + aliases)
            if not url and data['tvshowtitle'] != data['localtvshowtitle']:
                title = data['tvshowtitle']
                title += ' S%02dE%02d' % (int(season), int(episode))
                url = self.__search([title] + aliases)
            return url
        except:
            return