예제 #1
0
    def __init__(self, argv):

        self.list = []
        self.addons = [{
            'title':
            'E-RADIO ADDON',
            'image':
            control.addonmedia('ERADIO.png',
                               logos_id,
                               theme='logos',
                               media_subfolder=False),
            'url':
            'plugin.audio.eradio.gr'
        }, {
            'title':
            'EPT PLAYER RADIO STATIONS',
            'image':
            control.addonmedia(addonid=art_id,
                               theme='networks',
                               icon='ert_fanart.jpg',
                               media_subfolder=False),
            'url':
            'plugin.video.ert.gr',
            'query':
            'radios'
        }, {
            'title': 'SOMAFM ADDON',
            'image': 'https://alivegr.net/logos/SOMAFM.png',
            'url': 'plugin.audio.somafm.com'
        }]

        self.argv = argv
예제 #2
0
    def __init__(self):

        self.addons = [{
            'title':
            'E-RADIO ADDON',
            'image':
            control.addonmedia('ERADIO.png',
                               LOGOS_ID,
                               theme='logos',
                               media_subfolder=False),
            'url':
            'plugin.audio.eradio.gr'
        }, {
            'title':
            'EPT PLAYER RADIO STATIONS',
            'image':
            control.addonmedia(addonid=ART_ID,
                               theme='networks',
                               icon='ert_fanart.jpg',
                               media_subfolder=False),
            'url':
            'plugin://plugin.video.ert.gr/?action=radios'
        }, {
            'title': 'SOMAFM ADDON',
            'image': 'https://alivegr.net/logos/SOMAFM.png',
            'url': 'plugin.audio.somafm.com'
        }]
예제 #3
0
def radios():

    images = [
        ''.join([RADIO_LINK, i]) for i in [
            '/wp-content/uploads/2016/06/proto.jpg',
            '/wp-content/uploads/2016/06/deytero.jpg',
            '/wp-content/uploads/2016/06/trito.jpg',
            '/wp-content/uploads/2016/06/kosmos.jpg',
            '/wp-content/uploads/2016/06/VoiceOgGreece.png',
            '/wp-content/uploads/2016/06/eraSport.jpg',
            '/wp-content/uploads/2016/06/958fm.jpg',
            '/wp-content/uploads/2016/06/102fm.jpg'
        ]
    ]

    names = [control.lang(n) for n in list(range(30028, 30036))]

    urls = [
        ''.join([RADIO_STREAM, i]) for i in [
            '/ert-proto', '/ert-deftero', '/ert-trito', '/ert-kosmos',
            '/ert-voiceofgreece', '/ert-erasport', '/ert-958fm', '/ert-102fm'
        ]
    ]

    _radios = map(lambda x, y, z: (x, y, z), names, images, urls)

    self_list = []

    for title, image, link in _radios:

        self_list.append({
            'title': title,
            'url': link,
            'image': image,
            'action': 'play',
            'isFolder': 'False',
            'fanart': control.addonmedia('radio_fanart.jpg')
        })

    self_list.insert(
        4, {
            'title': 'Zeppelin Radio 106.1',
            'action': 'play',
            'isFolder': 'False',
            'url': ''.join([RADIO_STREAM, '/ert-zeppelin']),
            'image': 'https://i.imgur.com/ep3LptZ.jpg',
            'fanart': control.addonmedia('zeppelin_bg.jpg')
        })

    _district = {
        'title': control.lang(30027),
        'action': 'district',
        'icon': 'district.jpg',
        'fanart': control.addonmedia('radio_fanart.jpg')
    }

    self_list.append(_district)

    directory.add(self_list)
예제 #4
0
    def play(self, url, query=None, resolved_mode=True):

        if url in [self.live_link_cy, self.live_link_gr]:

            title = 'Alpha'
            icon = control.icon()

        elif query:

            title = query
            icon = control.addonmedia('news.png')

        else:

            title = None
            icon = None

        stream = self.resolve(url)
        meta = {'title': title}
        dash = 'm3u8' in stream and control.kodi_version() >= 18.0

        directory.resolve(
            url=stream, meta=meta, dash=dash, icon=icon,
            mimetype='application/vnd.apple.mpegurl' if '.m3u8' in stream else None,
            manifest_type='hls' if '.m3u8' in stream else None, resolved_mode=resolved_mode
        )
예제 #5
0
    def mgreekz_top10(self):

        self.list = cache.get(self._mgreekz_top10, 24)

        if self.list is None:
            log_debug('Mad Greekz top 10 section failed to load')
            return

        for item in self.list:
            item.update({'action': 'play', 'isFolder': 'False'})

        for count, item in list(enumerate(self.list, start=1)):
            add_to_playlist = {'title': 30226, 'query': {'action': 'add_to_playlist'}}
            clear_playlist = {'title': 30227, 'query': {'action': 'clear_playlist'}}
            item.update(
                {
                    'cm': [add_to_playlist, clear_playlist], 'album': control.lang(30127),
                    'fanart': control.addonmedia(
                        addonid=art_id, theme='networks', icon='mgz_fanart.jpg',
                        media_subfolder=False
                    ), 'tracknumber': count, 'code': count
                }
            )

        control.sortmethods('tracknum', mask='%A')
        directory.add(self.list, content=self.content, infotype=self.infotype, argv=self.argv)
예제 #6
0
def iconname(name):

    icon = control.addonmedia(addonid=art_id,
                              theme=theme()[0],
                              icon=name + theme()[1],
                              media_subfolder=False)

    return icon
예제 #7
0
    def channels(self):

        self.list = [
            {
                'title': control.lang(30021),
                'url': self.ert1_link,
                'icon': 'EPT1.png',
                'fanart': control.addonmedia('EPT1_fanart.jpg')
            }
            ,
            {
                'title': control.lang(30022),
                'url': self.ert2_link,
                'icon': 'EPT2.png',
                'fanart': control.addonmedia('EPT2_fanart.jpg')
            }
            ,
            {
                'title': control.lang(30023),
                'url': self.ert3_link,
                'icon': 'EPT3.png',
                'fanart': control.addonmedia('EPT3_fanart.jpg')
            }
            ,
            {
                'title': control.lang(30024),
                'url': self.ertw_link,
                'icon': 'EPT_WORLD.png',
                'fanart': control.addonmedia('EPT_WORLD_fanart.jpg')
            }
            ,
            {
                'title': control.lang(30041),
                'url': self.erts_link,
                'icon': 'EPT_SPORTS.png',
                'fanart': control.addonmedia('EPT_SPORTS_fanart.jpg')
            }
        ]

        for i in self.list:

            i.update({'action': 'play', 'isFolder': 'False'})

        directory.add(self.list, content='videos')
예제 #8
0
def category_list(url):

    if BASE_API_LINK in url:

        _json = client.request(url, output='json')
        list_of_lists = _json['sectionContents']
        codename = parse_qs(split(url)[1])['pageCodename'][0]
        page = _json['pagination']['page']
        total_pages = _json['pagination']['totalPages']

    else:

        html = client.request(url)
        script = [
            i for i in client.parseDOM(html, 'script') if 'INITIAL_STATE' in i
        ][0]
        script = re.sub(r'var _*?\w+_*? = ', '',
                        script).partition(';</script>')[0]
        if script.endswith(';'):
            script = script[:-1]
        _json = json.loads(script)
        pages = _json['pages']
        list_of_lists = [
            i for i in list(pages['sectionsByCodename'].values())
            if 'adman' not in i['sectionContentCodename']
        ]
        codename = list(pages.keys())[-1]
        page = 1
        total_pages = pages[codename]['totalPages']

    next_url = GET_PAGE_CONTENT.format(page + 1, codename)

    self_list = []

    for list_ in list_of_lists:
        title = list_['portalName']
        section_codename = list_['sectionContentCodename']
        if not list_['tilesIds']:
            continue
        url = LIST_OF_LISTS_LINK.format(
            title=quote(section_codename),
            pagecodename=codename,
            backurl=codename,
            sectioncodename=list_['sectionContentCodename'])
        data = {'title': title, 'url': url}
        if page < total_pages:
            data.update({
                'nextaction': 'categories',
                'nextlabel': 30500,
                'nexticon': control.addonmedia('next.jpg'),
                'next': next_url
            })
        self_list.append(data)

    return self_list
