Ejemplo n.º 1
0
    def root(self):
        if control.is_globosat_available() or control.is_globoplay_available(
        ) or control.is_oiplay_available() or control.is_tntplay_available():
            self.add_directory_item(32001, 'liveChannels', 'live.png',
                                    'live.png')
            if control.is_globosat_available(
            ) or control.is_globoplay_available():
                self.add_directory_item(32002, 'vodChannels', 'ondemand.png',
                                        'ondemand.png')
        else:
            self.add_directory_item(32005, 'settings', 'tools.png',
                                    'tools.png')

        if control.is_globosat_available():
            self.add_directory_item(32080, 'featured', 'featured.png',
                                    'featured.png')
            self.add_directory_item(32090, 'favorites', 'favorites.png',
                                    'favorites.png')
            self.add_directory_item(32095, 'watchlater', 'userlists.png',
                                    'userlists.png')
            self.add_directory_item(32096, 'watchhistory', 'years.png',
                                    'years.png')

        if control.is_globosat_available() or control.is_globoplay_available():
            self.add_directory_item(32010, 'searchMenu', 'search.png',
                                    'search.png')

        # control.addSortMethod(int(sys.argv[1]), control.SORT_METHOD_LABEL_IGNORE_FOLDERS)

        control.content(syshandle, 'files')

        self.end_directory()
Ejemplo n.º 2
0
    def get_channels(self):

        live = []

        threads = []

        if control.is_globoplay_available():
            threads.append(workers.Thread(self.append_result, globoplay.Indexer().get_live_channels, live))

        if control.is_globosat_available():
            threads.append(workers.Thread(self.append_result, globosat.Indexer().get_live, live))
            if control.show_adult_content:
                threads.append(workers.Thread(self.append_result, sexyhotplay.Indexer().get_live_channels, live))

        if control.is_oiplay_available():
            threads.append(workers.Thread(self.append_result, oiplay.get_live_channels, live))

        if control.is_tntplay_available():
            threads.append(workers.Thread(self.append_result, tntplay.get_live_channels, live))

        if control.is_nowonline_available():
            threads.append(workers.Thread(self.append_result, netnow.get_live_channels, live))

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

        live = sorted(live, key=lambda k: k['sorttitle'])
        # live = sorted(live, key=lambda k: '1' if 'isFolder' in k and k['isFolder'] == 'true' else '0')
        live = sorted(live, key=lambda k: k['dateadded'] if 'dateadded' in k else None, reverse=True)

        # shuffle(live)

        self.channel_directory(live)

        return live
Ejemplo n.º 3
0
def get_channels():
    live = []

    threads = []

    if control.is_globoplay_available():
        threads.append(workers.Thread(globoplay.get_live_channels))

    if control.is_globosat_available():
        threads.append(workers.Thread(globosat.get_live_channels))
        if control.show_adult_content:
            threads.append(workers.Thread(sexyhotplay.get_broadcast))

    if control.is_oiplay_available():
        threads.append(workers.Thread(oiplay.get_live_channels))

    if control.is_tntplay_available():
        threads.append(workers.Thread(tntplay.get_live_channels))

    if control.is_nowonline_available():
        threads.append(workers.Thread(netnow.get_live_channels))

    if control.is_sbt_available():
        threads.append(workers.Thread(sbt.get_live_channels))

    if control.is_pluto_available():
        threads.append(workers.Thread(pluto.get_live_channels))

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

    [live.extend(i.get_result()) for i in threads if i.get_result()]

    control.log(live)

    for channel in live:
        channel.update({
            'sort': [
                control.SORT_METHOD_DATEADDED,
                (control.SORT_METHOD_LABEL_IGNORE_FOLDERS, '%U'),
                (control.SORT_METHOD_VIDEO_SORT_TITLE, '%U'),
                (control.SORT_METHOD_STUDIO, '%L')
            ],
            'overlay':
            4,
            'playcount':
            0,
            'content':
            'tvshows',  # 'content': 'tvshows',  # content: files, songs, artists, albums, movies, tvshows, episodes, musicvideos
            'mediatype':
            'episode',  # 'mediatype': "video", "movie", "tvshow", "season", "episode" or "musicvideo"
        })
        properties = channel.get('properties', {})
        if not properties:
            channel['properties'] = properties
        properties.update({'ResumeTime': 0.0})

    return live
