コード例 #1
0
    def getLiveChannels(self):

        live = []

        # live.append({
        #         'slug': 'bandnews',
        #         'name': 'Band News',
        #         'logo': 'https://upload.wikimedia.org/wikipedia/commons/thumb/2/27/BandNews_TV_logo_2010.svg/1200px-BandNews_TV_logo_2010.svg.png',
        #         'fanart': 'https://observatoriodatelevisao.bol.uol.com.br/wp-content/uploads/2015/03/BandNews.jpg',
        #         'thumb': 'https://upload.wikimedia.org/wikipedia/commons/thumb/2/27/BandNews_TV_logo_2010.svg/1200px-BandNews_TV_logo_2010.svg.png',
        #         'playable': 'true',
        #         'plot': None,
        #         'id': -1,
        #         'channel_id': -1,
        #         'duration': None,
        #         'streamUrl': 'http://evcv.mm.uol.com.br:1935/band/bandnews/playlist.m3u8'
        #     })

        threads = [
            workers.Thread(self.getGloboplayLive, live),
            workers.Thread(self.getGlobosatLiveChannels, live),
            workers.Thread(self.getGlobosatPremiumLiveChannels, live),
        ]
        [i.start() for i in threads]
        [i.join() for i in threads]

        return live
コード例 #2
0
    def justporno(self, url):
        try:
            r = client.request(url)
            s = re.findall('''source\s*src=['"]+([^'"]+)''', r)

            self.u = []

            def request(i):
                try:
                    c = client.request(i, output='headers')
                    checks = ['video', 'mpegurl']
                    if any(f for f in checks if f in c['Content-Type']):
                        self.u.append((i, int(c['Content-Length'])))
                except:
                    pass

            threads = []
            for i in s:
                threads.append(workers.Thread(request, i))
            [i.start() for i in threads]
            [i.join() for i in threads]

            u = sorted(self.u, key=lambda x: x[1])[::-1]
            u = client.request(u[0][0], output='geturl')
            return u
        except:
            return
コード例 #3
0
ファイル: adultresolver.py プロジェクト: AsvpArchy/naughty
    def fourtube(self, url):
        try:        
            fourtube_ref = url
            self.fourtube_base   = 'https://www.4tube.com'
            self.fourtube_embed  = '/embed/%s'
            self.fourtube_player = '/js/player/embed/%s'
            self.fourtube_post   = 'https://tkn.kodicdn.com/%s/desktop/%s'
            id = re.findall('\/([0-9]+)',url)[0]
            r = client.request(urlparse.urljoin(self.fourtube_base,self.fourtube_embed % id))
            js = re.findall('\/player\/embed\/([^"]+)',r)[0]
            url = urlparse.urljoin(self.fourtube_base,self.fourtube_player % js)
            r = client.request(url)
            url_id,qual = re.compile('ajax\(url,opts\);}}\)\(([\d]+),[\d]+,\[([\d,]+)\]\);').findall(r)[0]
            qual = qual.replace(',','+')
            r = client.request(self.fourtube_post % (url_id,qual), post='', headers={'Origin': self.fourtube_base}, referer=fourtube_ref)
            s = re.compile('token\":\"([^"]+)').findall(r)
            
            self.u = []
            def request(i):
                try:
                    c = client.request(i, output='headers')
                    checks = ['video','mpegurl']
                    if any(f for f in checks if f in c['Content-Type']): self.u.append((i, int(c['Content-Length'])))
                except:
                    pass
            threads = []
            for i in s: threads.append(workers.Thread(request, i))
            [i.start() for i in threads] ; [i.join() for i in threads]

            u = sorted(self.u, key=lambda x: x[1])[::-1]
            u = client.request(u[0][0], output='geturl', referer=url)
            return u
        except:
            return
コード例 #4
0
    def get(self, netloc, ua, timeout):
        threads = []

        for i in range(0, 15): threads.append(workers.Thread(self.get_cookie, netloc, ua, timeout))
        [i.start() for i in threads]

        for i in range(0, 30):
            if not self.cookie == None: return self.cookie
            time.sleep(1)
