Beispiel #1
0
    def __search(self, imdb, isMovieSearch):
        try:
            sHtmlContent = self.scraper.get(self.base_link).content

            pattern = '<meta name="csrf-token" content="([^"]+)">'
            string = str(sHtmlContent)
            token = re.compile(pattern, flags=re.I | re.M).findall(string)

            if len(token) == 0:
                return  #No Entry found?
            # first iteration of session object to be parsed for search

            sHtmlContent = self.scraper.get(self.search % imdb,
                                            headers={
                                                'X-CSRF-TOKEN':
                                                token[0],
                                                'X-Requested-With':
                                                'XMLHttpRequest'
                                            }).text

            content = json.loads(sHtmlContent)

            if isMovieSearch:
                returnObjects = content["movies"]
            else:
                returnObjects = content["series"]

            return returnObjects
        except:
            try:
                source_faultlog.logFault(__name__, source_faultlog.tagSearch,
                                         imdb)
            except:
                return
        return
    def sources(self, url, hostDict, hostprDict):
        sources = []

        try:
            if not url:
                return sources

            j = self.__get_json(url)
            j = [i for i in j['links'] if 'links' in j]
            j = [(i['hoster'].lower(), i['id']) for i in j]
            j = [(re.sub('hd$', '',
                         i[0]), i[1], 'HD' if i[0].endswith('hd') else 'SD')
                 for i in j]
            j = [(i[0], i[1], i[2]) for i in j]

            for hoster, url, quality in j:
                valid, hoster = source_utils.is_host_valid(hoster, hostDict)
                if not valid: continue
                sources.append({
                    'source': hoster,
                    'quality': quality,
                    'language': 'de',
                    'url': ('watch/%s' % url),
                    'direct': False,
                    'debridonly': False
                })

            return sources
        except:
            source_faultlog.logFault(__name__, source_faultlog.tagScrape)
            return sources
Beispiel #3
0
    def sources(self, url, hostDict, hostprDict):
        sources = []

        try:
            if not url:
                return sources

            for idx, items in enumerate(url):
                if "clip" in items:
                    sources.append({
                        'source': "clipboard.cc",
                        'quality': 'HD',
                        'language': 'de',
                        'url': items,
                        'direct': True,
                        'debridonly': False
                    })

                valid, host = source_utils.is_host_valid(items, hostDict)
                if not valid: continue

                sources.append({
                    'source': host,
                    'quality': 'HD',
                    'language': 'de',
                    'url': items,
                    'direct': False,
                    'debridonly': False,
                    'checkquality': True
                })

            return sources
        except:
            source_faultlog.logFault(__name__, source_faultlog.tagScrape)
            return sources
Beispiel #4
0
    def sources(self, url, hostDict, hostprDict):
        sources = []

        try:
            if not url:
                return sources

            r = cache.get(client.request,
                          4,
                          urlparse.urljoin(self.base_link, self.conf_link),
                          XHR=True)
            r = json.loads(r).get('streamer')
            r = cache.get(client.request,
                          4,
                          r + '%s.mp4/master.m3u8' % url,
                          XHR=True)

            r = re.findall('RESOLUTION\s*=\s*\d+x(\d+).*?\n(http.*?)(?:\n|$)',
                           r, re.IGNORECASE)
            r = [(source_utils.label_to_quality(i[0]), i[1]) for i in r]

            for quality, link in r:
                sources.append({
                    'source': 'CDN',
                    'quality': quality,
                    'language': 'de',
                    'url': link,
                    'direct': True,
                    'debridonly': False
                })

            return sources
        except:
            source_faultlog.logFault(__name__, source_faultlog.tagScrape, url)
            return sources
    def __search(self, titles, year):
        try:
            query = self.search_link % (urllib.quote_plus(urllib.quote_plus(cleantitle.query(titles[0]))))
            query = urlparse.urljoin(self.base_link, query)

            t = [cleantitle.get(i) for i in set(titles) if i]

            r = cache.get(client.request, 4, query)

            links = dom_parser.parse_dom(r, 'a', attrs={'class': 'coverImage'})
            links = [(i.attrs['href'], re.findall('(.*?)\(', i.attrs['title'])[0]) for i in links if year in i.content]
            for i in links:
                title = i[1]
                title = cleantitle.get(title)
                if title in t:
                    return i[0]
                else:
                    continue
            return ""
        except:
            try:
                source_faultlog.logFault(__name__, source_faultlog.tagSearch, titles[0])
            except:
                return
            return