예제 #9
0
    def listing(self, url):

        if control.setting('debug') == 'false':
            self.list = cache.get(self._listing, 6, url)
        else:
            self.list = self._listing(url)

        if self.list is None:
            return

        for i in self.list:

            if 'paidikes-tainies' in i['url'] or 'archeio' in i['url']:
                i.update({'action': 'play', 'isFolder': 'False'})
            elif i.get('playable') == 'false':
                i.update({'action': 'listing'})
            else:
                i.update({'action': 'play', 'isFolder': 'False'})

            try:
                del i['playable']
            except KeyError:
                pass

            bookmark = dict((k, v) for k, v in iteritems(i) if not k == 'next')
            bookmark['bookmark'] = i['url']
            bookmark_cm = {'title': 30501, 'query': {'action': 'addBookmark', 'url': json.dumps(bookmark)}}

            if 'enimerosi-24' in url or 'meta_url' not in i:
                i.update({'cm': [bookmark_cm]})
            else:
                info_cm = {'title': 30043, 'query': {'action': 'info', 'url': i['meta_url']}}
                i.update({'cm': [bookmark_cm, info_cm]})

        if control.setting('pagination') == 'true':

            for i in self.list:

                i.update({'nextaction': 'listing', 'nextlabel': 30500, 'nexticon': control.addonmedia('next.jpg')})

        if 'tainies' in url or 'seires' in url or 'docs' in url or 'pedika' in url:

            control.sortmethods()
            control.sortmethods('title')
            control.sortmethods('production_code')

        if 'tainies' in url:
            content = 'movies'
        elif 'category' in url or 'arxeio' in url and not 'enimerosi-24' in url:
            content = 'tvshows'
        else:
            content = 'videos'

        directory.add(self.list, content=content)
예제 #10
0
def district():

    self_list = district_list()

    for i in self_list:
        i.update({
            'action': 'play',
            'isFolder': 'False',
            'fanart': control.addonmedia('radio_fanart.jpg')
        })

    directory.add(self_list)
예제 #11
0
    def radios(self):

        images = [
            ''.join([self.radio_link, i]) for i in [
                '/wp-content/uploads/2016/06/proto.jpg', '/wp-content/uploads/2016/06/deytero.jpg',
                '/wp-content/uploads/2016/06/trito.jpg', '/wp-content/uploads/2016/06/kosmos.jpg',
                '/wp-content/uploads/2016/06/VoiceOgGreece.png', '/wp-content/uploads/2016/06/eraSport.jpg',
                '/wp-content/uploads/2016/06/958fm.jpg', '/wp-content/uploads/2016/06/102fm.jpg'
            ]
        ]

        names = [control.lang(n) for n in list(range(30028, 30036))]

        urls = [
            ''.join([self.radio_stream, i]) for i in [
                '/ert-proto', '/ert-deftero', '/ert-trito', '/ert-kosmos', '/ert-voiceofgreece', '/ert-erasport',
                '/ert-958fm', '/ert-102fm'
            ]
        ]

        radios = map(lambda x, y, z: (x, y, z), names, images, urls)

        for title, image, link in radios:

            self.list.append(
                {
                    'title': title, 'url': link, 'image': image, 'action': 'play', 'isFolder': 'False',
                    'fanart': control.addonmedia('radio_fanart.jpg')
                }
            )

        district = {
            'title': control.lang(30027), 'action': 'district', 'icon': 'district.jpg',
            'fanart': control.addonmedia('radio_fanart.jpg')
        }

        self.list.append(district)

        directory.add(self.list)
예제 #12
0
def radio_player():

    lista = ['Radio Melodia Toronto', 'Canadian Ethnic Web Radio']

    # selection = control.selectDialog(lista)

    # if selection == 0:

    listitem = control.item(label=lista[0])
    listitem.setInfo('music', {'title': lista[0], 'genre': 'Greek Music'})
    listitem.setArt({'icon': control.addonmedia('RADIO_MELODIA_TORONTO.png'), 'thumb': control.addonmedia('RADIO_MELODIA_TORONTO.png')})

    control.player().play(item=variables.Melodia_url, listitem=listitem)
예제 #13
0
    def district(self):

        if control.setting('debug') == 'false':
            self.list = cache.get(self.district_list, 96)
        else:
            self.list = self.district_list()

        if self.list is None:
            return

        for i in self.list:
            i.update({'action': 'play', 'isFolder': 'False', 'fanart': control.addonmedia('radio_fanart.jpg')})

        directory.add(self.list)
예제 #14
0
def videos(url):

    self_list = video_list(url)

    for i in self_list:
        i.update(
            {
                'action': 'play', 'isFolder': 'False', 'nextaction': 'videos',
                'nexticon': control.addonmedia('next.jpg'), 'nextlabel': 30015
            }
        )
        bookmark = dict((k, v) for k, v in iteritems(i) if not k == 'next')
        bookmark['bookmark'] = i['url']
        i.update({'cm': [{'title': 30501, 'query': {'action': 'addBookmark', 'url': json.dumps(bookmark)}}]})

    directory.add(self_list)
예제 #15
0
    def mgreekz_index(self):

        self.data = cache.get(youtube.youtube(key=thgiliwt(api_keys['api_key']), replace_url=replace_url).playlists, 48, self.mgreekz_id)

        for i in self.data:
            i.update(
                {
                    'action': 'mgreekz_list', 'fanart': control.addonmedia(
                    addonid=art_id, theme='networks', icon='mgz_fanart.jpg', media_subfolder=False
                )
                }
            )

        for item in self.data:
            bookmark = dict((k, v) for k, v in iteritems(item) if not k == 'next')
            bookmark['bookmark'] = item['url']
            bookmark_cm = {'title': 30080, 'query': {'action': 'addBookmark', 'url': json.dumps(bookmark)}}
            item.update({'cm': [bookmark_cm]})

        self.list = sorted(self.data, key=lambda k: k['title'].lower())

        directory.add(self.list, argv=self.argv)
예제 #16
0
    def top20_list(self, url):

        self.list = cache.get(self._top20, 24, url)

        if self.list is None:
            log_debug('Top 20 list section failed to load')
            return

        if url == self.rythmos_top20_url:
            fanart = control.addonmedia(
                addonid=art_id, theme='networks', icon='rythmos_fanart.jpg',
                media_subfolder=False
            )
            album = control.lang(30128)
        elif url == self.plus_url:
            fanart = 'https://i.imgur.com/G8koVR8.jpg'
            album = control.lang(30221)
        elif url == self.radiopolis_url_gr or url == self.radiopolis_url_other:
            fanart = 'https://i.ytimg.com/vi/tCupKdpHVx8/maxresdefault.jpg'
            album = control.lang(30222)
        else:
            fanart = control.addonInfo('fanart')
            album = 'AliveGR \'s Top Music'

        for count, item in list(enumerate(self.list, start=1)):

            add_to_playlist = {'title': 30226, 'query': {'action': 'add_to_playlist'}}
            clear_playlist = {'title': 30227, 'query': {'action': 'clear_playlist'}}
            item.update(
                {
                    'tracknumber': count, 'cm': [add_to_playlist, clear_playlist], 'album': album, 'fanart': fanart,
                    'action': 'play', 'isFolder': 'False', 'code': count
                }
            )

        control.sortmethods('tracknum', mask='%A')
        directory.add(self.list, content=self.content, infotype=self.infotype, argv=self.argv)