コード例 #5
0
    def getDataFromExternal(self, date, progress_callback=None):

        channels = self.brplay.channels()

        threads = []

        channel_programs = []

        total_channels = len(channels)

        counter = itertools.count()

        fetch_from_oiplay = ADDON.getSetting('fetch.oiplay') == 'true'

        for channel in channels:
            visible = channel[
                'isFolder'] != 'true' if 'isFolder' in channel else True
            c = Channel(id=channel['channel_id'],
                        title=channel['name'],
                        logo=channel['logo'],
                        streamUrl=channel['streamUrl'],
                        visible=visible)

            if fetch_from_oiplay:
                programs = self.processPrograms(counter, c, date,
                                                total_channels,
                                                progress_callback)
            else:
                programs = []
                threads.append(
                    workers.Thread(self.processPrograms, programs, counter, c,
                                   date, total_channels, progress_callback))

            channel_programs.append((c, programs))

        if not fetch_from_oiplay:
            [i.start() for i in threads]
            [i.join() for i in threads]

        for channel, programs in channel_programs:
            yield channel
            for program in programs:
                yield program
コード例 #6
0
    def generic(self, url, pattern=None):

        try:
            r = client.request(url)
            if 'chaturbate' in url:
                if '.m3u8' not in r:
                    return 'offline'
            if pattern: s = re.findall(r'%s' % pattern, r)
            else:
                patterns = [
                            r'''\s*=\s*[\'\"](http.+?)[\'\"]''', \
                            r'''\s*=\s*['"](http.+?)['"]''', \
                            r'''['"][0-9_'"]+:\s[\'\"]([^'"]+)''', \
                            r'''\(\w+\([\'\"]([^\'\"]*)''', \
                            r'''[\'\"]\w+[\'\"]:['"]([^'"]*)''', \
                            r'''\s*=\s*[\'\"](http.+?)[\'\"]''', \
                            r'''\s*:\s*[\'\"](//.+?)[\'\"]''', \
                            r'''\:[\'\"](\.+?)[\'\"]''', \
                            r'''\s*\(\s*[\'\"](http.+?)[\'\"]''', \
                            r'''\s*=\s*[\'\"](//.+?)[\'\"]''', \
                            r'''\w*:\s*[\'\"](http.+?)[\'\"]''', \
                            r'''\w*=[\'\"]([^\'\"]*)''', \
                            r'''\w*\s*=\s*[\'\"]([^\'\"]*)''', \
                            r'''(?s)<file>([^<]*)''', \
                            ]

                s = []
                for pattern in patterns:
                    l = re.findall(pattern, r)
                    s += [
                        i for i in l
                        if (urlparse.urlparse(i).path).strip('/').split('/')
                        [-1].split('.')[-1] in ['mp4', 'flv', 'm3u8']
                    ]

                if s:
                    s = [
                        i for i in s
                        if (urlparse.urlparse(i).path).strip('/').split('/')
                        [-1].split('.')[-1] in ['mp4', 'flv', 'm3u8']
                    ]
                else:
                    s = client.parseDOM(r,
                                        'source',
                                        ret='src',
                                        attrs={'type': 'video.+?'})

                if not s:
                    log_utils.log(
                        'Error resolving %s :: Error: %s' % (url, str(e)),
                        log_utils.LOGERROR)
                    return

                s = ['http:' + i if i.startswith('//') else i for i in s]
                s = [
                    urlparse.urljoin(url, i) if not i.startswith('http') else i
                    for i in s
                ]
                s = [x for y, x in enumerate(s) if x not in s[:y]]

            self.u = []

            def request(i):
                try:
                    i = i.replace(' ', '%20')
                    c = client.request(i, output='headers', referer=url)
                    checks = ['video', 'mpegurl', 'html']
                    if any(f for f in checks if f in c['Content-Type']):
                        self.u.append((i, int(c['Content-Length'])))
                except:
                    pass

            threads = []
            for i in s:
                threads.append(workers.Thread(request, i))
            [i.start() for i in threads]
            [i.join() for i in threads]

            u = sorted(self.u, key=lambda x: x[1])[::-1]

            mobile_mode = kodi.get_setting('mobile_mode')
            if mobile_mode == 'true':
                u = client.request(u[-1][0], output='geturl', referer=url)
            else:
                u = client.request(u[0][0], output='geturl', referer=url)
            log_utils.log('Returning %s from XXX-O-DUS Resolver' % str(u),
                          log_utils.LOGNOTICE)
            return u
        except Exception as e:
            log_utils.log('Error resolving %s :: Error: %s' % (url, str(e)),
                          log_utils.LOGERROR)