Beispiel #6
0
    def __search(self, titles):
        try:
            t = [cleantitle.get(i) for i in set(titles) if i]

            for title in titles:

                oRequest = cRequestHandler(self.base_link + "/", caching = False)
                oRequest.addHeaderEntry('Host', 'cinemaxx.cc')
                oRequest.addHeaderEntry('Referer', 'https://cinemaxx.cc/')
                oRequest.addParameters('do', 'search')
                oRequest.addParameters('subaction', 'search')
                oRequest.addParameters('story', title)
                oRequest.addParameters('full_search', '0')
                oRequest.addParameters('search_start', '0')
                oRequest.addParameters('result_from', '1')
                oRequest.addParameters('submit', 'submit')
                oRequest.setRequestType(1)
                result = oRequest.request()
                

                links = dom_parser.parse_dom(result, 'div', attrs={'class': 'shortstory-in'})
                links = [dom_parser.parse_dom(i, 'a')[0] for i in links]
                links = [(i.attrs['href'], i.attrs['title']) for i in links]
                links = [i[0] for i in links if any(a in cleantitle.get(i[1]) for a in t)]

                if len(links) > 0:
                    return source_utils.strip_domain(links[0])
            return
        except:
            try:
                source_faultlog.logFault(__name__, source_faultlog.tagSearch, titles[0])
            except:
                return
            return
Beispiel #7
0
    def sources(self, url, hostDict, hostprDict):
        sources = []

        try:
            if not url:
                return sources

            html = cache.get(requests.get, 6, url)
            url_regex = "hls.*?(http.*?m3u8)"
            link = re.findall(url_regex, html.content)
            link = link[0].replace("\\", "")
            sources.append({
                'source': 'CDN',
                'quality': 'SD',
                'language': 'de',
                'url': link,
                'direct': True,
                'debridonly': False,
                'info': ''
            })

            return sources
        except:
            source_faultlog.logFault(__name__, source_faultlog.tagScrape, link)
            return sources
Beispiel #8
0
    def resolve(self, url):
        try:
            url = urlparse.urljoin(self.base_link, url)

            oRequest = cRequestHandler(url, caching=False)
            oRequest.removeBreakLines(False)
            oRequest.removeNewLines(False)
            content = oRequest.request()
            content = client.request(url)
            url = dom_parser.parse_dom(content, 'iframe')[0].attrs['src']

            recap = recaptcha_app.recaptchaApp()

            key = recap.getSolutionWithDialog(
                url, "6LeiZSYUAAAAAI3JZXrRnrsBzAdrZ40PmD57v_fs",
                self.recapInfo)
            print "Recaptcha2 Key: " + key
            response = None
            if key != "" and "skipped" not in key.lower():
                content = client.request(url)
                s = dom_parser.parse_dom(content, 'input',
                                         attrs={'name': 's'})[0].attrs['value']
                link = client.request(url + '?t=%s&s=%s' % (key, s),
                                      output='geturl')
                return link
            elif not response or "skipped" in key.lower():
                return
        except Exception as e:
            source_faultlog.logFault(__name__, source_faultlog.tagResolve)
            return