예제 #17
0
    def info(self):

        separator = '[CR]' if control.setting('wrap_labels') == '0' else ' '

        try:
            disclaimer = control.addonInfo('disclaimer').decode('utf-8')
        except (UnicodeEncodeError, UnicodeDecodeError, AttributeError):
            disclaimer = control.addonInfo('disclaimer')

        self.list = [{
            'title': control.lang(30331),
            'action': 'welcome',
            'icon': control.addonInfo('icon'),
            'isFolder': 'False',
            'isPlayable': 'False'
        }, {
            'title':
            control.lang(30105),
            'action':
            'dmca',
            'plot':
            disclaimer,
            'icon':
            control.addonmedia(addonid=art_id,
                               theme='icons',
                               icon='dmca.png',
                               media_subfolder=False),
            'isFolder':
            'False',
            'isPlayable':
            'False'
        }, {
            'title': control.lang(30290),
            'action': 'pp',
            'isFolder': 'False',
            'isPlayable': 'False'
        }, {
            'title': control.lang(30295),
            'action': 'toggle_debug',
            'isFolder': 'False',
            'isPlayable': 'False'
        }, {
            'title': control.lang(30296),
            'action': 'force',
            'isFolder': 'False',
            'isPlayable': 'False'
        }, {
            'title':
            control.lang(30260).format(separator),
            'action':
            'open_link',
            'url':
            'https://bitbucket.org/thgiliwt/plugin.video.alivegr/issues',
            'plot':
            'Git repo',
            'icon':
            control.addonmedia(addonid=art_id,
                               theme='icons',
                               icon='bitbucket.png',
                               media_subfolder=False),
            'isFolder':
            'False',
            'isPlayable':
            'False'
        }, {
            'title':
            control.lang(30306).format(separator),
            'action':
            'open_link',
            'url':
            'https://www.facebook.com/alivegr/',
            'plot':
            'Facebook page',
            'icon':
            control.addonmedia(addonid=art_id,
                               theme='icons',
                               icon='facebook.png',
                               media_subfolder=False),
            'isFolder':
            'False',
            'isPlayable':
            'False'
        }, {
            'title':
            control.lang(30259).format(separator),
            'action':
            'open_link',
            'url':
            'https://twitter.com/TwilightZer0',
            'plot':
            'RSS feed: https://twitrss.me/twitter_user_to_rss/?user=TwilightZer0',
            'icon':
            control.addonmedia(addonid=art_id,
                               theme='icons',
                               icon='twitter.png',
                               media_subfolder=False),
            'isFolder':
            'False',
            'isPlayable':
            'False'
        }, {
            'title':
            control.lang(30256).format(separator,
                                       control.addonInfo('version')),
            'action':
            'force',
            'plot':
            control.lang(30265),
            'icon':
            control.addonInfo('icon'),
            'isFolder':
            'False',
            'isPlayable':
            'False'
        }, {
            'title':
            control.lang(30257).format(
                separator,
                control.addon('script.module.tulip').getAddonInfo('version')),
            'action':
            'force',
            'plot':
            control.lang(30265),
            'icon':
            control.addon('script.module.tulip').getAddonInfo('icon'),
            'isFolder':
            'False',
            'isPlayable':
            'False'
        }, {
            'title':
            control.lang(30294).format(
                separator,
                control.addon('script.module.streamlink.base').getAddonInfo(
                    'version')),
            'action':
            'force',
            'image':
            control.addon('script.module.streamlink.base').getAddonInfo(
                'icon'),
            'plot':
            control.lang(30265),
            'isFolder':
            'False',
            'isPlayable':
            'False'
        }, {
            'title':
            control.lang(30264).format(
                separator,
                control.addon('script.module.resolveurl').getAddonInfo(
                    'version')),
            'action':
            'force',
            'plot':
            control.lang(30265),
            'icon':
            control.addon('script.module.resolveurl').getAddonInfo('icon'),
            'isFolder':
            'False',
            'isPlayable':
            'False'
        }, {
            'title':
            control.lang(30258).format(
                separator,
                control.addon('xbmc.addon').getAddonInfo('version').rpartition(
                    '.')[0]),
            'action':
            'system_info',
            'plot':
            control.lang(30263),
            'icon':
            control.addonmedia(addonid=art_id,
                               theme='icons',
                               icon='kodi.png',
                               media_subfolder=False),
            'isFolder':
            'False',
            'isPlayable':
            'False'
        }]

        directory.add(self.list, content='movies', argv=self.argv)
예제 #18
0
    def news(self):

        items = [{
            'title': control.lang(30230),
            'icon':
            'https://www.iconexperience.com/_img/v_collection_png/256x256/shadow/newspaper.png',
            'url': '{0}?action=papers'.format(self.sysaddon),
            'fanart': control.addonInfo('fanart')
        }, {
            'title':
            control.lang(30118),
            'icon':
            control.addonmedia(addonid=art_id,
                               theme='networks',
                               icon='ert_icon.png',
                               media_subfolder=False),
            'url':
            'plugin://plugin.video.ert.gr/?action=episodes&url=http%3a%2f%2fwebtv.ert.gr%2fcategory%2fkatigories%2feidiseis%2f',
            'fanart':
            control.addonmedia(addonid=art_id,
                               theme='networks',
                               icon='ert_fanart.jpg',
                               media_subfolder=False)
        }, {
            'title':
            control.lang(30119),
            'icon':
            control.addonmedia(addonid=art_id,
                               theme='networks',
                               icon='ant1_icon.png',
                               media_subfolder=False),
            'url':
            'plugin://plugin.video.antenna.gr/?action=news',
            'fanart':
            control.addonmedia(addonid=art_id,
                               theme='networks',
                               icon='ant1_fanart.jpg',
                               media_subfolder=False)
        }, {
            'title':
            control.lang(30120),
            'icon':
            control.addonmedia(addonid=art_id,
                               theme='networks',
                               icon='star_icon.png',
                               media_subfolder=False),
            'url':
            'plugin://plugin.video.star.gr/?action=news',
            'fanart':
            control.addonmedia(addonid=art_id,
                               theme='networks',
                               icon='star_fanart.jpg',
                               media_subfolder=False)
        }, {
            'title':
            control.lang(30122),
            'icon':
            control.addonmedia(addonid=art_id,
                               theme='networks',
                               icon='alpha_icon.png',
                               media_subfolder=False),
            'url':
            'plugin://plugin.video.alphatv.gr/?action=news',
            'fanart':
            control.addonmedia(addonid=art_id,
                               theme='networks',
                               icon='alpha_fanart.jpg',
                               media_subfolder=False)
        }, {
            'title':
            control.lang(30121),
            'icon':
            control.addonmedia(addonid=art_id,
                               theme='networks',
                               icon='skai_icon.png',
                               media_subfolder=False),
            'url':
            'plugin://plugin.video.skai.gr/?action=news',
            'fanart':
            control.addonmedia(addonid=art_id,
                               theme='networks',
                               icon='skai_fanart.jpg',
                               media_subfolder=False)
        }, {
            'title':
            'Euronews',
            'icon':
            control.addonmedia(addonid=art_id,
                               theme='networks',
                               icon='euronews_icon.png',
                               media_subfolder=False),
            'url':
            'plugin://plugin.video.euronews.com/?action=videos&url=%22methodName%22%3a%22content.getThemeDetails%22%2c%22params%22%3a%7b%22tId%22%3a%221%22%7d',
            'fanart':
            control.addonmedia(addonid=art_id,
                               theme='networks',
                               icon='euronews_fanart.jpg',
                               media_subfolder=False)
        }]

        for item in items:

            list_item = control.item(label=item['title'])
            list_item.setArt({'icon': item['icon'], 'fanart': item['fanart']})
            url = item['url']
            isFolder = True
            self.list.append((url, list_item, isFolder))

        control.addItems(self.syshandle, self.list)
        control.directory(self.syshandle)