Ejemplo n.º 4
0
    def get_channels(self):

        live = []

        threads = []

        if control.is_globoplay_available():
            threads.append(
                workers.Thread(self.append_result,
                               globoplay.Indexer().get_live_channels, live))

        if control.is_globosat_available():
            threads.append(
                workers.Thread(self.append_result,
                               globosat.Indexer().get_live, live))

        threads.append(
            workers.Thread(self.append_result, futuraplay.get_live_channels,
                           live))

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

        # live.append({
        #     'slug': 'bandnews',
        #     'name': 'Bandnews',
        #     'title': 'Bandnews',
        #     'sorttitle': 'Bandnews',
        #     'logo': os.path.join(control.artPath(), 'logo_bandnews.png'),
        #     # 'clearlogo': os.path.join(control.artPath(), 'logo_bandnews.png'),
        #     'color': None,
        #     'fanart': os.path.join(control.artPath(), 'fanart_bandnews.jpg'),
        #     'thumb': None,
        #     'playable': 'true',
        #     'plot': None,
        #     'id': -1,
        #     'channel_id': -1,
        #     'duration': None,
        #     'url': 'http://evcv.mm.uol.com.br:1935/band/bandnews/playlist.m3u8'
        # })

        # control.addSortMethod(int(sys.argv[1]), control.SORT_METHOD_LABEL_IGNORE_FOLDERS)
        live = sorted(live, key=lambda k: k['sorttitle'])
        live = sorted(live,
                      key=lambda k: '1'
                      if 'isFolder' in k and k['isFolder'] == 'true' else '0')
        live = sorted(live,
                      key=lambda k: k['dateadded']
                      if 'dateadded' in k else None,
                      reverse=True)

        # shuffle(live)

        self.channel_directory(live)

        return live
    def __get_vod_channels(self):

        channels = []

        if control.is_globosat_available():
            channels += globosat.Indexer().get_vod()

        if control.is_globoplay_available():
             channels += globoplay.Indexer().get_vod()

        channels = sorted(channels, key=lambda k: k['name'])

        return channels
Ejemplo n.º 6
0
def root():
    if control.is_live_available():
        handler = live.__name__
        method = 'get_channels'
        yield add_directory_item(handler, method, 32001, 'live.png')

    if control.is_vod_available():
        handler = vod.__name__
        method = 'get_vod_channels_directory'
        yield add_directory_item(handler, method, 32002, 'ondemand.png')

    if not control.is_live_available() and not control.is_vod_available():
        handler = __name__
        method = 'open_settings'
        yield add_directory_item(handler, method, 32005, 'tools.png')

    if control.is_globosat_available() or control.is_globoplay_available(
    ) or control.is_telecine_available() or control.is_oiplay_available(
    ) or control.is_nowonline_available() or control.is_tntplay_available():
        handler = __name__
        method = 'search'
        yield add_directory_item(handler, method, 32010, 'search.png')
Ejemplo n.º 7
0
def get_vod_channels_directory():

    channels = []

    if control.is_globosat_available():
        channels.extend(globosat.get_authorized_channels())
        if control.show_adult_content:
            channels.extend(sexyhot.get_channels())

    if control.is_globoplay_available():
        channels.extend(globoplay.get_globoplay_channels())

    if control.is_tntplay_available():
        channels.extend(tnt_vod.get_channels())

    if control.is_nowonline_available():
        channels.extend(netnow.get_channels())

    if control.is_telecine_available():
        channels.extend(telecine.get_channels())

    if control.is_oiplay_available():
        channels.extend(oiplay.get_channels())

    if control.is_pluto_available():
        channels.extend(pluto.get_channels())

    if not control.show_adult_content:
        channels = [
            channel for channel in channels if not channel.get("adult", False)
        ]

    for channel in channels:
        channel.update({'sort': control.SORT_METHOD_LABEL})

        yield channel