Beispiel #9
0
    def sources(self, url, hostDict, hostprDict):
        sources = []

        try:
            if not url:
                return sources
            oRequest = cRequestHandler(urlparse.urljoin(self.base_link, url))
            content = oRequest.request()
            links = dom_parser.parse_dom(content, 'a')
            links = [
                i for i in links
                if 'href' in i.attrs and url in i.attrs['href']
            ]
            links = [(i.attrs['href'], i.attrs['title'].replace('HD', ''),
                      '720p' if 'HD' in i.attrs['href'] else 'SD')
                     for i in links if 'title' in i.attrs]

            for link, hoster, quality in links:
                valid, hoster = source_utils.is_host_valid(hoster, hostDict)
                if not valid: continue
                sources.append({
                    'source': hoster,
                    'quality': quality,
                    'language': 'de',
                    'info': 'Recaptcha',
                    'url': link,
                    'direct': False,
                    'debridonly': False,
                    'captcha': True
                })

            return sources
        except:
            source_faultlog.logFault(__name__, source_faultlog.tagScrape)
            return sources
    def sources(self, url, hostDict, hostprDict):
        sources = []
        try:
            if not url:
                return sources
            data = {'ID': re.findall('\d+', url)[0], 'lang': 2}

            data = cache.get(client.request, 4, urlparse.urljoin(self.base_link, self.request_link), post=data, XHR=True)
            data = json.loads(data)

            if data['status']:
                data = [(i, data['links'][i]) for i in data['links'] if 'links' in data]
                data = [(i[0], i[1][0], (i[1][1:])) for i in data]

                for hoster, quali, links in data:
                    valid, hoster = source_utils.is_host_valid(hoster, hostDict)
                    if not valid: continue

                    quali = int(quali)
                    quali = '1080p' if quali > 2 else '720p' if quali > 1 else 'SD'
                    for link in links:
                        try:
                            sources.append({'source': hoster, 'quality': quali, 'language': 'de', 'url': self.out_link % link,
                                 'direct': False, 'debridonly': False, 'captcha': True, 'info': 'Recaptcha'})
                        except:
                            pass

            return sources
        except:
            source_faultlog.logFault(__name__, source_faultlog.tagScrape)
            return sources
Beispiel #11
0
    def __search(self, imdb, isMovieSearch):
        try:
            oRequest = cRequestHandler(self.base_link)
            oRequest.removeBreakLines(False)
            oRequest.removeNewLines(False)
            sHtmlContent = oRequest.request()

            pattern = '<meta name="csrf-token" content="([^"]+)">'
            string = str(sHtmlContent)
            token = re.compile(pattern, flags=re.I | re.M).findall(string)

            if len(token) == 0:
                return  #No Entry found?
            # first iteration of session object to be parsed for search
            oRequest = cRequestHandler(self.search % imdb)
            oRequest.removeBreakLines(False)
            oRequest.removeNewLines(False)
            oRequest.addHeaderEntry('X-CSRF-TOKEN', token[0])
            oRequest.addHeaderEntry('X-Requested-With', 'XMLHttpRequest')
            sHtmlContent = oRequest.request()

            content = json.loads(sHtmlContent)
            if isMovieSearch:
                returnObjects = content["movies"]
            else:
                returnObjects = content["series"]

            return returnObjects
        except:
            try:
                source_faultlog.logFault(__name__, source_faultlog.tagSearch,
                                         imdb)
            except:
                return
        return
    def __search(self, titles):
        try:
            query = self.search_link % urllib.quote_plus(
                cleantitle.query(titles[0]))
            query = urlparse.urljoin(self.base_link, query)

            t = [cleantitle.get(i) for i in set(titles) if i]

            r = client.request(query)

            body = dom_parser.parse_dom(r,
                                        'div',
                                        attrs={'class':
                                               'content_body'})[1].content
            r = dom_parser.parse_dom(body, 'a', req='href')
            r = [(i.attrs['href'],
                  i.content.lower().replace('<b>', '').replace('</b>', ''))
                 for i in r if i]
            r = [i for i in r if '<' not in i[1]]

            r = [i[0] for i in r if cleantitle.get(i[1]) in t]

            if len(r) > 0:
                return source_utils.strip_domain(r[0])
            return ""
        except:
            try:
                source_faultlog.logFault(__name__, source_faultlog.tagSearch,
                                         titles[0])
            except:
                return
            return
    def sources(self, url, hostDict, hostprDict):
        sources = []
        try:
            if not url:
                return

            url = urlparse.urljoin(self.base_link, url)

            r = client.request(url)
            r = r.replace('\n', ' ')
            r = dom_parser.parse_dom(r, 'div', attrs={'class': 'fullstory'})
            r = dom_parser.parse_dom(r, 'div', attrs={'class': 'row'})

            r = dom_parser.parse_dom(r, 'div', attrs={'class': 'inner'})

            r = dom_parser.parse_dom(r, 'a', req='href')
            r = [i.attrs['href'].strip() for i in r]

            for link in r:
                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:
            source_faultlog.logFault(__name__, source_faultlog.tagScrape)
            return sources
    def sources(self, url, hostDict, hostprDict):
        sources = []
        try:
            if not url:
                return sources

            query = urlparse.urljoin(self.base_link, url)
            oRequest = cRequestHandler(query)
            oRequest.removeBreakLines(False)
            oRequest.removeNewLines(False)
            content = oRequest.request()
            quality = dom_parser.parse_dom(content,
                                           'div',
                                           attrs={'class': 'tabformat'})

            for quali in quality:
                if len(quality) > 1:
                    oRequest = cRequestHandler(
                        urlparse.urljoin(
                            self.base_link,
                            dom_parser.parse_dom(quali, 'a')[0].attrs['href']))
                    oRequest.removeBreakLines(False)
                    oRequest.removeNewLines(False)
                    content = oRequest.request()
                self.__getRelease(sources, content, hostDict)

            self.__getRelease(sources, content, hostDict)

            if len(sources) == 0:
                raise Exception()
            return sources
        except:
            source_faultlog.logFault(__name__, source_faultlog.tagScrape, url)
            return sources