예제 #19
0
def recursive_list_items(url):

    page = 1

    if url.startswith('https'):

        if BASE_API_LINK not in url:
            html = client.request(url)
            script = [
                i for i in client.parseDOM(html, 'script')
                if 'INITIAL_STATE' in i
            ][0]
            script = re.sub(r'var _*?\w+_*? = ', '',
                            script).replace(';</script>', '')
            if script.endswith(';'):
                script = script[:-1]
            _json = json.loads(script)
        else:
            _json = client.request(url, output='json')

        if '/list' in url:

            codename = split(url)[1].partition('=')[2]
            total_pages = _json['pages']['sectionsByCodename'][codename][
                'totalPages']
            page = _json['pages']['sectionsByCodename'][codename][
                'fetchedPage']
            tiles = _json['pages']['sectionsByCodename'][codename]['tilesIds']
            tiles_post_list = [{'id': i} for i in tiles]

        else:

            tiles = []
            if 'GetSeriesDetails' in url:

                episode_groups = _json['episodeGroups']

                for group in episode_groups:
                    episodes = group['episodes']
                    for episode in episodes:
                        codename = episode['id']
                        tiles.append(codename)

                tiles_post_list = [{'id': i} for i in tiles]
                total_pages = 1

            else:

                codenames = list(_json['pages']['sectionsByCodename'].keys())
                for codename in codenames:
                    tiles_list = _json['pages']['sectionsByCodename'][
                        codename]['tilesIds']
                    tiles.extend(tiles_list)
                tiles_post_list = [{'id': i} for i in tiles]
                total_pages = 1

    else:

        if url.startswith('{"platformCodename":"www"'):
            collection_json = json.loads(url)
            url = collection_json['orCollectionCodenames']
            page = collection_json['page']

        filter_tiles = client.request(FILTER_TILES,
                                      post=collection_post(url, page),
                                      output='json')
        total_pages = filter_tiles['pagination']['totalPages']
        page = filter_tiles['pagination']['page']
        tiles = filter_tiles['tiles']
        tiles_post_list = [{'id': i['id']} for i in tiles]

    if total_pages > 1 and page < total_pages:
        page = page + 1
        next_post = collection_post(url, page)
    else:
        next_post = None

    get_tiles = client.request(GET_TILES,
                               post=tiles_post(tiles_post_list),
                               output='json')
    tiles_list = get_tiles['tiles']

    self_list = []

    for tile in tiles_list:

        if tile['isRegionRestrictionEnabled'] and not geo_detect:
            continue

        title = tile['title']
        if 'subtitle' in tile:
            title = ' - '.join([title, tile['subtitle']])
        try:
            if tile.get('isEpisode'):
                try:
                    season = ' '.join([
                        control.lang(30063),
                        str(tile['season']['seasonNumber'])
                    ])
                except KeyError:
                    season = None
                if not season:
                    subtitle = ' '.join(
                        [control.lang(30064),
                         str(tile['episodeNumber'])])
                else:
                    try:
                        subtitle = ''.join([
                            season, ', ',
                            control.lang(30064), ' ',
                            str(tile['episodeNumber'])
                        ])
                    except KeyError:
                        subtitle = tile['publishDate'].partition('T')[0]
                        subtitle = '/'.join(subtitle.split('-')[::-1])
                title = '[CR]'.join([title, subtitle])
        except Exception:
            pass

        images = tile['images']
        fanart = control.fanart()

        if len(images) == 1:

            image = images[0]['url']

        else:

            image_list = [
                [i['url'] for i in images if i['isMain']],
                [i['url'] for i in images if i['role'] == 'hbbtv-icon'],
                [i['url'] for i in images if i['role'] == 'photo'],
                [i['url'] for i in images if i['role'] == 'hbbtv-background']
            ]

            image = images[0]['url']

            for i in image_list:
                if i:
                    image = i[0]
                    break

            fanart_list = [[
                i['url'] for i in images if i['role'] == 'photo-details'
            ], [i['url'] for i in images if i['role'] == 'hbbtv-background'],
                           [
                               i['url'] for i in images if i['role'] == 'photo'
                               and 'ertflix-background' in i['url']
                           ]]

            for f in fanart_list:
                if f and len(f) > 1:
                    fanart = f[1]
                    break
                elif f and len(f) == 1:
                    fanart = f[0]
                    break

        codename = tile['codename']
        vid = tile['id']

        plots = [
            tile.get('description'),
            tile.get('shortDescription'),
            tile.get('tinyDescription'),
            tile.get('subtitle'),
            tile.get('subTitle')
        ]

        plot = control.lang(30014)

        for p in plots:
            if p:
                plot = client.stripTags(p)
                plot = client.replaceHTMLCodes(plot)
                break

        year = tile.get('year')

        if not year:
            try:
                year = int(tile.get('productionYears')[:4])
            except Exception:
                year = 2021

        if tile.get('hasPlayableStream') and not tile.get('type') == 'ser':
            url = VOD_LINK.format('-'.join([vid, codename]))
        else:
            url = GET_SERIES_DETAILS.format(vid)

        data = {
            'title': title,
            'image': image,
            'fanart': fanart,
            'url': url,
            'plot': plot,
            'year': year
        }

        if tile.get('durationSeconds'):
            data.update({'duration': tile.get('durationSeconds')})

        if next_post:
            data.update({
                'next': next_post,
                'nextaction': 'listing',
                'nextlabel': 30500,
                'nexticon': control.addonmedia('next.jpg')
            })

        if tile.get('hasPlayableStream') and not tile.get('type') == 'ser':
            data.update({'action': 'play', 'isFolder': 'False'})
        else:
            data.update({'action': 'listing'})

        self_list.append(data)

    return self_list
예제 #20
0
def add(items,
        cacheToDisc=True,
        content=None,
        mediatype=None,
        infotype='video',
        argv=None,
        as_playlist=False,
        pd_heading=None,
        pd_message='',
        clear_first=True,
        progress=False,
        category=None):

    if argv is None:

        from tulip.init import sysaddon, syshandle

    else:

        sysaddon = argv[0]
        syshandle = int(argv[1])

    if items is None or len(items) == 0:
        return

    # sysicon = control.join(control.addonInfo('path'), 'resources', 'media')
    sysimage = control.addonInfo('icon')
    sysfanart = control.addonInfo('fanart')

    if progress:

        pd = control.progressDialogGB
        pd.create(heading=control.name() if not pd_heading else pd_heading,
                  message=pd_message)

    else:

        pd = None

    if as_playlist and clear_first:

        control.playlist(1 if infotype == 'video' else 0).clear()

    meta_tags = [
        'count', 'size', 'date', 'genre', 'country', 'year', 'episode',
        'season', 'sortepisode', 'sortseason', 'episodeguide', 'showlink',
        'top250', 'setid', 'tracknumber', 'rating', 'userrating', 'watched',
        'playcount', 'overlay', 'cast', 'castandrole', 'director', 'mpaa',
        'plot', 'plotoutline', 'title', 'originaltitle', 'sorttitle',
        'duration', 'studio', 'tagline', 'writer', 'tvshowtitle', 'premiered',
        'status', 'set', 'gameclient', 'setoverview', 'tag', 'imdbnumber',
        'code', 'aired', 'credits', 'lastplayed', 'album', 'artist', 'votes',
        'path', 'trailer', 'dateadded', 'mediatype', 'dbid', 'tracknumber',
        'discnumber', 'lyrics', 'listeners', 'musicbrainztrackid', 'comment',
        'picturepath', 'platform', 'genres', 'publisher', 'developer',
        'overview'
    ]

    for c, i in list(enumerate(items)):

        try:

            if progress:

                p = control.per_cent(c, len(items))
                pd.update(p)

            try:
                label = control.lang(i['title']).encode('utf-8')
            except Exception:
                label = i['title']

            if 'label' in i and not i['label'] == '0':
                label = i['label']

            if 'image' in i and not i['image'] == '0':
                image = i['image']
            elif 'poster' in i and not i['poster'] == '0':
                image = i['poster']
            elif 'icon' in i and not i['icon'] == '0':
                image = control.addonmedia(i['icon'])
            else:
                image = sysimage

            if 'banner' in i and not i['banner'] == '0':
                banner = i['banner']
            elif 'fanart' in i and not i['fanart'] == '0':
                banner = i['fanart']
            else:
                banner = image

            fanart = i['fanart'] if 'fanart' in i and not i[
                'fanart'] == '0' else sysfanart

            isFolder = False if 'isFolder' in i and not i[
                'isFolder'] == '0' else True

            try:
                is_play_boolean = i.get('isPlayable') in [
                    'True', 'true', '1', 'yes', 'Yes'
                ]
            except Exception:
                is_play_boolean = False

            isPlayable = True if not isFolder and 'isPlayable' not in i else is_play_boolean

            if isPlayable:

                isFolder = False

            try:
                action = '{0}?action={1}'.format(sysaddon, i['action'])
            except KeyError:
                return

            try:
                url = 'url={0}'.format(quote_plus(i['url']))
            except Exception:
                url = None

            try:
                title = 'title={0}'.format(quote_plus(i['title']))
            except KeyError:
                try:
                    title = 'title={0}'.format(
                        quote_plus(i['title'].encode('utf-8')))
                except KeyError:
                    title = None
            except Exception:
                title = None

            try:
                icon = 'image={0}'.format(quote_plus(i['image']))
            except KeyError:
                try:
                    icon = 'image={0}'.format(
                        quote_plus(i['image'].encode('utf-8')))
                except KeyError:
                    icon = None
            except Exception:
                icon = None
            try:
                name = 'name={0}'.format(quote_plus(i['name']))
            except KeyError:
                try:
                    name = 'name={0}'.format(
                        quote_plus(i['name'].encode('utf-8')))
                except KeyError:
                    name = None
            except Exception:
                name = None
            try:
                year = 'year={0}'.format(quote_plus(i['year']))
            except Exception:
                year = None
            try:
                plot = 'plot={0}'.format(quote_plus(i['plot']))
            except KeyError:
                try:
                    plot = 'plot={0}'.format(
                        quote_plus(i['plot'].encode('utf-8')))
                except KeyError:
                    plot = None
            except Exception:
                plot = None
            try:
                genre = 'genre={0}'.format(quote_plus(i['genre']))
            except KeyError:
                try:
                    genre = 'genre={0}'.format(
                        quote_plus(i['genre'].encode('utf-8')))
                except KeyError:
                    genre = None
            except Exception:
                genre = None
            try:
                dash = 'dash={0}'.format(quote_plus(i['dash']))
            except Exception:
                dash = None
            try:
                query = 'query={0}'.format(quote_plus(i['query']))
            except Exception:
                query = None

            parts = [
                foo for foo in [
                    action, url, title, icon, name, year, plot, genre, dash,
                    query
                ] if foo
            ]

            uri = '&'.join(parts)

            cm = []
            menus = i['cm'] if 'cm' in i else []

            for menu in menus:

                try:

                    try:
                        tmenu = control.lang(menu['title']).encode('utf-8')
                    except Exception:
                        tmenu = menu['title']
                    try:
                        qmenu = urlencode(menu['query'])
                    except Exception:
                        qmenu = urlencode(
                            dict((k, v.encode('utf-8'))
                                 for k, v in menu['query'].items()))
                    cm.append(
                        (tmenu, 'RunPlugin({0}?{1})'.format(sysaddon, qmenu)))

                except Exception:

                    pass

            meta = dict((k, v) for k, v in iteritems(i)
                        if k in meta_tags and (not v == '0' or v is None))

            if mediatype is not None:
                meta['mediatype'] = mediatype

            item = control.item(label=label)

            item.setArt({
                'icon': image,
                'thumb': image,
                'poster': image,
                'tvshow.poster': image,
                'season.poster': image,
                'banner': banner,
                'tvshow.banner': banner,
                'season.banner': banner,
                'fanart': fanart
            })

            item.addContextMenuItems(cm)
            item.setInfo(
                type=infotype if 'infotype' not in i else i['infotype'],
                infoLabels=meta)

            if isPlayable:

                if not i['action'] == 'pvr_client':
                    item.setProperty('IsPlayable', 'true')
                else:
                    item.setProperty('IsPlayable', 'false')

                if not i['action'] == 'pvr_client':
                    if 'streaminfo' not in i and infotype == 'video':
                        item.addStreamInfo(infotype, {'codec': 'h264'})
                    else:
                        item.addStreamInfo(infotype, i.get('streaminfo'))

            if as_playlist and isPlayable:
                control.playlist(1 if infotype == 'video' else 0).add(
                    url=uri, listitem=item, index=c)
            else:
                control.addItem(handle=syshandle,
                                url=uri,
                                listitem=item,
                                isFolder=isFolder,
                                totalItems=len(items))

        except Exception as reason:
            log('Directory not added, reason of failure: ' + repr(reason))

    if progress:
        pd.update(100)
        pd.close()

    if as_playlist:

        control.openPlaylist(1 if infotype == 'video' else 0)

        return

    try:

        i = items[0]
        if i['next'] == '':
            raise Exception()

        url = '{0}?action={1}&url={2}'.format(sysaddon, i['nextaction'],
                                              quote_plus(i['next']))
        icon = i['nexticon'] if 'nexticon' in i else control.addonmedia(
            'next.png')
        fanart = i['nextfanart'] if 'nextfanart' in i else sysfanart

        try:
            label = control.lang(i['nextlabel']).encode('utf-8')
        except Exception:
            label = 'Next'

        item = control.item(label=label)

        item.setArt({
            'icon': icon,
            'thumb': icon,
            'poster': icon,
            'tvshow.poster': icon,
            'season.poster': icon,
            'banner': icon,
            'tvshow.banner': icon,
            'season.banner': icon,
            'fanart': fanart
        })

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

    except Exception:

        pass

    if content is not None:
        control.content(syshandle, content)

    if category is not None:
        control.setcategory(syshandle, category)

    control.directory(syshandle, cacheToDisc=cacheToDisc)