コード例 #7
0
ファイル: youtube.py プロジェクト: ItsMYZTIK/tdbaddon
    def video_list(self, cid, url, pagination):
        try:
            result = client.request(url)
            result = json.loads(result)
            items = result['items']
        except:
            pass

        for i in range(1, 5):
            try:
                if pagination == True: raise Exception()
                if not 'nextPageToken' in result: raise Exception()
                page = url + '&pageToken=' + result['nextPageToken']
                result = client.request(page)
                result = json.loads(result)
                items += result['items']
            except:
                pass

        try:
            if pagination == False: raise Exception()
            next = cid + '&pageToken=' + result['nextPageToken']
        except:
            next = ''

        for item in items:
            try:
                title = item['snippet']['title']
                title = title.encode('utf-8')

                try:
                    url = item['snippet']['resourceId']['videoId']
                except:
                    url = item['id']['videoId']
                url = url.encode('utf-8')

                image = item['snippet']['thumbnails']['high']['url']
                if '/default.jpg' in image: raise Exception()
                image = image.encode('utf-8')

                append = {'title': title, 'url': url, 'image': image}
                if not next == '': append['next'] = next
                self.list.append(append)
            except:
                pass

        try:
            u = [
                range(0, len(self.list))[i:i + 50]
                for i in range(len(range(0, len(self.list))))[::50]
            ]
            u = [','.join([self.list[x]['url'] for x in i]) for i in u]
            u = [self.content_link % i + self.key_link for i in u]

            threads = []
            for i in range(0, len(u)):
                threads.append(workers.Thread(self.thread, u[i], i))
                self.data.append('')
            [i.start() for i in threads]
            [i.join() for i in threads]

            items = []
            for i in self.data:
                items += json.loads(i)['items']
        except:
            pass

        for item in range(0, len(self.list)):
            try:
                vid = self.list[item]['url']

                self.list[item]['url'] = self.play_link % vid

                d = [(i['id'], i['contentDetails']) for i in items]
                d = [i for i in d if i[0] == vid]
                d = d[0][1]['duration']

                duration = 0
                try:
                    duration += 60 * 60 * int(re.findall('(\d*)H', d)[0])
                except:
                    pass
                try:
                    duration += 60 * int(re.findall('(\d*)M', d)[0])
                except:
                    pass
                try:
                    duration += int(re.findall('(\d*)S', d)[0])
                except:
                    pass
                duration = str(duration)

                self.list[item]['duration'] = duration
            except:
                pass

        return self.list
