Exemplo n.º 1
0
 def sources(self, url, hostDict, hostprDict):
     try:
         sources = []
         if url is None:
             return sources
         hostDict += ['akamaized.net', 'google.com', 'picasa.com', 'blogspot.com']
         result = client.request(url, headers=self.headers, timeout=10)
         dom = dom_parser.parse_dom(result, 'a', req='data-video')
         urls = [i.attrs['data-video'] if i.attrs['data-video'].startswith('http') else 'https:' + i.attrs['data-video'] for i in dom]
         for url in urls:
             dom = []
             if 'ocloud.stream' in url:
                 result = client.request(url, headers=self.headers, timeout=10)
                 base = re.findall('<base href="([^"]+)">', result)[0]
                 hostDict += [base]
                 dom = dom_parser.parse_dom(result, 'a', req=['href', 'id'])
                 dom = [(i.attrs['href'].replace('./embed', base + 'embed'), i.attrs['id']) for i in dom if i]
                 dom = [(re.findall("var\s*ifleID\s*=\s*'([^']+)", client.request(i[0]))[0], i[1]) for i in dom if i]
             if dom:
                 try:
                     for r in dom:
                         valid, hoster = source_utils.is_host_valid(r[0], hostDict)
                         if not valid:
                             continue
                         quality = source_utils.label_to_quality(r[1])
                         urls, host, direct = source_utils.check_directstreams(r[0], hoster)
                         for x in urls:
                             if direct:
                                 size = source_utils.get_size(x['url'])
                             if size:
                                 sources.append(
                                     {'source': host, 'quality': quality, 'language': 'en', 'url': x['url'],
                                      'direct': direct, 'debridonly': False, 'info': size})
                             else:
                                 sources.append(
                                     {'source': host, 'quality': quality, 'language': 'en', 'url': x['url'],
                                      'direct': direct, 'debridonly': False})
                 except:
                     pass
             else:
                 if 'load.php' not in url:
                     valid, hoster = source_utils.is_host_valid(url, hostDict)
                     if valid:
                         try:
                             url.decode('utf-8')
                             if 'vidnode.net' in url:
                                 url = url.replace('vidnode.net', 'vidcloud9.com')
                                 hoster = 'vidcloud9'
                             sources.append(
                                 {'source': hoster, 'quality': 'SD', 'language': 'en', 'url': url, 'direct': False,
                                  'debridonly': False})
                         except:
                             pass
         return sources
     except Exception:
         failure = traceback.format_exc()
         log_utils.log('---WATCHSERIES Testing - Exception: \n' + str(failure))
         return sources
Exemplo n.º 2
0
    def sources(self, url, hostDict, hostprDict):
        try:
            sources = []
            if url == None: return sources
        
            hostDict += ['akamaized.net', 'google.com', 'picasa.com', 'blogspot.com']
            result = client.request(url, timeout=10)
            
            dom = dom_parser.parse_dom(result, 'a', req='data-video')
            urls = [i.attrs['data-video'] if i.attrs['data-video'].startswith('https') else 'https:' + i.attrs['data-video'] for i in dom]

            for url in urls:
                dom = []
                if 'vidnode.net' in url:
                    result = client.request(url, timeout=10)
                    dom = dom_parser.parse_dom(result, 'source', req=['src','label'])
                    dom = [(i.attrs['src'] if i.attrs['src'].startswith('https') else 'https:' + i.attrs['src'], i.attrs['label']) for i in dom if i]
                elif 'ocloud.stream' in url:
                    result = client.request(url, timeout=10)
                    base = re.findall('<base href="([^"]+)">', result)[0]
                    hostDict += [base]
                    dom = dom_parser.parse_dom(result, 'a', req=['href','id'])
                    dom = [(i.attrs['href'].replace('./embed',base+'embed'), i.attrs['id']) for i in dom if i]
                    dom = [(re.findall("var\s*ifleID\s*=\s*'([^']+)", client.request(i[0]))[0], i[1]) for i in dom if i]                        
                if dom:                
                    try:
                        for r in dom:
                            valid, hoster = source_utils.is_host_valid(r[0], hostDict)

                            if not valid: continue
                            quality = source_utils.label_to_quality(r[1])
                            urls, host, direct = source_utils.check_directstreams(r[0], hoster)
                            for x in urls:
                                if direct: size = source_utils.get_size(x['url'])
                                if size: sources.append({'source': host, 'quality': 'SD', 'language': 'en', 'url': x['url'], 'direct': direct, 'debridonly': False, 'info': size})         
                                else: sources.append({'source': host, 'quality': 'SD', 'language': 'en', 'url': x['url'], 'direct': direct, 'debridonly': False})         
                    except: pass
                else:
                    valid, hoster = source_utils.is_host_valid(url, hostDict)
                    if not valid: continue
                    try:
                        url.decode('utf-8')
                        sources.append({'source': hoster, 'quality': 'SD', 'language': 'en', 'url': url, 'direct': False, 'debridonly': False})
                    except:
                        pass
            return sources
        except:
            return sources