예제 #21
0
    def networks(self):

        networks = [{
            'title':
            'EPT',
            'icon':
            control.addonmedia(addonid=art_id,
                               theme='networks',
                               icon='ert_icon.png',
                               media_subfolder=False),
            'url':
            'plugin://plugin.video.ert.gr/',
            'fanart':
            control.addonmedia(addonid=art_id,
                               theme='networks',
                               icon='ert_fanart.jpg',
                               media_subfolder=False)
        }, {
            'title':
            'ANT1',
            'icon':
            control.addonmedia(addonid=art_id,
                               theme='networks',
                               icon='ant1_icon.png',
                               media_subfolder=False),
            'url':
            'plugin://plugin.video.antenna.gr/',
            'fanart':
            control.addonmedia(addonid=art_id,
                               theme='networks',
                               icon='ant1_fanart.jpg',
                               media_subfolder=False)
        }, {
            'title':
            'STAR',
            'icon':
            control.addonmedia(addonid=art_id,
                               theme='networks',
                               icon='star_icon.png',
                               media_subfolder=False),
            'url':
            'plugin://plugin.video.star.gr/',
            'fanart':
            control.addonmedia(addonid=art_id,
                               theme='networks',
                               icon='star_fanart.jpg',
                               media_subfolder=False)
        }, {
            'title':
            'ALPHA',
            'icon':
            control.addonmedia(addonid=art_id,
                               theme='networks',
                               icon='alpha_icon.png',
                               media_subfolder=False),
            'url':
            'plugin://plugin.video.alphatv.gr/',
            'fanart':
            control.addonmedia(addonid=art_id,
                               theme='networks',
                               icon='alpha_fanart.jpg',
                               media_subfolder=False)
        }, {
            'title':
            'SKAI',
            'icon':
            control.addonmedia(addonid=art_id,
                               theme='networks',
                               icon='skai_icon.png',
                               media_subfolder=False),
            'url':
            'plugin://plugin.video.skai.gr/',
            'fanart':
            control.addonmedia(addonid=art_id,
                               theme='networks',
                               icon='skai_fanart.jpg',
                               media_subfolder=False)
        }, {
            'title':
            'EURONEWS',
            'icon':
            control.addonmedia(addonid=art_id,
                               theme='networks',
                               icon='euronews_icon.png',
                               media_subfolder=False),
            'url':
            'plugin://plugin.video.euronews.com/',
            'fanart':
            control.addonmedia(addonid=art_id,
                               theme='networks',
                               icon='euronews_fanart.jpg',
                               media_subfolder=False)
        }, {
            'title':
            'NOVASPORTS',
            'icon':
            control.addonmedia(addonid=art_id,
                               theme='networks',
                               icon='nova_icon.png',
                               media_subfolder=False),
            'url':
            'plugin://plugin.video.novasports.gr/',
            'fanart':
            control.addonmedia(addonid=art_id,
                               theme='networks',
                               icon='nova_fanart.jpg',
                               media_subfolder=False)
        }, {
            'title':
            'GREEK VOICE',
            'icon':
            control.addonmedia(addonid=art_id,
                               theme='networks',
                               icon='wzra48_icon.png',
                               media_subfolder=False),
            'url':
            'plugin://plugin.video.greekvoice/',
            'fanart':
            control.addonmedia(addonid=art_id,
                               theme='networks',
                               icon='wzra48_fanart.jpg',
                               media_subfolder=False)
        }, {
            'title':
            'TORONTO CHANNELS',
            'icon':
            control.addonmedia(addonid=art_id,
                               theme='networks',
                               icon='tc_icon.png',
                               media_subfolder=False),
            'url':
            'plugin://plugin.video.Toronto-Channels/',
            'fanart':
            control.addonmedia(addonid=art_id,
                               theme='networks',
                               icon='tc_fanart.jpg',
                               media_subfolder=False)
        }, {
            'title':
            'MONTREAL GREEK TV',
            'icon':
            control.addonmedia(addonid=art_id,
                               theme='networks',
                               icon='mg_icon.png',
                               media_subfolder=False),
            'url':
            'plugin://plugin.video.montreal.greek-tv/',
            'fanart':
            control.addonmedia(addonid=art_id,
                               theme='networks',
                               icon='mgtv_fanart.jpg',
                               media_subfolder=False)
        }, {
            'title':
            'FAROS ON AIR',
            'icon':
            control.addonmedia(addonid=art_id,
                               theme='networks',
                               icon='faros_icon.png',
                               media_subfolder=False),
            'url':
            'plugin://plugin.video.faros.on-air/',
            'fanart':
            control.addonmedia(addonid=art_id,
                               theme='networks',
                               icon='faros_fanart.jpg',
                               media_subfolder=False)
        }]

        for network in networks:

            list_item = control.item(label=network['title'])
            list_item.setArt({
                'icon': network['icon'],
                'fanart': network['fanart']
            })
            url = network['url']
            self.list.append((url, list_item, True))

        control.addItems(self.syshandle, self.list)
        control.directory(self.syshandle)