Beispiel #15
0
    def __search(self, titles, year):
        try:
            t = [cleantitle.get(i) for i in set(titles) if i]
            y = [
                '%s' % str(year),
                '%s' % str(int(year) + 1),
                '%s' % str(int(year) - 1), '0'
            ]

            r = client.request(
                urlparse.urljoin(self.base_link, self.search_link),
                post=urllib.urlencode({'val': cleantitle.query(titles[0])}),
                XHR=True)
            r = dom_parser.parse_dom(r, 'li')
            r = dom_parser.parse_dom(r, 'a', req='href')
            r = [(i.attrs['href'], i.content,
                  re.findall('\((\d{4})', i.content)) for i in r]
            r = [(i[0], i[1], i[2][0] if i[2] else '0') for i in r]
            r = [i[0] for i in r if cleantitle.get(i[1]) in t and i[2] in y]
            if len(r) > 0:
                r = r[0]
            else:
                return

            return source_utils.strip_domain(r)
        except:
            source_faultlog.logFault(__name__, source_faultlog.tagSearch)
            return
Beispiel #16
0
    def __search(self, imdb):
        try:
            r = client.request(
                urlparse.urljoin(self.base_link, self.search_link % imdb))
            r = dom_parser.parse_dom(r, 'a', req='href')
            r = [i.attrs['href'] for i in r if i]

            url = None
            if len(r) > 1:
                for i in r:
                    data = client.request(urlparse.urljoin(self.base_link, i))
                    data = re.compile('(imdbid\s*[=|:]\s*"%s"\s*,)' % imdb,
                                      re.DOTALL).findall(data)

                    if len(data) >= 1:
                        url = i
            elif len(r) > 0:
                url = r[0]

            if url:
                return source_utils.strip_domain(url)
        except:
            try:
                source_faultlog.logFault(__name__, source_faultlog.tagSearch,
                                         imdb)
            except:
                return
            return
    def __search(self, imdb):
        try:
            l = ['1', '15']

            r = client.request(
                urlparse.urljoin(self.base_link, self.search_link % imdb))
            r = dom_parser.parse_dom(r,
                                     'table',
                                     attrs={'id': 'RsltTableStatic'})
            r = dom_parser.parse_dom(r, 'tr')
            r = [(dom_parser.parse_dom(i, 'a', req='href'),
                  dom_parser.parse_dom(i,
                                       'img',
                                       attrs={'alt': 'language'},
                                       req='src')) for i in r]
            r = [(i[0][0].attrs['href'], i[0][0].content, i[1][0].attrs['src'])
                 for i in r if i[0] and i[1]]
            r = [(i[0], i[1], re.findall('.+?(\d+)\.', i[2])) for i in r]
            r = [(i[0], i[1], i[2][0] if len(i[2]) > 0 else '0') for i in r]
            r = sorted(r, key=lambda i: int(i[2]))  # german > german/subbed
            r = [i[0] for i in r if i[2] in l]

            if len(r) > 0:
                return source_utils.strip_domain(r[0])
            return ""
        except:
            try:
                source_faultlog.logFault(__name__, source_faultlog.tagSearch,
                                         imdb)
            except:
                return
            return
    def resolve(self, url):
        try:
            url = urlparse.urljoin(self.base_link, url)

            recap = recaptcha_app.recaptchaApp()

            key = recap.getSolutionWithDialog(
                url, "6LeERkUUAAAAAJH4Yqk-gQH1N6psg0KCuEq_Lkxf",
                self.recapInfo)
            print "Recaptcha2 Key: " + key
            response = None
            if key != "" and "skipped" not in key.lower():
                response = self.scraper.post(
                    url,
                    data={'g-recaptcha-response': key},
                    allow_redirects=True)
            elif not response or "skipped" in key.lower():
                return

            if response is not None:
                url = response.url

            if self.base_link not in url:
                if 'google' in url:
                    return directstream.google(url)[0]['url']
            return url
        except Exception as e:
            source_faultlog.logFault(__name__, source_faultlog.tagResolve)
            return