Exemplo n.º 3
0
    def sources(self, url, hostDict, hostprDict):
        try:
            sources = []
            if url == None: return sources
        
            hostDict += ['akamaized.net', 'google.com', 'picasa.com', 'blogspot.com']
            result = client.request(url, timeout=10)
            
            dom = dom_parser.parse_dom(result, 'a', req='data-video')
            urls = [i.attrs['data-video'] if i.attrs['data-video'].startswith('https') else 'https:' + i.attrs['data-video'] for i in dom]

            for url in urls:
                dom = []
                if 'vidnode.net' in url:
                    result = client.request(url, timeout=10)
                    dom = dom_parser.parse_dom(result, 'source', req=['src','label'])
                    dom = [(i.attrs['src'] if i.attrs['src'].startswith('https') else 'https:' + i.attrs['src'], i.attrs['label']) for i in dom if i]
                elif 'openload' in url:
                    result = client.request(url, timeout=10)
                    base = re.findall('<base href="([^"]+)">', result)[0]
                    hostDict += [base]
                    dom = dom_parser.parse_dom(result, 'a', req=['href','id'])
                    dom = [(i.attrs['href'].replace('./embed',base+'embed'), i.attrs['id']) for i in dom if i]
                    dom = [(re.findall("var\s*ifleID\s*=\s*'([^']+)", client.request(i[0]))[0], i[1]) for i in dom if i]                        
                if dom:                
                    try:
                        for r in dom:
                            valid, hoster = source_utils.is_host_valid(r[0], hostDict)

                            if not valid: continue
                            quality = source_utils.label_to_quality(r[1])
                            urls, host, direct = source_utils.check_directstreams(r[0], hoster)
                            for x in urls:
                                if direct: size = source_utils.get_size(x['url'])
                                if size: sources.append({'source': host, 'quality': quality, 'language': 'en', 'url': x['url'], 'direct': direct, 'debridonly': False, 'info': size})         
                                else: sources.append({'source': host, 'quality': quality, 'language': 'en', 'url': x['url'], 'direct': direct, 'debridonly': False})         
                    except: pass
                else:
                    valid, hoster = source_utils.is_host_valid(url, hostDict)
                    if not valid: continue
                    try:
                        url.decode('utf-8')
                        sources.append({'source': hoster, 'quality': 'SD', 'language': 'en', 'url': url, 'direct': False, 'debridonly': False})
                elif 'streamango.com' in url:
                    result = client.request(url, timeout=10)
                    base = re.findall('<base href="([^"]+)">', result)[0]
                    hostDict += [base]
                    dom = dom_parser.parse_dom(result, 'a', req=['href','id'])
                    dom = [(i.attrs['href'].replace('./embed',base+'embed'), i.attrs['id']) for i in dom if i]
                    dom = [(re.findall("var\s*ifleID\s*=\s*'([^']+)", client.request(i[0]))[0], i[1]) for i in dom if i]                        
                if dom:                
                    try:
                        for r in dom:
                            valid, hoster = source_utils.is_host_valid(r[0], hostDict)

                            if not valid: continue
                            quality = source_utils.label_to_quality(r[1])
                            urls, host, direct = source_utils.check_directstreams(r[0], hoster)
                            for x in urls:
                                if direct: size = source_utils.get_size(x['url'])
                                if size: sources.append({'source': host, 'quality': quality, 'language': 'en', 'url': x['url'], 'direct': direct, 'debridonly': False, 'info': size})         
                                else: sources.append({'source': host, 'quality': quality, 'language': 'en', 'url': x['url'], 'direct': direct, 'debridonly': False})         
                    except: pass
                else:
                    valid, hoster = source_utils.is_host_valid(url, hostDict)
                    if not valid: continue
                    try:
                        url.decode('utf-8')
                        sources.append({'source': hoster, 'quality': 'SD', 'language': 'en', 'url': url, 'direct': False, 'debridonly': False})						
                    except:
                        pass
            return sources