예제 #22
0
    def live(self):

        if control.setting('debug') == 'false':

            result = client.request(thgiliwt('=' + self.alivegr),
                                    headers={
                                        'User-Agent':
                                        'AliveGR, version: ' +
                                        control.version()
                                    })

            result = dexteni(b64decode(result))

        else:

            if control.setting('local_remote') == '0':
                local = control.setting('live_local')
                with open(local) as xml:
                    result = xml.read()
                    xml.close()
            elif control.setting('local_remote') == '1':
                result = client.request(control.setting('live_remote'))
            else:
                result = client.request(thgiliwt('==' + self.alivegr))
                result = dexteni(b64decode(result))

        if control.setting('debug') == 'false':
            channels = client.parseDOM(result,
                                       'channel',
                                       attrs={'enable': '1'})
        else:
            channels = client.parseDOM(result,
                                       'channel',
                                       attrs={'enable': '1|2'})

        updated = client.parseDOM(result, 'channels', ret='updated')[0]

        for channel in channels:

            title = client.parseDOM(channel, 'name')[0]
            image = client.parseDOM(channel, 'logo')[0]
            if not image.startswith('http'):
                image = control.addonmedia(image,
                                           logos_id,
                                           theme='logos',
                                           media_subfolder=False)
            group = client.parseDOM(channel, 'group')[0]
            group = live_groups[group]
            url = client.parseDOM(channel, 'url')[0]

            website = client.parseDOM(channel,
                                      'website')[0].replace('&amp;', '&')

            info = client.parseDOM(channel, 'info')[0]
            if len(info) == 5 and info[:5].isdigit():
                info = control.lang(int(info))

            if ' - ' in info:
                if control.setting('lang_split') == '0':
                    if 'Greek' in control.infoLabel('System.Language'):
                        info = info.partition(' - ')[2]
                    elif 'English' in control.infoLabel('System.Language'):
                        info = info.partition(' - ')[0]
                    else:
                        info = info
                elif control.setting('lang_split') == '1':
                    info = info.partition(' - ')[0]
                elif control.setting('lang_split') == '2':
                    info = info.partition(' - ')[2]
                else:
                    info = info

            data = ({
                'title': title,
                'image': image,
                'group': str(group),
                'url': url,
                'genre': control.lang(group),
                'plot': info,
                'website': website
            })

            self.list.append(data)
            self.data.append(group)

        self.groups = list(OrderedDict.fromkeys(self.data))

        return self.list, self.groups, updated
예제 #23
0
    def menu(self):

        self.list = [
            {
                'title': control.lang(30170),
                'action': 'music_live',
                'image': iconname('monitor'),
                'fanart': 'https://i.ytimg.com/vi/vtjL9IeowUs/maxresdefault.jpg'
            }
            ,
            {
                'title': control.lang(30124),
                'action': 'gm_music',
                'image': iconname('music'),
                'fanart': 'https://cdn.allwallpaper.in/wallpapers/1280x720/1895/music-hd-1280x720-wallpaper.jpg'
            }
            ,
            {
                'title': control.lang(30126),
                'action': 'mgreekz_index',
                'image': 'https://pbs.twimg.com/profile_images/697098521527328772/VY8e_klm_400x400.png',
                'fanart': control.addonmedia(
                    addonid=art_id, theme='networks', icon='mgz_fanart.jpg', media_subfolder=False
                )
            }
            ,
            {
                'title': control.lang(30127),
                'action': 'mgreekz_top10',
                'image': 'https://pbs.twimg.com/profile_images/697098521527328772/VY8e_klm_400x400.png',
                'fanart': control.addonmedia(
                    addonid=art_id, theme='networks', icon='mgz_fanart.jpg', media_subfolder=False
                )
            }
            ,
            {
                'title': control.lang(30128),
                'action': 'top20_list',
                'url': self.rythmos_top20_url,
                'image': 'https://is3-ssl.mzstatic.com/image/thumb/Purple62/v4/3e/a4/48/3ea44865-8cb2-5fec-be70-188a060b712c/source/256x256bb.jpg',
                'fanart': control.addonmedia(
                    addonid=art_id,
                    theme='networks',
                    icon='rythmos_fanart.jpg',
                    media_subfolder=False
                )
            }
            ,
            {
                'title': control.lang(30221),
                'action': 'top20_list',
                'url': self.plus_url,
                'image': 'https://is5-ssl.mzstatic.com/image/thumb/Purple20/v4/e8/99/e8/e899e8ea-0df6-0f60-d66d-b82b8021e8af/source/256x256bb.jpg',
                'fanart': 'https://i.imgur.com/G8koVR8.jpg'
            }
            ,
            {
                'title': control.lang(30222),
                'action': 'top20_list',
                'url': self.radiopolis_url_gr,
                'image': 'http://www.radiopolis.gr/wp-content/uploads/2017/11/noimageavailable.jpg',
                'fanart': 'https://i.ytimg.com/vi/tCupKdpHVx8/maxresdefault.jpg'
            }
            ,
            {
                'title': control.lang(30223),
                'action': 'top20_list',
                'url': self.radiopolis_url_other,
                'image': 'http://www.radiopolis.gr/wp-content/uploads/2017/11/noimageavailable.jpg',
                'fanart': 'https://i.ytimg.com/vi/tCupKdpHVx8/maxresdefault.jpg'
            }
            ,
            {
                'title': control.lang(30269),
                'action': 'top50_list',
                'url': 's1GeuATNw9GdvcXYy9Cdl5mLydWZ2lGbh9yL6MHc0RHa',
                'image': control.addonInfo('icon'),
                'fanart': 'https://i.ytimg.com/vi/vtjL9IeowUs/maxresdefault.jpg'
            }
            ,
            {
                'title': control.lang(30292),
                'action': 'techno_choices',
                'url': 'PLZF-_NNdxpb5s1vjh6YSMTyjjlfiZhgbp',
                'image': control.addonInfo('icon'),
                'fanart': 'https://i.ytimg.com/vi/vtjL9IeowUs/maxresdefault.jpg'
            }
        ]

        if control.condVisibility('Window.IsVisible(music)'):
            del self.list[0]

        log_debug('Music section loaded')
        directory.add(self.list, argv=self.argv)
예제 #24
0
    def info(self):

        separator = '[CR]' if control.setting('wrap_labels') == '0' else ' '

        try:
            disclaimer = control.addonInfo('disclaimer').decode('utf-8')
        except (UnicodeEncodeError, UnicodeDecodeError, AttributeError):
            disclaimer = control.addonInfo('disclaimer')

        self.list = [
            {
                'title': control.lang(30331),
                'action': 'welcome',
                'icon': control.addonInfo('icon'),
                'isFolder': 'False',
                'isPlayable': 'False'
            },
            {
                'title':
                control.lang(30105),
                'action':
                'dmca',
                'plot':
                disclaimer,
                'icon':
                control.addonmedia(addonid=ART_ID,
                                   theme='icons',
                                   icon='dmca.png',
                                   media_subfolder=False),
                'isFolder':
                'False',
                'isPlayable':
                'False'
            },
            {
                'title': control.lang(30290),
                'action': 'pp',
                'isFolder': 'False',
                'isPlayable': 'False'
            },
            {
                'title': '[B]' + control.lang(30110) + '[/B]',
                'action': 'changelog',
                'icon': control.addonInfo('icon'),
                'plot': changelog(get_text=True),
                'isFolder': 'False',
                'isPlayable': 'False'
            },
            {
                'title': control.lang(30295),
                'action': 'toggle_debug',
                'isFolder': 'False',
                'isPlayable': 'False'
            },
            {
                'title': control.lang(30341),
                'action': 'kodi_log_upload',
                'isFolder': 'False',
                'isPlayable': 'False'
            },
            {
                'title': control.lang(30296),
                'action': 'force',
                'isFolder': 'False',
                'isPlayable': 'False'
            },
            {
                'title':
                control.lang(30260).format(separator),
                'action':
                'open_link',
                'url':
                SUPPORT,
                'plot':
                'Git repo',
                'icon':
                control.addonmedia(addonid=ART_ID,
                                   theme='icons',
                                   icon='bitbucket.png',
                                   media_subfolder=False),
                'isFolder':
                'False',
                'isPlayable':
                'False'
            },
            {
                'title':
                control.lang(30141) + ': [COLOR cyan]' + PAYPAL + '[/COLOR]',
                'action': 'open_link',
                'url': PAYPAL,
                'isFolder': 'False',
                'isPlayable': 'False'
            }
            # ,
            # {
            #     'title': control.lang(30142) + ': [COLOR cyan]' + PATREON + '[/COLOR]',
            #     'action': 'open_link',
            #     'url': PATREON,
            #     'isFolder': 'False',
            #     'isPlayable': 'False'
            # }
            ,
            {
                'title':
                control.lang(30256).format(separator,
                                           control.addonInfo('version')),
                'action':
                'force',
                'plot':
                control.lang(30265),
                'icon':
                control.addonInfo('icon'),
                'isFolder':
                'False',
                'isPlayable':
                'False'
            },
            {
                'title':
                control.lang(30257).format(
                    separator,
                    control.addon('script.module.tulip').getAddonInfo(
                        'version')),
                'action':
                'force',
                'plot':
                control.lang(30265),
                'icon':
                control.addon('script.module.tulip').getAddonInfo('icon'),
                'isFolder':
                'False',
                'isPlayable':
                'False'
            },
            {
                'title':
                control.lang(30264).format(
                    separator,
                    control.addon('script.module.resolveurl').getAddonInfo(
                        'version')),
                'action':
                'other_addon_settings',
                'query':
                'script.module.resolveurl',
                'plot':
                control.lang(30265),
                'icon':
                control.addon('script.module.resolveurl').getAddonInfo('icon'),
                'isFolder':
                'False',
                'isPlayable':
                'False'
            },
            {
                'title':
                control.lang(30258).format(separator, control.kodi_version()),
                'action':
                'system_info',
                'plot':
                control.lang(30263),
                'icon':
                control.addonmedia(addonid=ART_ID,
                                   theme='icons',
                                   icon='kodi.png',
                                   media_subfolder=False),
                'isFolder':
                'False',
                'isPlayable':
                'False'
            },
            {
                'title':
                control.lang(30303).format(
                    separator, '.'.join([
                        str(sys.version_info[0]),
                        str(sys.version_info[1]),
                        str(sys.version_info[2])
                    ])),
                'action':
                'system_info',
                'plot':
                control.lang(30263),
                'image':
                'https://www.python.org/static/opengraph-icon-200x200.png',
                'isFolder':
                'False',
                'isPlayable':
                'False'
            }
        ]

        directory.add(self.list, content='movies')