Beispiel #19
0
    def sources(self, url, hostDict, hostprDict):
        sources = []
        try:
            if not url:
                return sources
            episode = None
            season = None
            if isinstance(url, list):
                season, episode, url = url
            url = urlparse.urljoin(self.base_link, url)
            

            oRequest = cRequestHandler(url, caching=False)
            content = oRequest.request()
            quality = re.findall(r'\<span class=\"film-rip ignore-select\"><a href=\"https://cinemaxx.cc/xfsearch/rip/(.*?)/', content)[0]

            if "HD" in quality:
                quality = '1080p'
            else:
                quality = 'SD'
                
            link = dom_parser.parse_dom(content, 'div', attrs={'id': 'full-video'})
            if season:
                try:
                    link = re.findall("vk.show\(\d+,(.*?)\)", link[0].content)[0]
                    link = re.findall("\[(.*?)\]", link)[int(season)-1]
                    link = re.findall("'(.*?)'", link)
                    link = link[int(episode)-1]
                    valid, hoster = source_utils.is_host_valid(link, hostDict)
                    if valid:
                        sources.append({'source': hoster, 'quality': quality, 'language': 'de', 'info': '',
                                        'url': link, 'direct': False, 'debridonly': False, 'checkstreams': True})
                    else: pass
                except:
                    #we have a tvshow, but no seasons to choose
                    #cinemaxx can host specific seasons, its stated in the url (i.e. http://cinemaxx.cc/serien/743-homeland-7-staffel.html)
        
                    link = dom_parser.parse_dom(link, 'iframe')
                    link = link[0].attrs['src']
                    valid, hoster = source_utils.is_host_valid(link, hostDict)
                    if valid:
                        sources.append({'source': hoster, 'quality': quality, 'language': 'de', 'info': '',
                                        'url': link, 'direct': False, 'debridonly': False, 'checkstreams': True})
                    else: pass
            else:
                link = dom_parser.parse_dom(link, 'iframe')
                link = link[0].attrs['src']

                valid, hoster = source_utils.is_host_valid(link, hostDict)
                if valid:
                    sources.append({'source': hoster, 'quality': quality, 'language': 'de', 'info': '',
                                    'url': link, 'direct': False, 'debridonly': False, 'checkstreams': True})
                else: pass

            if len(sources) == 0:
                raise Exception()
            return sources
        except:
            source_faultlog.logFault(__name__, source_faultlog.tagScrape, url)
            return sources
    def sources(self, url, hostDict, hostprDict):
        sources = []
        try:
            if not url:
                return sources

            content = cache.get(client.request, 4,
                                urlparse.urljoin(self.base_link, url))

            hoster = re.findall('blank"[^>]*href="([^"]+)">', content)

            for link in hoster:
                link = link.strip()
                quali, info = source_utils.get_release_quality(link)

                valid, hoster = source_utils.is_host_valid(link, hostDict)
                if not valid: continue

                sources.append({
                    'source': hoster,
                    'quality': quali,
                    'language': 'de',
                    'info': info,
                    'url': link,
                    'direct': False,
                    'debridonly': False,
                    'checkquality': True
                })

            return sources
        except:
            source_faultlog.logFault(__name__, source_faultlog.tagScrape, url)
            return sources
    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])
            url = data.get('url')
            episode = int(data.get('episode', 1))

            r = client.request(urlparse.urljoin(self.base_link, url))
            r = {'': dom_parser.parse_dom(r, 'div', attrs={'id': 'gerdub'}), 'subbed': dom_parser.parse_dom(r, 'div', attrs={'id': 'gersub'})}

            for info, data in r.iteritems():
                data = dom_parser.parse_dom(data, 'tr')
                data = [dom_parser.parse_dom(i, 'a', req='href') for i in data if dom_parser.parse_dom(i, 'a', attrs={'id': str(episode)})]
                data = [(link.attrs['href'], dom_parser.parse_dom(link.content, 'img', req='src')) for i in data for link in i]
                data = [(i[0], i[1][0].attrs['src']) for i in data if i[1]]
                data = [(i[0], re.findall('/(\w+)\.\w+', i[1])) for i in data]
                data = [(i[0], i[1][0]) for i in data if i[1]]

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

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

            return sources
        except:
            source_faultlog.logFault(__name__,source_faultlog.tagScrape)
            return sources
    def __search(self, titles):
        try:
            t = [cleantitle.get(i) for i in set(titles) if i]
            for title in titles:
                params = {'a': '2', 'query': title}
                content = cache.get(client.request,
                                    4,
                                    self.search_link,
                                    post=params)

                if content is not None and "noEntry" not in content:
                    content = content.replace('entryLink" <a=""', 'entryLink"')

                    entryLinks = dom_parser.parse_dom(
                        content, 'a', attrs={"class": "entryLink"})
                    if len(entryLinks) == 0: continue
                    links = [
                        link.attrs['href'] for link in entryLinks
                        if cleantitle.get(link.content) in t
                    ]

                    if len(links) > 0:
                        return source_utils.strip_domain(links[0])
            return
        except:
            try:
                source_faultlog.logFault(__name__, source_faultlog.tagSearch,
                                         titles[0])
            except:
                return
            return
    def sources(self, url, hostDict, hostprDict):
        sources = []
        try:
            if not url:
                return sources
            query = urlparse.urljoin(self.base_link, url)
            r = cache.get(client.request, 4, query)

            links = dom_parser.parse_dom(r, 'div', attrs={'id': 'tab-plot_german'})
            links = dom_parser.parse_dom(links, 'tbody')
            links = dom_parser.parse_dom(links, 'tr')
            links = [(dom_parser.parse_dom(i, 'a')[0],
                      dom_parser.parse_dom(i, 'td', attrs={'class': 'votesCell'})[0])
                     for i in links if "gif" in i.content]

            links = [(i[0][1], i[0].attrs['href'], source_utils.get_release_quality(i[1].content)[0]) for i in links]

            for hoster, link, quality in links:
                valid, hoster = source_utils.is_host_valid(hoster, hostDict)
                if not valid:
                    continue
                if '?' in link:
                    link = urlparse.urljoin(url, link)

                sources.append({'source': hoster, 'quality': quality, 'language': 'de', 'url': link, 'direct': False,
                                'debridonly': False, 'checkquality': True})

            if len(sources) == 0:
                raise Exception()
            return sources
        except:
            source_faultlog.logFault(__name__, source_faultlog.tagScrape, url)
            return sources
    def __search(self, titles, year, season='0'):
        try:
            query = self.search_link % (urllib.quote_plus(
                cleantitle.query(titles[0])))
            query = urlparse.urljoin(self.base_link, query)

            titles = [cleantitle.get(i) for i in set(titles) if i]

            cache.cache_clear()
            searchResult = cache.get(self.scraper.get, 4, query).content
            results = re.findall(
                r'<div class=\"movie-title\">\n((?s).*?)\"(.*?)\">(.*?)</a>',
                searchResult)

            usedIndex = 0
            #Find result with matching name and season
            for x in range(0, len(results)):
                title = cleantitle.get(results[x][2])

                if any(i in title for i in titles):
                    return source_utils.strip_domain(results[x][1])
                usedIndex += 1

            return
        except:
            try:
                source_faultlog.logFault(__name__, source_faultlog.tagSearch,
                                         titles[0])
            except:
                return
            return