Exemplo n.º 4
0
    def sources(self, url, hostDict, hostprDict):
        try:
            sources = []

            if url == None: return sources

            data = urlparse.parse_qs(url)
            data = dict([(i, data[i][0]) if data[i] else (i, '')
                         for i in data])

            title = data['tvshowtitle']
            aliases = eval(data['aliases'])
            season, episode = int(data['season']), int(data['episode'])

            t = cleantitle.getsearch(title)
            query = urlparse.urljoin(self.base_link,
                                     self.search_link % urllib.quote_plus(t))
            r = client.request(query)

            result = client.parseDOM(r, 'li', attrs={'class': 'video-block'})
            result = [(client.parseDOM(i, 'a', ret='href')[0],
                       client.parseDOM(i, 'a', ret='title')[0],
                       re.findall('\-\s*(?:S|s)eason\s*(?:0|)(\d+)', i)[0])
                      for i in result]

            try:
                url = [
                    i[0] for i in result
                    if self.matchAlias(i[1].rsplit(' - Season')[0], aliases)
                    and (str(season) == i[2])
                ][0]
                url = urlparse.urljoin(self.base_link, url)
                url = url + '/season'
            except:
                return sources

            r = client.request(url)

            result = client.parseDOM(r,
                                     'div',
                                     attrs={'class': 'video_container'})
            result = [(client.parseDOM(i, 'a', ret='href')[0],
                       client.parseDOM(i, 'a', ret='title')[0])
                      for i in result]
            url = [
                i[0] for i in result
                if re.findall('\s*(?:E|e)pisode\s*(?:0|)(\d+)\s*', i[1])[0] ==
                str(episode)
            ][0]
            url = urlparse.urljoin(self.base_link, url)

            hostDict += [
                'akamaized.net', 'google.com', 'picasa.com', 'blogspot.com'
            ]

            r = client.request(url)

            dom = dom_parser.parse_dom(r, 'a', req='data-video')
            urls = [
                i.attrs['data-video']
                if i.attrs['data-video'].startswith('http') else 'http:' +
                i.attrs['data-video'] for i in dom
            ]

            for url in urls:
                try:
                    dom = []
                    if 'vidnode.net/streaming' in url:
                        result = client.request(url, timeout='10')

                        src = re.findall(
                            '''['"]?file['"]?\s*:\s*['"]([^'"]+)['"][^}]*['"]?label['"]?\s*:\s*['"]([\d]+)''',
                            result, re.DOTALL)
                        src = [i for i in src if 'play?fileName' in i[0]]

                        links = [(i[0], '1080p') for i in src
                                 if int(i[1]) >= 1080]
                        links += [(i[0], 'HD') for i in src
                                  if 720 <= int(i[1]) < 1080]
                        links += [(i[0], 'SD') for i in src if int(i[1]) < 720]
                        for i in links:
                            sources.append({
                                'source': 'gvideo',
                                'quality': i[1],
                                'language': 'en',
                                'url': i[0],
                                'direct': True,
                                'debridonly': False
                            })
                    elif 'vidcloud.icu' in url:
                        result = client.request(url, timeout='10')

                        src = re.findall(
                            '''['"]?file['"]?\s*:\s*['"]([^'"]+)['"][^}]*['"]?label['"]?\s*:\s*['"]([^'"]+)''',
                            result, re.DOTALL)
                        src = [i for i in src if i[0].startswith('http')]
                        for i in src:
                            sources.append({
                                'source': 'CDN',
                                'quality': 'SD',
                                'language': 'en',
                                'url': i[0],
                                'direct': True,
                                'debridonly': False
                            })
                    elif 'ocloud.stream' in url:
                        result = client.request(url, timeout=10)
                        base = re.findall('<base href="([^"]+)">', result)[0]
                        hostDict += [base]
                        dom = dom_parser.parse_dom(result,
                                                   'a',
                                                   req=['href', 'id'])
                        dom = [(i.attrs['href'].replace(
                            './embed', base + 'embed'), i.attrs['id'])
                               for i in dom if i]
                        dom = [(re.findall("var\s*ifleID\s*=\s*'([^']+)",
                                           client.request(i[0]))[0], i[1])
                               for i in dom if i]
                    if dom:
                        try:
                            for r in dom:
                                valid, hoster = source_utils.is_host_valid(
                                    r[0], hostDict)

                                if not valid: continue
                                quality = source_utils.label_to_quality(r[1])
                                urls, host, direct = source_utils.check_directstreams(
                                    r[0], hoster)
                                for x in urls:
                                    if direct:
                                        size = source_utils.get_size(x['url'])
                                    if size:
                                        sources.append({
                                            'source': host,
                                            'quality': quality,
                                            'language': 'en',
                                            'url': x['url'],
                                            'direct': direct,
                                            'debridonly': False,
                                            'info': size
                                        })
                                    else:
                                        sources.append({
                                            'source': host,
                                            'quality': quality,
                                            'language': 'en',
                                            'url': x['url'],
                                            'direct': direct,
                                            'debridonly': False
                                        })
                        except:
                            pass
                    else:
                        valid, hoster = source_utils.is_host_valid(
                            url, hostDict)
                        if not valid: continue
                        try:
                            url.decode('utf-8')
                            sources.append({
                                'source': hoster,
                                'quality': 'SD',
                                'language': 'en',
                                'url': url,
                                'direct': False,
                                'debridonly': False
                            })
                        except:
                            pass
                except:
                    pass
            return sources
        except:
            log_utils.log(
                '>>>> %s TRACE <<<<\n%s' %
                (__file__.upper().split('\\')[-1].split('.')[0],
                 traceback.format_exc()), log_utils.LOGDEBUG)
            return sources
    def sources(self, url, hostDict, hostprDict):
        try:
            sources = []
            if url == None: return sources

            hostDict += [
                'akamaized.net', 'google.com', 'picasa.com', 'blogspot.com'
            ]
            result = client.request(url)

            dom = dom_parser.parse_dom(result, 'a', req='data-video')
            urls = [
                i.attrs['data-video']
                if i.attrs['data-video'].startswith('http') else 'http:' +
                i.attrs['data-video'] for i in dom
            ]

            for url in urls:
                try:
                    dom = []
                    if 'vidnode.net/streaming' in url:
                        result = client.request(url, timeout='10')

                        src = re.findall(
                            '''['"]?file['"]?\s*:\s*['"]([^'"]+)['"][^}]*['"]?label['"]?\s*:\s*['"]([\d]+)''',
                            result, re.DOTALL)
                        src = [i for i in src if 'play?fileName' in i[0]]

                        links = [(i[0], '1080p') for i in src
                                 if int(i[1]) >= 1080]
                        links += [(i[0], 'HD') for i in src
                                  if 720 <= int(i[1]) < 1080]
                        links += [(i[0], 'SD') for i in src if int(i[1]) < 720]
                        for i in links:
                            sources.append({
                                'source': 'gvideo',
                                'quality': i[1],
                                'language': 'en',
                                'url': i[0],
                                'direct': True,
                                'debridonly': False
                            })
                    elif 'ocloud.stream' in url:
                        result = client.request(url, timeout=10)
                        base = re.findall('<base href="([^"]+)">', result)[0]
                        hostDict += [base]
                        dom = dom_parser.parse_dom(result,
                                                   'a',
                                                   req=['href', 'id'])
                        dom = [(i.attrs['href'].replace(
                            './embed', base + 'embed'), i.attrs['id'])
                               for i in dom if i]
                        dom = [(re.findall("var\s*ifleID\s*=\s*'([^']+)",
                                           client.request(i[0]))[0], i[1])
                               for i in dom if i]
                    if dom:
                        try:
                            for r in dom:
                                valid, hoster = source_utils.is_host_valid(
                                    r[0], hostDict)

                                if not valid: continue
                                quality = source_utils.label_to_quality(r[1])
                                urls, host, direct = source_utils.check_directstreams(
                                    r[0], hoster)
                                for x in urls:
                                    if direct:
                                        size = source_utils.get_size(x['url'])
                                    if size:
                                        sources.append({
                                            'source': host,
                                            'quality': quality,
                                            'language': 'en',
                                            'url': x['url'],
                                            'direct': direct,
                                            'debridonly': False,
                                            'info': size
                                        })
                                    else:
                                        sources.append({
                                            'source': host,
                                            'quality': quality,
                                            'language': 'en',
                                            'url': x['url'],
                                            'direct': direct,
                                            'debridonly': False
                                        })
                        except:
                            pass
                    else:
                        valid, hoster = source_utils.is_host_valid(
                            url, hostDict)
                        if not valid: continue
                        try:
                            url.decode('utf-8')
                            sources.append({
                                'source': hoster,
                                'quality': 'SD',
                                'language': 'en',
                                'url': url,
                                'direct': False,
                                'debridonly': False
                            })
                        except:
                            pass
                except:
                    pass
            return sources
        except:
            return sources