예제 #25
0
    def menu(self):

        self.list = [{
            'title':
            '[B]' + control.addonInfo('name') + ': ' + control.lang(30255) +
            '[/B]',
            'action':
            'info',
            'icon':
            control.addonInfo('icon')
        }, {
            'title':
            '[B]' + control.addonInfo('name') + ': ' + control.lang(30350) +
            '[/B]',
            'action':
            'toggle_alt',
            'icon':
            iconname('monitor'),
            'isFolder':
            'False',
            'isPlayable':
            'False'
        }, {
            'title': control.lang(30011) + ': ' + control.lang(30003),
            'action': 'openSettings',
            'icon': iconname('settings'),
            'isFolder': 'False',
            'isPlayable': 'False'
        }, {
            'title': control.lang(30011) + ': ' + control.lang(30005),
            'action': 'openSettings',
            'query': '1.0',
            'icon': iconname('settings'),
            'isFolder': 'False',
            'isPlayable': 'False'
        }, {
            'title': control.lang(30011) + ': ' + control.lang(30004),
            'action': 'openSettings',
            'query': '2.0',
            'icon': iconname('monitor'),
            'isFolder': 'False',
            'isPlayable': 'False'
        }, {
            'title': control.lang(30011) + ': ' + control.lang(30138),
            'action': 'openSettings',
            'query': '3.0',
            'icon': iconname('settings'),
            'isFolder': 'False',
            'isPlayable': 'False'
        }, {
            'title': control.lang(30011) + ': ' + control.lang(30017),
            'action': 'openSettings',
            'query': '4.0',
            'icon': iconname('settings'),
            'isFolder': 'False',
            'isPlayable': 'False'
        }, {
            'title':
            control.addonInfo('name') + ': ' + control.lang(30115),
            'action':
            'openSettings',
            'query':
            '5.0',
            'icon':
            iconname('godmode'),
            'isFolder':
            'False',
            'isPlayable':
            'False'
        }, {
            'title':
            control.addonInfo('name') + ': ' + control.lang(30056),
            'action':
            'cache_clear',
            'icon':
            iconname('empty'),
            'isFolder':
            'False',
            'isPlayable':
            'False'
        }, {
            'title':
            control.addonInfo('name') + ': ' + control.lang(30135),
            'action':
            'clear_bookmarks',
            'icon':
            iconname('empty'),
            'isFolder':
            'False',
            'isPlayable':
            'False'
        }, {
            'title':
            control.addonInfo('name') + ': ' + control.lang(30134),
            'action':
            'reset_idx',
            'icon':
            iconname('settings'),
            'isFolder':
            'False',
            'isPlayable':
            'False'
        }, {
            'title': control.lang(30320) + ': ' + control.lang(30272),
            'action': 'input_stream_addons',
            'icon': iconname('monitor')
        }, {
            'title':
            control.lang(30319),
            'action':
            'global_settings',
            'icon':
            control.addonmedia(addonid=ART_ID,
                               theme='icons',
                               icon='kodi.png',
                               media_subfolder=False),
            'isFolder':
            'False',
            'isPlayable':
            'False'
        }]

        if control.condVisibility('Window.IsVisible(programs)'):

            for i in self.list:
                i.update(
                    {'cm': [{
                        'title': 30307,
                        'query': {
                            'action': 'root'
                        }
                    }]})

        directory.add(self.list)
예제 #26
0
    def menu(self):

        self.list = [{
            'title':
            control.lang(30170),
            'action':
            'music_live',
            'image':
            iconname('monitor'),
            'fanart':
            'https://i.ytimg.com/vi/vtjL9IeowUs/maxresdefault.jpg'
        }, {
            'title':
            control.lang(30124),
            'action':
            'gm_music',
            'image':
            iconname('music'),
            'fanart':
            'https://cdn.allwallpaper.in/wallpapers/1280x720/1895/music-hd-1280x720-wallpaper.jpg'
        }, {
            'title':
            control.lang(30126),
            'action':
            'mgreekz_index',
            'image':
            'https://pbs.twimg.com/profile_images/697098521527328772/VY8e_klm_400x400.png',
            'fanart':
            control.addonmedia(addonid=ART_ID,
                               theme='networks',
                               icon='mgz_fanart.jpg',
                               media_subfolder=False),
            'isFolder':
            'False',
            'isPlayable':
            'False'
        }, {
            'title':
            control.lang(30269),
            'action':
            'top50_list',
            'url':
            's1GeuATNw9GdvcXYy9Cdl5mLydWZ2lGbh9yL6MHc0RHa',
            'image':
            control.addonInfo('icon'),
            'fanart':
            'https://i.ytimg.com/vi/vtjL9IeowUs/maxresdefault.jpg'
        }, {
            'title':
            control.lang(30292),
            'action':
            'techno_choices',
            'url':
            'PLZF-_NNdxpb5s1vjh6YSMTyjjlfiZhgbp',
            'image':
            control.addonInfo('icon'),
            'fanart':
            'https://i.ytimg.com/vi/vtjL9IeowUs/maxresdefault.jpg'
        }]

        if control.condVisibility('Window.IsVisible(music)'):
            del self.list[0]

        directory.add(self.list)
예제 #27
0
from zlib import decompress
from base64 import b64decode
from os import path

sysaddon = argv[0]
syshandle = int(argv[1])
params = dict(parse_qsl(argv[2][1:]))
action = params.get('action')
url = params.get('url')