Beispiel #25
0
    def __search(self, titles, year):
        try:
            t = [cleantitle.get(i) for i in set(titles) if i]
            y = [
                '%s' % str(year),
                '%s' % str(int(year) + 1),
                '%s' % str(int(year) - 1), '0'
            ]

            r = cache.get(self.__get_json, 12, "series")
            r = [(i.get('id'), i.get('series')) for i in r]
            r = [(i[0], i[1], re.findall('(.+?) \((\d{4})\)?', i[1]))
                 for i in r if cleantitle.get(i[1]) in t]
            r = [(i[0], i[2][0][0] if len(i[2]) > 0 else i[1],
                  i[2][0][1] if len(i[2]) > 0 else '0') for i in r]
            r = sorted(r, key=lambda i: int(i[2]),
                       reverse=True)  # with year > no year
            r = [i[0] for i in r if i[2] in y]
            if len(r) > 0:
                r = r[0]
            else:
                return

            return 'series/%s/' % r
        except:
            source_faultlog.logFault(__name__, source_faultlog.tagSearch)
            return
    def sources(self, url, hostDict, hostprDict):
        sources = []

        try:
            if not url:
                return sources

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

            r = dom_parser.parse_dom(r, 'div', attrs={'class': 'hosterSiteVideo'})
            r = dom_parser.parse_dom(r, 'li', attrs={'data-lang-key': re.compile('[1|2|3]')})
            r = [(i.attrs['data-link-target'], dom_parser.parse_dom(i, 'h4'),
                  'subbed' if i.attrs['data-lang-key'] == '3' else '' if i.attrs['data-lang-key'] == '1' else 'subbed' if i.attrs['data-lang-key'] == '2' else '') for i
                 in r]
            r = [(i[0], re.sub('\s(.*)', '', i[1][0].content), 'HD' if 'hd' in i[1][0][1].lower() else 'SD', i[2]) for i in r]

            for link, host, quality, info in r:
                print host
                #if 'HD' in quality: host = re.findall('(.+?)\s*<br', host)[0]
                valid, host = source_utils.is_host_valid(host, hostDict)
                if not valid: continue

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

            return sources
        except:
            source_faultlog.logFault(__name__, source_faultlog.tagScrape, url)
            return sources
    def __search(self, titles, year, content):
        try:
            t = [cleantitle.get(i) for i in set(titles) if i]

            c = client.request(urlparse.urljoin(self.base_link, self.year_link % int(year)), output='cookie')

            p = urllib.urlencode({'search': cleantitle.query(titles[0])})
            c = client.request(urlparse.urljoin(self.base_link, self.search_link), cookie=c, post=p, output='cookie')
            r = client.request(urlparse.urljoin(self.base_link, self.type_link % content), cookie=c, post=p)

            r = dom_parser.parse_dom(r, 'table', attrs={'width': '100%'})[0].content
            r = dom_parser.parse_dom(r, 'tr')
            r = [(dom_parser.parse_dom(i.content, 'a')) for i in r if 'otherLittles' in i.content]

            r = sorted(r, key=lambda i: int(i[1].content), reverse=True)  # with year > no year

            links = [i[0].attrs['href'] for i in r if
                     (cleantitle.get(i[0].content).partition('<')[0] in t) and i[1].content == year]

            if len(r) > 0:
                return source_utils.strip_domain(links[0])
            return ""
        except:
            source_faultlog.logFault(__name__, source_faultlog.tagSearch)
            return
