예제 #1
0
    def sources(self, url):
        try:
            srcs = []

            if url == None: return srcs

            if not str(url).startswith('http'):

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

                title = data['tvshowtitle'] if 'tvshowtitle' in data else data[
                    'title']

                imdb = data['imdb']

                match = (title.translate(None, '\/:*?"\'<>|!,')).replace(
                    ' ', '-').replace('--', '-').lower()

                if 'tvshowtitle' in data:
                    url = '%s/tv-show/%s/season/%01d/episode/%01d' % (
                        self.base_link, match, int(
                            data['season']), int(data['episode']))
                else:
                    url = '%s/movie/%s' % (self.base_link, match)

                result = client.request(url, limit='5')
                result = client.parseDOM(result, 'title')[0]

                if '%TITLE%' in result: raise Exception()

                r = client.request(url, output='extended')

                if not imdb in r[0]: raise Exception()

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

                r = client.request(url, output='extended')

            cookie = r[4]
            headers = r[3]
            result = r[0]

            try:
                auth = re.findall('__utmx=(.+)', cookie)[0].split(';')[0]
            except:
                auth = 'false'
            auth = 'Bearer %s' % urllib.unquote_plus(auth)

            headers['Authorization'] = auth
            headers['X-Requested-With'] = 'XMLHttpRequest'
            headers[
                'Content-Type'] = 'application/x-www-form-urlencoded; charset=UTF-8'
            headers[
                'Accept'] = 'application/json, text/javascript, */*; q=0.01'
            headers['Cookie'] = cookie
            headers['Referer'] = url

            u = '/ajax/embeds.php'
            u = urlparse.urljoin(self.base_link, u)

            action = 'getEpisodeEmb' if '/episode/' in url else 'getMovieEmb'

            elid = urllib.quote(
                base64.encodestring(str(int(time.time()))).strip())

            token = re.findall("var\s+tok\s*=\s*'([^']+)", result)[0]

            idEl = re.findall('elid\s*=\s*"([^"]+)', result)[0]

            post = {
                'action': action,
                'idEl': idEl,
                'token': token,
                'elid': elid
            }
            post = urllib.urlencode(post)

            c = client.request(u,
                               post=post,
                               headers=headers,
                               output='cookie',
                               error=True)

            headers['Cookie'] = cookie + '; ' + c

            r = client.request(u, post=post, headers=headers)
            r = str(json.loads(r))
            r = client.parseDOM(r, 'iframe', ret='.+?') + client.parseDOM(
                r, 'IFRAME', ret='.+?')

            links = []

            for i in r:
                try:
                    links += [{
                        'source':
                        'gvideo',
                        'quality':
                        directstream.googletag(i)[0]['quality'],
                        'url':
                        i,
                        'direct':
                        True
                    }]
                except:
                    pass

            links += [{
                'source': 'openload.co',
                'quality': 'SD',
                'url': i,
                'direct': False
            } for i in r if 'openload.co' in i]

            #links += [{'source': 'videomega.tv', 'quality': 'SD', 'url': i, 'direct': False} for i in r if 'videomega.tv' in i]

            for i in links:
                srcs.append({
                    'source': i['source'],
                    'quality': i['quality'],
                    'provider': 'MoviesHD',
                    'url': i['url'],
                    'direct': i['direct'],
                    'debridonly': False
                })

            return srcs
        except:
            return srcs
예제 #2
0
    def resolve(self, url, resolverList):
        try:
            headers = dict(urlparse.parse_qsl(url.rsplit('|', 1)[1]))
        except:
            headers = None

        link = url.split('|')[0]

        try:
            if not self.direct_link in link: raise Exception()

            video_id = headers['Referer'].split('-')[-1].replace('/', '')

            episode_id = link.split('/')[-1]

            key_gen = ''.join(
                random.choice(string.ascii_lowercase + string.digits)
                for x in range(16))

            ################# FIX FROM MUCKY DUCK & XUNITY TALK ################
            key = '87wwxtp3dqii'
            key2 = '7bcq9826avrbi6m49vd7shxkn985mhod'
            coookie = hashlib.md5(episode_id +
                                  key).hexdigest() + '=%s' % key_gen
            a = episode_id + key2
            b = key_gen
            i = b[-1]
            h = b[:-1]
            b = i + h + i + h + i + h
            hash_id = uncensored(a, b)
            ################# FIX FROM MUCKY DUCK & XUNITY TALK ################

            url = self.base_link + '/ajax/v2_get_sources/' + episode_id + '?hash=' + urllib.quote(
                hash_id)

            headers['Referer'] = headers['Referer'] + '\+' + coookie
            headers['Cookie'] = coookie

            result = client.request(url, headers=headers)
            result = result.replace('\\', '')

            url = re.findall('"?file"?\s*:\s*"(.+?)"', result)
            url = [directstream.googletag(i) for i in url]
            url = [i[0] for i in url if len(i) > 0]

            u = []
            try:
                u += [[i for i in url if i['quality'] == '1080p'][0]]
            except:
                pass
            try:
                u += [[i for i in url if i['quality'] == 'HD'][0]]
            except:
                pass
            try:
                u += [[i for i in url if i['quality'] == 'SD'][0]]
            except:
                pass

            url = client.replaceHTMLCodes(u[0]['url'])

            if 'requiressl=yes' in url:
                url = url.replace('http://', 'https://')
            else:
                url = url.replace('https://', 'http://')
            return url
        except:
            pass

        try:
            if not self.embed_link in link: raise Exception()

            result = client.request(link, headers=headers)

            url = json.loads(result)['embed_url']
            return url
        except:
            pass