Ejemplo n.º 8
0
    def search(self, q, page=1):

        results = []

        threads = []

        if control.is_globoplay_available():
            threads.append(
                workers.Thread(self.add_search_results,
                               globoplay.Indexer().search, results, q, page))

        if control.is_globosat_available():
            threads.append(
                workers.Thread(self.add_search_results,
                               globosat.Indexer().search, results, q, page))

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

        sysaddon = sys.argv[0]
        syshandle = int(sys.argv[1])
        refreshMenu = control.lang(32072).encode('utf-8')

        results = sorted(results,
                         key=lambda k: k['brplayprovider']
                         if 'brplayprovider' in k else '')

        for result in results:
            label = result['label']

            meta = {
                'id': result['id'],
                'title': result['title'],
                'plot': result['plot'],
                'duration': result['duration'],
                'thumb': result['thumb'],
                'fanart': result['fanart'],
                'mediatype': 'episode'
            }
            meta.update({'mediatype': 'video'})
            meta.update({'overlay': 6})
            meta.update({'title': label})
            meta.update({'live': False})

            if 'tvshowtitle' in result:
                meta.update({'tvshowtitle': result['tvshowtitle']})

            sysmeta = urllib.quote_plus(json.dumps(meta))

            provider = result[
                'brplayprovider'] if 'brplayprovider' in result else 'globoplay'

            url = '%s?action=playvod&provider=%s&id_globo_videos=%s&meta=%s' % (
                sysaddon, provider, result['id'], sysmeta)

            item = control.item(label=label)

            fanart = meta['fanart'] if 'fanart' in meta else GLOBO_FANART

            clearlogo = meta['clearlogo'] if 'clearlogo' in meta else None

            art = {
                'thumb': result['thumb'],
                'fanart': fanart,
                'clearlogo': clearlogo
            }

            item.setProperty('Fanart_Image', fanart)

            if 'duration' in meta:
                duration = float(meta['duration']) if 'duration' in meta else 0
                duration = duration * 1000.0
                item.setProperty('totaltime', str(duration))

            item.setArt(art)
            item.setProperty('IsPlayable', "true")
            item.setInfo(type='video', infoLabels=meta)

            cm = [(refreshMenu, 'RunPlugin(%s?action=refresh)' % sysaddon)]
            item.addContextMenuItems(cm)

            # item.setMimeType("application/vnd.apple.mpegurl")

            control.addItem(handle=syshandle,
                            url=url,
                            listitem=item,
                            isFolder=False)

        # if next_page:
        # label = 'Next Page (%s/%s)' % (nextpage, total_pages)

        # 34004 = "More Videos"
        label = control.lang(34004).encode('utf-8')

        meta = {}
        meta.update({'mediatype': 'video'})
        meta.update({'overlay': 6})
        meta.update({'title': label})

        url = '%s?action=search&q=%s&provider=%s&page=%s' % (
            sysaddon, q, 'globoplay', int(page) + 1)

        item = control.item(label=label)

        art = {'icon': NEXT_ICON, 'thumb': NEXT_ICON}

        # item.setProperty('Fanart_Image', GLOBO_FANART)

        item.setArt(art)
        item.setProperty('IsPlayable', "false")
        item.setInfo(type='video', infoLabels=meta)

        control.addItem(handle=syshandle,
                        url=url,
                        listitem=item,
                        isFolder=True)

        control.content(syshandle, 'episodes')
        control.directory(syshandle, cacheToDisc=True)
Ejemplo n.º 9
0
def search(query, page=1):
    if not query:
        yield control.run_plugin_url()
        return

    print('[BRplay] - search: %s | %s' % (query, page))
    threads = []

    if control.is_globoplay_available():
        threads.append(
            workers.Thread(convert_to_list, globoplay.search, query, page))

    if control.is_globosat_available():
        threads.append(
            workers.Thread(convert_to_list, globosat.search, query, page))

    if control.is_telecine_available():
        threads.append(
            workers.Thread(convert_to_list, telecine.search, query, page))

    if control.is_oiplay_available():
        threads.append(
            workers.Thread(convert_to_list, oiplay.search, query, page))

    if control.is_nowonline_available():
        threads.append(
            workers.Thread(convert_to_list, netnow.search, query, page))

    if control.is_tntplay_available():
        threads.append(
            workers.Thread(convert_to_list, tnt_vod.search, query, page))

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

    random.shuffle(threads)

    all_results = (thread.get_result() for thread in threads)

    control.log(all_results)

    combined = list(roundrobin(*all_results))
    # combined = chain(*all_results)

    has_next_page = False

    if not combined:
        control.okDialog(line1=control.lang(34141).encode('utf-8'),
                         heading=control.lang(32010).encode('utf-8'))
        yield control.run_plugin_url()
        return

    rank = 1
    for result in combined:
        if result.get('page'):
            has_next_page = True
            continue

        result.update({
            'sort': [(control.SORT_METHOD_UNSORTED, '%U'),
                     control.SORT_METHOD_STUDIO],
            # 'sort': [(control.SORT_METHOD_TRACKNUM, '%U'), control.SORT_METHOD_STUDIO, (control.SORT_METHOD_LABEL_IGNORE_FOLDERS, '%U')],
            'tracknumber':
            rank,
            'sorttitle':
            '%04d' % (rank, ),
            'content':
            'episodes',
            'mediatype':
            'video'
        })

        rank += 1

        yield result

    if has_next_page:
        yield {
            'handler': __name__,
            'method': 'search',
            'query': query,
            'page': page + 1,
            'label':
            '%s (%s)' % (control.lang(34136).encode('utf-8'), page + 1),
            'art': {
                'poster': control.addonNext(),
                'fanart': control.addonFanart()
            },
            'properties': {
                'SpecialSort': 'bottom'
            }
        }