Beispiel #28
0
    def __search(self, titles, year):
        try:
            query = self.search_link % urllib.quote_plus(cleantitle.query(titles[0]))
            query = urlparse.urljoin(self.base_link, query)

            t = [cleantitle.get(i) for i in set(titles) if i]
            y = ['%s' % str(year), '%s' % str(int(year) + 1), '%s' % str(int(year) - 1), '0']

            r = client.request(query, XHR=True)

            if r and r.startswith('{'): r = '[%s]' % r

            r = json.loads(r)
            r = [(i['url'], i['name']) for i in r if 'name' in i and 'url' in i]
            r = [(i[0], i[1], re.findall('(.+?) \(*(\d{4})?\)*$', i[1])) for i in r]
            r = [(i[0], i[2][0][0] if len(i[2]) > 0 else i[1], i[2][0][1] if len(i[2]) > 0 else '0') for i in r]
            r = sorted(r, key=lambda i: int(i[2]), reverse=True)  # with year > no year
            r = [i[0] for i in r if cleantitle.get(i[1]) in t and i[2] in y]
            if len(r) > 0:
                r = r[0]
            else:
                return

            url = source_utils.strip_domain(r)
            url = url.replace('serien/', '')
            return url
        except:
            try:
                source_faultlog.logFault(__name__, source_faultlog.tagSearch, titles[0])
            except:
                return
            return