コード例 #8
0
    def getLiveChannels(self):

        live = []

        # live.append({
        #         'slug': 'bandnews',
        #         'name': 'Band News',
        #         'logo': 'https://upload.wikimedia.org/wikipedia/commons/thumb/2/27/BandNews_TV_logo_2010.svg/1200px-BandNews_TV_logo_2010.svg.png',
        #         'fanart': 'https://observatoriodatelevisao.bol.uol.com.br/wp-content/uploads/2015/03/BandNews.jpg',
        #         'thumb': 'https://upload.wikimedia.org/wikipedia/commons/thumb/2/27/BandNews_TV_logo_2010.svg/1200px-BandNews_TV_logo_2010.svg.png',
        #         'playable': 'true',
        #         'plot': None,
        #         'id': -1,
        #         'channel_id': -1,
        #         'duration': None,
        #         'streamUrl': 'https://evpp.mm.uol.com.br/geob_band/bandnewstv/playlist.m3u8'
        #     })

        if ADDON.getSetting('channels.globoplay') == 'true':
            live.append({
                'slug': 'futura',
                'name': 'Futura',
                'fanart': 'http://static.futuraplay.org/img/og-image.jpg',
                'thumb':
                'https://live-thumbs.video.globo.com/futura24ha/snapshot/',
                'logo': 'https://oisa.tmsimg.com/assets/s20386_h3_aa.png',
                'playable': 'true',
                'id': 4500346,
                'channel_id': 1985,
                'live': True,
                'livefeed': 'false',  # use vod player
                'brplayprovider': 'globoplay',
                'anonymous': True
            })

            live.append({
                'slug':
                'sbt',
                'name':
                'SBT Rio',
                'logo':
                'https://www.sbt.com.br/assets/images/logo-sbt.png',
                'fanart':
                'https://i.ytimg.com/vi/Sut2YB6U5fk/maxresdefault.jpg',
                'thumb':
                'https://i.ytimg.com/vi/Sut2YB6U5fk/maxresdefault.jpg',
                'playable':
                'true',
                'plot':
                None,
                'id':
                -3,
                'channel_id':
                -3,
                'duration':
                None,
                # 'streamUrl': 'plugin://plugin.video.youtube/play/?channel_id=UCsRfBAspa72ExrsN347W2xg&live=1'
                'streamUrl':
                youtube.geturl(
                    'https://www.youtube.com/channel/UCsRfBAspa72ExrsN347W2xg/live'
                )
            })

            live.append({
                'slug':
                'record news',
                'name':
                'Record News',
                'logo':
                'https://oisa.tmsimg.com/assets/s38709_h3_aa.png',
                'fanart':
                'https://oisa.tmsimg.com/assets/s38709_h3_aa.png',
                'thumb':
                'https://oisa.tmsimg.com/assets/s38709_h3_aa.png',
                'playable':
                'true',
                'plot':
                None,
                'id':
                -7,
                'channel_id':
                -7,
                'duration':
                None,
                'streamUrl':
                youtube.geturl(
                    'https://www.youtube.com/channel/UCuiLR4p6wQ3xLEm15pEn1Xw/live'
                )
            })

        if ADDON.getSetting('channels.youtube') == 'true':

            live.append({
                'slug':
                'justica',
                'name':
                u'TV JUSTIÇA',
                'logo':
                'https://oisa.tmsimg.com/assets/s76237_h3_aa.png',
                'fanart':
                'https://yt3.ggpht.com/a-/ACSszfHWaYyZbKI54Ws8EsUYOZVLcc_ID2R_LlykCw=s900-mo-c-c0xffffffff-rj-k-no',
                'thumb':
                'https://yt3.ggpht.com/a-/ACSszfHWaYyZbKI54Ws8EsUYOZVLcc_ID2R_LlykCw=s900-mo-c-c0xffffffff-rj-k-no',
                'playable':
                'true',
                'plot':
                None,
                'id':
                -4,
                'channel_id':
                -4,
                'duration':
                None,
                # 'streamUrl': 'plugin://plugin.video.youtube/?action=play_video&videoid=3-7mJteOsxY'
                'streamUrl':
                youtube.geturl(
                    'https://www.youtube.com/channel/UC0qlZ5jxxueKNzUERcrllNw/live'
                )
            })

            live.append({
                'slug':
                'senado',
                'name':
                'TV Senado',
                'logo':
                'https://oisa.tmsimg.com/assets/s38060_h3_aa.png',
                'fanart':
                'https://yt3.ggpht.com/a-/ACSszfF-djZe6A1gCCr3q_aUQosHwe3dyTTHVFrXcw=s900-mo-c-c0xffffffff-rj-k-no',
                'thumb':
                'https://yt3.ggpht.com/a-/ACSszfF-djZe6A1gCCr3q_aUQosHwe3dyTTHVFrXcw=s900-mo-c-c0xffffffff-rj-k-no',
                'playable':
                'true',
                'plot':
                None,
                'id':
                -5,
                'channel_id':
                -5,
                'duration':
                None,
                # 'streamUrl': 'plugin://plugin.video.youtube/?action=play_video&videoid=Duvz4PaR7Gw'
                'streamUrl':
                youtube.geturl(
                    'https://www.youtube.com/user/TVSenadoOficial/live')
            })

            live.append({
                'slug':
                'shoptime',
                'name':
                'Shoptime',
                'logo':
                'https://oisa.tmsimg.com/assets/s16398_h3_aa.png',
                'fanart':
                'https://images-shoptime.b2w.io/zion/manifest/icons/5d7e972cec3c839ef0f8ab8cdd7cdb42.opengraph-image.png',
                'thumb':
                'https://images-shoptime.b2w.io/zion/manifest/icons/5d7e972cec3c839ef0f8ab8cdd7cdb42.opengraph-image.png',
                'playable':
                'true',
                'plot':
                None,
                'id':
                -6,
                'channel_id':
                -6,
                'duration':
                None,
                # 'streamUrl': 'plugin://plugin.video.youtube/?action=play_video&videoid=qJ1QpbHn2Bk'
                'streamUrl':
                youtube.geturl(
                    'https://www.youtube.com/user/CanalShoptime/live')
            })

        threads = []

        if ADDON.getSetting('channels.globoplay') == 'true':
            threads.append(workers.Thread(self.getGloboplayLive, live))

        if ADDON.getSetting('channels.globosatplay') == 'true':
            threads.append(workers.Thread(self.getGlobosatLiveChannels, live))

        if ADDON.getSetting('channels.premium') == 'true':
            threads.append(
                workers.Thread(self.getGlobosatPremiumLiveChannels, live))

        if ADDON.getSetting('channels.premierefc') == 'true':
            threads.append(workers.Thread(self.getPremiereFcLiveChannel, live))

        if ADDON.getSetting('channels.oiplay') == 'true':
            threads.append(workers.Thread(self.getOiPlayLiveChannels, live))

        [i.start() for i in threads]
        [i.join() for i in threads]

        return live