예제 #3
0
    def sources(self, url):
        try:
            srcs = []

            if url == None: return srcs

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

            try:
                url, episode = re.findall('(.+?)\?episode=(\d*)$', url)[0]
            except:
                episode = None

            result = client.request(url, output='extended')

            r = result[0]
            cookie = result[4]

            try:
                quality = client.parseDOM(r,
                                          'span',
                                          attrs={'class':
                                                 'quality'})[0].lower()
            except:
                quality = 'hd'
            if quality == 'cam' or quality == 'ts': quality = 'CAM'
            elif quality == 'hd' or 'hd ' in quality: quality = 'HD'
            else: quality = 'SD'

            category = client.parseDOM(r,
                                       'div',
                                       ret='data-id',
                                       attrs={'id': '.+?'})[0]

            servers = client.parseDOM(r, 'ul', attrs={'data-range-id': '0'})
            servers = zip(client.parseDOM(servers, 'a', ret='data-id'),
                          client.parseDOM(servers, 'a'))
            servers = [(i[0], re.findall('(\d+)', i[1])) for i in servers]
            servers = [(i[0], ''.join(i[1][:1])) for i in servers]

            if not episode == None:
                servers = [
                    i for i in servers
                    if '%01d' % int(i[1]) == '%01d' % int(episode)
                ]

            for s in servers[:5]:
                try:
                    headers = {
                        'X-Requested-With': 'XMLHttpRequest',
                        'Referer': '%s/%s' % (url, s),
                        'Cookie': cookie
                    }

                    post = {'id': s[0], 'update': '0', 'film': category}
                    post.update(self._token(post))

                    u = urlparse.urljoin(self.base_link, self.info_link)
                    u += '?' + urllib.urlencode(post)

                    r = client.request(u, headers=headers)

                    r = json.loads(r)

                    t = r['target']

                    if 'openload' in t:
                        srcs.append({
                            'source': 'openload.co',
                            'quality': quality,
                            'provider': 'Ninemovies',
                            'url': t,
                            'direct': False,
                            'debridonly': False
                        })

                    post = r['params']
                    if not post: raise Exception()
                    post['mobile'] = '0'
                    post.update(self._token(post))

                    headers['Referer'] = u

                    g = r['grabber'] + '?' + urllib.urlencode(post)

                    r = client.request(g, headers=headers)

                    r = json.loads(r)['data']
                    r = [i['file'] for i in r if 'file' in i]

                    for i in r:
                        try:
                            srcs.append({
                                'source':
                                'gvideo',
                                'quality':
                                directstream.googletag(i)[0]['quality'],
                                'provider':
                                'Ninemovies',
                                'url':
                                i,
                                'direct':
                                True,
                                'debridonly':
                                False
                            })
                        except:
                            pass
                except:
                    pass

            return srcs
        except:
            return srcs
예제 #4
0
    def sources(self, url):
        try:
            sources = []

            if url == None: return sources

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

            r = client.request(url)
            r = client.parseDOM(r, 'div', attrs={'class': 'player_wraper'})
            r = client.parseDOM(r, 'iframe', ret='src')

            for u in r:
                try:
                    m = '"(?:url|src)"\s*:\s*"(.+?)"'

                    d = urlparse.urljoin(self.base_link, u)

                    s = client.request(d, referer=url, timeout='10')

                    j = re.compile('<script>(.+?)</script>', re.DOTALL).findall(s)
                    for i in j:
                        try:
                            s += jsunpack.unpack(i)
                        except:
                            pass

                    u = re.findall(m, s)

                    if not u:
                        p = re.findall('location\.href\s*=\s*"(.+?)"', s)
                        if not p: p = ['/player/%s' % d.strip('/').split('/')[-1]]
                        p = urlparse.urljoin(self.base_link, p[0])
                        s = client.request(p, referer=d, timeout='10')
                        u = re.findall(m, s)

                    for i in u:
                        try:
                            sources.append({'provider':'movies14','source': 'gvideo', 'quality': directstream.googletag(i)[0]['quality'],
                                            'language': 'en', 'url': i, 'direct': True, 'debridonly': False})
                        except:
                            pass
                except:
                    pass

            return sources
        except:
            return sources