Beispiel #29
0
    def __search(self, imdb):
        try:
            oRequest = cRequestHandler(
                urlparse.urljoin(self.base_link, self.search_link % imdb))
            oRequest.removeBreakLines(False)
            oRequest.removeNewLines(False)
            r = oRequest.request()
            r = re.findall(r'linkto\".href=\"(.*?)\"\>', r)

            url = None
            if len(r) > 1:
                for i in r:
                    oRequest = cRequestHandler(
                        urlparse.urljoin(self.base_link, i))
                    oRequest.removeBreakLines(False)
                    oRequest.removeNewLines(False)
                    data = oRequest.request()
                    data = re.compile('(imdbid\s*[=|:]\s*"%s"\s*,)' % imdb,
                                      re.DOTALL).findall(data)

                    if len(data) >= 1:
                        url = i
            elif len(r) > 0:
                url = r[0]

            if url:
                return source_utils.strip_domain(url)

        except:
            try:
                source_faultlog.logFault(__name__, source_faultlog.tagSearch,
                                         imdb)
            except:
                return
            return
Beispiel #30
0
    def __search(self, titles, imdb, year):
        try:
            query = self.search_link % (urllib.quote_plus(cleantitle.query(titles[0])))
            query = urlparse.urljoin(self.base_link, query)

            t = [cleantitle.get(i) for i in set(titles) if i]
            y = ['%s' % str(year), '%s' % str(int(year) + 1), '%s' % str(int(year) - 1), '0']

            r = cache.get(client.request, 4, query, XHR=True)
            r = json.loads(r)

            r = [(i.get('title'), i.get('custom_fields', {})) for i in r.get('posts', [])]
            r = [(i[0], i[1]) for i in r if i[0] and i[1]]
            r = [(i[0], i[1].get('Streaming', ['']), i[1].get('Jahr', ['0']), i[1].get('IMDb-Link', [''])) for i in r if i]
            r = [(i[0], i[1][0], i[2][0], re.findall('.+?(tt\d+).*?', i[3][0])) for i in r if i[0] and i[1] and i[2] and i[3]]
            r = [i[1] for i in r if imdb in i[3] or (cleantitle.get(i[0]) in t and i[2] in y)]
            if len(r) > 0 :
                return source_utils.strip_domain(r[0])
            return ""

        except:
            try:
                source_faultlog.logFault(__name__, source_faultlog.tagSearch, titles[0])
            except:
                return
            return