lc = [
    {
        'title':
        'Greek Voice',
        'icon':
        control.addonmedia(addonid='resource.images.greekvoice.artwork',
                           icon='GV1_icon.png'),
        'url':
        'http://wpso.com:1936/hls/wzra.m3u8',
        'fanart':
        control.addonmedia(addonid='resource.images.greekvoice.artwork',
                           icon='GV_TV1_fanart.jpg'),
        'plot':
        u'Greek Voice 1'
    },
    # {
    #     'title': 'Greek Voice 2',
    #     'icon': join(addonmedia, 'GV2_icon.png'),
    #     'url': 'http://stream.ssh101.com:1935/live/greekvoice/playlist.m3u8',
    #     'fanart': join(addonmedia, 'GV_TV2_fanart.jpg'),
    #     'plot': u'Greek Voice 2'
    # }
예제 #28
0
    def menu(self):

        self.list = [{
            'title':
            control.addonInfo('name') + ': ' + control.lang(30255),
            'action':
            'info',
            'icon':
            control.addonInfo('icon')
        }, {
            'title': control.lang(30011) + ': ' + control.lang(30003),
            'action': 'openSettings',
            'icon': iconname('settings'),
            'isFolder': 'False',
            'isPlayable': 'False'
        }, {
            'title': control.lang(30011) + ': ' + control.lang(30005),
            'action': 'openSettings',
            'query': '1.0',
            'icon': iconname('settings'),
            'isFolder': 'False',
            'isPlayable': 'False'
        }, {
            'title': control.lang(30011) + ': ' + control.lang(30004),
            'action': 'openSettings',
            'query': '2.0',
            'icon': iconname('monitor'),
            'isFolder': 'False',
            'isPlayable': 'False'
        }, {
            'title': control.lang(30011) + ': ' + control.lang(30138),
            'action': 'openSettings',
            'query': '3.0',
            'icon': iconname('settings'),
            'isFolder': 'False',
            'isPlayable': 'False'
        }, {
            'title': control.lang(30011) + ': ' + control.lang(30017),
            'action': 'openSettings',
            'query': '4.0',
            'icon': iconname('settings'),
            'isFolder': 'False',
            'isPlayable': 'False'
        }, {
            'title':
            control.addonInfo('name') + ': ' + control.lang(30115),
            'action':
            'openSettings',
            'query':
            '5.0',
            'icon':
            iconname('godmode'),
            'isFolder':
            'False',
            'isPlayable':
            'False'
        }, {
            'title':
            control.addonInfo('name') + ': ' + control.lang(30056),
            'action':
            'cache_clear',
            'icon':
            iconname('empty'),
            'isFolder':
            'False',
            'isPlayable':
            'False'
        }, {
            'title':
            control.addonInfo('name') + ': ' + control.lang(30135),
            'action':
            'purge_bookmarks',
            'icon':
            iconname('empty'),
            'isFolder':
            'False',
            'isPlayable':
            'False'
        }, {
            'title':
            control.addonInfo('name') + ': ' + control.lang(30134),
            'action':
            'reset_idx',
            'icon':
            iconname('settings'),
            'isFolder':
            'False',
            'isPlayable':
            'False'
        }, {
            'title':
            control.addonInfo('name') + ': ' + control.lang(30110),
            'action':
            'changelog',
            'icon':
            control.addonInfo('icon'),
            'isFolder':
            'False',
            'isPlayable':
            'False'
        }, {
            'title':
            control.lang(30111),
            'action':
            'other_addon_settings',
            'query':
            'script.module.resolveurl',
            'icon':
            control.addon(id='script.module.resolveurl').getAddonInfo('icon'),
            'isFolder':
            'False',
            'isPlayable':
            'False'
        }, {
            'title':
            control.lang(30319),
            'action':
            'global_settings',
            'icon':
            control.addonmedia(addonid=art_id,
                               theme='icons',
                               icon='kodi.png',
                               media_subfolder=False),
            'isFolder':
            'False',
            'isPlayable':
            'False'
        }]

        if float(control.addon('xbmc.addon').getAddonInfo('version')
                 [:4]) >= 17.0:

            inputstream = {
                'title': control.lang(30320) + ': ' + control.lang(30272),
                'action': 'input_stream_addons',
                'icon': iconname('monitor')
            }

            self.list.insert(6, inputstream)

        if control.condVisibility('Window.IsVisible(programs)'):

            for i in self.list:
                i.update(
                    {'cm': [{
                        'title': 30307,
                        'query': {
                            'action': 'root'
                        }
                    }]})

        directory.add(self.list, argv=self.argv)
예제 #29
0
    def news(self):

        items = [{
            'title': control.lang(30230),
            'icon':
            'https://www.iconexperience.com/_img/v_collection_png/256x256/shadow/newspaper.png',
            'url': '{0}?action=papers'.format(sysaddon),
            'fanart': control.addonInfo('fanart')
        }, {
            'title':
            control.lang(30118),
            'icon':
            control.addonmedia(addonid=ART_ID,
                               theme='networks',
                               icon='ert_icon.png',
                               media_subfolder=False),
            'url':
            'plugin://plugin.video.ert.gr/?action=categories&url=https%3A%2F%2Fwww.ertflix.gr%2Fshow%2Fnews',
            'fanart':
            control.addonmedia(addonid=ART_ID,
                               theme='networks',
                               icon='ert_fanart.jpg',
                               media_subfolder=False)
        }, {
            'title':
            control.lang(30119),
            'icon':
            control.addonmedia(addonid=ART_ID,
                               theme='networks',
                               icon='ant1_icon.png',
                               media_subfolder=False),
            'url':
            'plugin://plugin.video.antenna.gr/?action=videos&url=https%3a%2f%2fwww.ant1news.gr%2fvideos',
            'fanart':
            control.addonmedia(addonid=ART_ID,
                               theme='networks',
                               icon='ant1_fanart.jpg',
                               media_subfolder=False)
        }, {
            'title':
            control.lang(30120),
            'icon':
            control.addonmedia(addonid=ART_ID,
                               theme='networks',
                               icon='star_icon.png',
                               media_subfolder=False),
            'url':
            'plugin://plugin.video.star.gr/?action=news',
            'fanart':
            control.addonmedia(addonid=ART_ID,
                               theme='networks',
                               icon='star_fanart.jpg',
                               media_subfolder=False)
        }, {
            'title':
            control.lang(30122),
            'icon':
            control.addonmedia(addonid=ART_ID,
                               theme='networks',
                               icon='alpha_icon.png',
                               media_subfolder=False),
            'url':
            'plugin://plugin.video.alphatv.gr/?action=news&url=https%3a%2f%2fwww.alphatv.gr%2fnews',
            'fanart':
            control.addonmedia(addonid=ART_ID,
                               theme='networks',
                               icon='alpha_fanart.jpg',
                               media_subfolder=False)
        }, {
            'title':
            control.lang(30121),
            'icon':
            control.addonmedia(addonid=ART_ID,
                               theme='networks',
                               icon='skai_icon.png',
                               media_subfolder=False),
            'url':
            'plugin://plugin.video.skai.gr/?action=news',
            'fanart':
            control.addonmedia(addonid=ART_ID,
                               theme='networks',
                               icon='skai_fanart.jpg',
                               media_subfolder=False)
        }]

        for item in items:

            list_item = control.item(label=item['title'])
            list_item.setArt({'icon': item['icon'], 'fanart': item['fanart']})
            url = item['url']
            isFolder = True if 'papers' not in item['url'] else False
            self.list.append((url, list_item, isFolder))

        control.addItems(syshandle, self.list)
        control.directory(syshandle)
예제 #30
0
def main_menu():

    menu = []

    menu_items = [
        {
            'title':
            control.lang(30001),
            'icon':
            control.addonmedia(addonid='resource.images.greekvoice.artwork',
                               icon='television.png'),
            'url':
            '{0}?action={1}'.format(sysaddon, 'live'),
            'fanart':
            control.addonmedia(addonid='resource.images.greekvoice.artwork',
                               icon='GV_TV2_fanart.jpg')
        }, {
            'title':
            control.lang(30002),
            'icon':
            control.addonmedia(addonid='resource.images.greekvoice.artwork',
                               icon='radio.png'),
            'url':
            '{0}?action={1}'.format(sysaddon, 'radio'),
            'fanart':
            control.addonmedia(addonid='resource.images.greekvoice.artwork',
                               icon='TILEMOUSIKI_fanart.jpg')
        }, {
            'title':
            control.lang(30014),
            'icon':
            control.addonmedia(addonid='resource.images.greekvoice.artwork',
                               icon='GV_YT_icon.png'),
            'url':
            'plugin://plugin.video.youtube/channel/{0}/?addon_id={1}'.format(
                channel_id, control.addonInfo('id')),
            'fanart':
            control.addonmedia(addonid='resource.images.greekvoice.artwork',
                               icon='GV_TV2_fanart.jpg')
        }
        # ,
        # {
        #     'title': control.lang(30004),
        #     'icon': control.addonmedia(addonid='resource.images.greekvoice.artwork', icon='settings.png'),
        #     'url': '{0}?action={1}'.format(sysaddon, 'settings'),
        #     'fanart': control.addonInfo('fanart')
        # }
    ]

    for item in menu_items:
        li = control.item(label=item['title'])
        li.setInfo('video', {'title': item['title']})
        li.setArt({
            'fanart': item['fanart'],
            'icon': item['icon'],
            'thumb': item['icon']
        })
        _url = item['url']
        if item['url'].endswith('settings'):
            _isFolder = False
        else:
            _isFolder = True
        menu.append((_url, li, _isFolder))

    control.addItems(syshandle, menu)
    control.directory(syshandle)