Esempio n. 1
0
    def papers_index(self):

        # self.data = cache.get(self.front_pages, 12)
        self.data = self.front_pages()

        if not self.data:
            return

        for i in self.data:
            i.update({'action': None, 'isFolder': 'False'})

        self.list = [
            item for item in self.data
            if any(item['group'] == group
                   for group in [int(control.setting('papers_group'))])
        ] if not control.setting('papers_group') == '0' else self.data

        if control.setting('papers_group') == '1':
            integer = 30231
        elif control.setting('papers_group') == '2':
            integer = 30232
        elif control.setting('papers_group') == '3':
            integer = 30233
        elif control.setting('papers_group') == '4':
            integer = 30234
        else:
            integer = 30235

        switch = {
            'title': control.lang(30047).format(control.lang(integer)),
            'icon': iconname('switcher'),
            'action': 'papers_switcher'
        }

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

            li = control.item(label=switch['title'], iconImage=switch['icon'])
            li.setArt({'fanart': control.addonInfo('fanart')})
            url = '{0}?action={1}'.format(self.sysaddon, switch['action'])
            control.addItem(self.syshandle, url, li)

        for i in self.list:

            li = control.item(label=i['title'], iconImage=i['image'])
            li.setArt({
                'poster': i['image'],
                'thumb': i['image'],
                'fanart': control.addonInfo('fanart')
            })
            li.setInfo('image', {'title': i['title'], 'picturepath': i['url']})
            url = i['url']
            isFolder = False
            self.directory.append((url, li, isFolder))

        control.addItems(self.syshandle, self.directory)
        control.directory(self.syshandle)
Esempio n. 2
0
    def papers_index(self):

        self.data = self.front_pages()

        for i in self.data:
            i.update({'action': None, 'isFolder': 'False'})

        try:
            self.list = [
                item for item in self.data
                if item['group'] == int(control.setting('papers_group'))
            ]
        except Exception:
            self.list = [item for item in self.data if item['group'] == 0]
            control.setSetting('papers_group', '0')

        if control.setting('papers_group') == '1':
            integer = 30232
        elif control.setting('papers_group') == '2':
            integer = 30233
        elif control.setting('papers_group') == '3':
            integer = 30234
        else:
            integer = 30231

        switch = {
            'title': control.lang(30047).format(control.lang(integer)),
            'icon': iconname('switcher'),
            'action': 'papers_switcher'
        }

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

            li = control.item(label=switch['title'])
            li.setArt({
                'icon': switch['icon'],
                'fanart': control.addonInfo('fanart')
            })
            url = '{0}?action={1}'.format(sysaddon, switch['action'])
            control.addItem(syshandle, url, li)

        for i in self.list:

            li = control.item(label=i['title'])
            li.setArt({
                'icon': i['image'],
                'poster': i['image'],
                'thumb': i['image'],
                'fanart': control.addonInfo('fanart')
            })
            li.setInfo('image', {'title': i['title'], 'picturepath': i['url']})
            url = i['url']
            self.directory.append((url, li, False))

        control.addItems(syshandle, self.directory)
        control.directory(syshandle)
Esempio n. 3
0
def play_media(link, image):

    link = unquote_plus(link)
    li = control.item(path=link, iconImage=image, thumbnailImage=image)
    li.setArt({'thumb': image})

    control.player().play(link, li)
Esempio n. 4
0
def paper_index(link):

    menu = []

    items = _paper_index(link)

    if items is None:
        return

    for i in items:
        li = control.item(label=i['title'])
        li.setArt({
            'poster':
            i['image'],
            'thumb':
            i['image'],
            'fanart':
            control.join(control.addonPath, 'resources', 'media',
                         'newspaper_fanart.png')
        })
        li.setInfo('image', {'title': i['title'], 'picturepath': i['url']})
        url = i['url']
        menu.append((url, li, False))

    control.content(syshandle, 'images')
    control.addItems(syshandle, menu)
    control.directory(syshandle)
Esempio n. 5
0
    def play(self, name, url=None, as_script=True, append_string=''):

        try:

            url = self.worker(name, url, append_string)
            if url is None:
                return

            title = control.infoLabel('listitem.title')
            if title == '':
                title = control.infoLabel('listitem.label')
            icon = control.infoLabel('listitem.icon')

            item = control.item(path=url, iconImage=icon, thumbnailImage=icon)

            try:
                item.setArt({'icon': icon})
            except Exception:
                pass

            item.setInfo(type='Video', infoLabels={'title': title})

            if as_script:
                control.player.play(url, item)
            else:
                directory.resolve(url, meta={'title': title}, icon=icon)

        except Exception:

            pass
Esempio n. 6
0
    def kids(self):

        self.data = [{
            'title': control.lang(30078),
            'url': 'plugin://plugin.video.AliveGR/?action=kids_live',
            'icon': iconname('kids_live')
        }, {
            'title':
            control.lang(30074),
            'url':
            '{0}?action={1}'.format(self.sysaddon, 'cartoon_collection'),
            'icon':
            iconname('cartoon_collection')
        }, {
            'title':
            control.lang(30075),
            'url':
            '{0}?action={1}'.format(self.sysaddon, 'educational'),
            'icon':
            iconname('educational')
        }, {
            'title':
            control.lang(30076),
            'url':
            '{0}?action={1}'.format(self.sysaddon, 'kids_songs'),
            'icon':
            iconname('kids_songs')
        }]

        try:
            if control.condVisibility('System.HasAddon({0})'.format(sdik)):
                extended = [
                    dict((k, control.lang(v) if (k == 'title') else v)
                         for k, v in item.items())
                    for item in extension.kids_indexer
                ]
                extended = [
                    dict((k, iconname(v) if (k == 'icon') else v)
                         for k, v in item.items()) for item in extended
                ]
                self.data = [self.data[0]] + extended + self.data[1:]
        except:
            pass

        for item in self.data:
            li = control.item(label=item['title'])
            li.setArt({
                'icon': item['icon'],
                'fanart': control.addonInfo('fanart')
            })
            self.list.append((item['url'], li, True))

        control.addItems(self.syshandle, self.list)
        control.directory(self.syshandle)
Esempio n. 7
0
    def miscellany(self):

        self.data = self.misc_list()

        self.list = []

        for item in self.data:

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

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

        control.addItems(syshandle, self.list)
        control.directory(syshandle)
Esempio n. 8
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)
Esempio n. 9
0
    def kids_songs(self):

        self.data = [
            {
                'title': u'Zouzounia TV kids songs - Παιδικά Τραγούδια από τα Ζουζούνια',
                'url': 'plugin://plugin.video.zouzounia.tv/',
                'icon': 'https://yt3.ggpht.com/-zhH35bOsqec/AAAAAAAAAAI/AAAAAAAAAAA/LxUO6o-ZHPc/s256-c-k-no-mo-rj-c0xffffff/photo.jpg'
            }
            ,
            {
                'title': u'Greek songs with lyrics No.1 - Ελληνικά παιδικά τραγούδια με στίχους No.1',
                'url': '{0}/channel/UCUmGu9Ncu5NeaEjwpLXW0PQ/'.format(YT_ADDON),
                'icon': 'https://yt3.ggpht.com/-MVbyrB7DJrY/AAAAAAAAAAI/AAAAAAAAAAA/WjLUCzyX3zI/s256-c-k-no-mo-rj-c0xffffff/photo.jpg'
            }
            ,
            {
                'title': u'Greek songs with lyrics No.2 - Ελληνικά παιδικά τραγούδια με στίχους No.2',
                'url': '{0}/channel/UCyENiZwRYzfXzbwP-Mxk9oA/'.format(YT_ADDON),
                'icon': 'https://yt3.ggpht.com/-Jdrq5I2r5Tc/AAAAAAAAAAI/AAAAAAAAAAA/z7IPqFS7jqA/s256-c-k-no-mo-rj-c0xffffff/photo.jpg'
            }
            ,
            {
                'title': u'Greek Karaoke - Ελληνικό Καραόκε',
                'url': '{0}/channel/UCp_0VMwvn5LeJMhtreBFIcA/playlist/PLP25S0MkvCeRlD0w1GXbitRL6sbyMscVi/'.format(YT_ADDON),
                'icon': 'https://i.ytimg.com/vi/Iz5P8xJel-U/mqdefault.jpg'
            }
            ,
            {
                'title': u'Karaoke for English Learning - Μαθαίνω Αγγλικά με καραόκε',
                'url': '{0}/channel/UCp_0VMwvn5LeJMhtreBFIcA/playlist/PLP25S0MkvCeSL-M5Q0qG3Eszj0I1O98bT/'.format(YT_ADDON),
                'icon': 'https://i.ytimg.com/vi/L2atYpQ7Zbg/mqdefault.jpg'
            }
            ,
            {
                'title': u'Learning Music for Kids - Μαθαίνω Μουσική, για παιδιά',
                'url': '{0}/channel/UCp_0VMwvn5LeJMhtreBFIcA/playlist/PLP25S0MkvCeRr5VH-HylSX89MHXQ_KyS0/'.format(YT_ADDON),
                'icon': 'https://i.ytimg.com/vi/w5tF5J_BNfI/mqdefault.jpg'
            }
        ]

        for item in self.data:
            if control.setting('lang_split') == '0':
                if 'Greek' in control.infoLabel('System.Language'):
                    li = control.item(label=item['title'].partition(' - ')[2])
                elif 'English' in control.infoLabel('System.Language'):
                    li = control.item(label=item['title'].partition(' - ')[0])
                else:
                    li = control.item(label=item['title'])
            elif control.setting('lang_split') == '1':
                li = control.item(label=item['title'].partition(' - ')[0])
            elif control.setting('lang_split') == '2':
                li = control.item(label=item['title'].partition(' - ')[2])
            else:
                li = control.item(label=item['title'])
            li.setArt({'icon': item['icon'], 'fanart': control.addonInfo('fanart')})
            self.list.append((item['url'], li, True))

        control.addItems(syshandle, self.list)
        control.directory(syshandle)
Esempio n. 10
0
    def run(self, url, source):

        path = control.join(control.dataPath, 'temp')

        try:

            path = path.decode('utf-8')

        except Exception:

            pass

        control.deleteDir(control.join(path, ''), force=True)

        control.makeFile(control.dataPath)

        control.makeFile(path)

        if source == 'subtitlesgr':

            subtitle = subtitlesgr.subtitlesgr().download(path, url)

        elif source == 'xsubstv':

            subtitle = xsubstv.xsubstv().download(path, url)

        elif source == 'subzxyz':

            subtitle = subzxyz.subzxyz().download(path, url)

        elif source == 'tvsubtitlesgr':

            subtitle = None

        else:

            subtitle = None

        if subtitle is not None:

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

        control.directory(syshandle)
    def listing(self, url=None, return_list=False, query=None):

        if url:
            self.data = self.items_list(url)
        else:
            self.data = self.replies_viewer(query)

        if self.data is None:

            return

        self.list = action_updater(self.data)

        self.menu = cm_updater(self.list, url)

        if return_list:

            return self.menu

        else:

            if active_mode()[1] == 'pictures':

                for i in self.menu:
                    li = control.item(label=i['title'])
                    li.setArt({
                        'icon': i['image'],
                        'poster': i['image'],
                        'thumb': i['image'],
                        'fanart': control.addonInfo('fanart')
                    })
                    li.setInfo('image', {
                        'title': i['title'],
                        'picturepath': i['url']
                    })
                    url = i['url']
                    self.directory.append((url, li, False))

                control.addItems(init.syshandle, self.directory)
                control.directory(init.syshandle)

            else:

                directory.add(self.menu, content='movies')
Esempio n. 12
0
def constructor(channels):

    menu = []

    for item in channels:

        li = control.item(label=item['title'])
        li.setInfo('video', {'title': item['title'], 'plot': item['plot']})
        li.setArt({
            'fanart': item['fanart'],
            'icon': item['icon'],
            'thumb': item['icon']
        })
        li.setProperty('IsPlayable', 'true')
        _url = '{0}?action=play&url={1}'.format(sysaddon, item['url'])
        _isFolder = False
        menu.append((_url, li, _isFolder))

    control.addItems(syshandle, menu)
    control.directory(syshandle)
Esempio n. 13
0
    def mag_index(self, url):

        number = int(client.request(url + '/pages'))

        pages = []

        for page in list(range(1, number + 1)):

            string = str(page)

            title = control.lang(30026) + ' ' + string

            if len(string) == 2:
                image = url + '/thumbs' + '/thumb-' + string + '.jpg'
                link = url + '/page-' + string + '.jpg'
            else:
                image = url + '/thumbs' + '/thumb-' + '0' + string + '.jpg'
                link = url + '/page-' + '0' + string + '.jpg'

            data = {'title': title, 'image': image, 'url': link}
            pages.append(data)

        for p in pages:

            li = control.item(label=p['title'],
                              iconImage=p['image'],
                              thumbnailImage=p['image'])
            li.setArt({
                'poster': p['image'],
                'thumb': p['image'],
                'fanart': control.addonInfo('fanart')
            })
            li.setInfo('image', {
                'title': p['title'],
                'picturepath': p['image']
            })
            path = p['url']

            control.addItem(int(self.argv[1]), path, li, False)

        control.directory(int(self.argv[1]))
Esempio n. 14
0
    def mags_index(self):

        magazines = magazine_list()[0]

        for mag in magazines:

            li = control.item(label=mag['title'], iconImage=mag['image'])
            li.setArt({
                'poster': mag['image'],
                'thumb': mag['image'],
                'fanart': control.addonInfo('fanart')
            })
            li.setInfo('image', {
                'title': mag['title'],
                'picturepath': mag['url']
            })
            url = mag['url']

            control.addItem(int(self.argv[1]), url, li, True)

        control.directory(int(self.argv[1]))
Esempio n. 15
0
    def miscellany(self):

        if control.setting('debug') == 'true':
            self.data = cache.get(self.misc_list,
                                  int(control.setting('cache_period')))
        else:
            self.data = cache.get(self.misc_list, 24)

        if self.data is None:
            log_debug('Misc channels list did not load successfully')
            return

        self.list = []

        for item in self.data:

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

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

        control.addItems(self.syshandle, self.list)
        control.directory(self.syshandle)
Esempio n. 16
0
    def run(self, query=None):

        if 'Greek' not in str(langs).split(','):

            control.directory(syshandle)
            control.infoDialog(control.lang(32002))

            return

        if not control.conditional_visibility(
                'System.HasAddon(vfs.libarchive)') and float(
                    control.addon('xbmc.addon').getAddonInfo('version')
                    [:4]) >= 18.0:

            control.execute('InstallAddon(vfs.libarchive)')

        threads = [
            workers.Thread(self.xsubstv),
            workers.Thread(self.subzxyz),
            workers.Thread(self.subtitlesgr)
        ]
        dup_removal = False

        if not query:

            if control.condVisibility('Player.HasVideo'):
                infolabel_prefix = 'VideoPlayer'
            else:
                infolabel_prefix = 'ListItem'

            title = control.infoLabel('{0}.Title'.format(infolabel_prefix))

            if re.search(r'[^\x00-\x7F]+', title) is not None:

                title = control.infoLabel(
                    '{0}.OriginalTitle'.format(infolabel_prefix))

            year = control.infoLabel('{0}.Year'.format(infolabel_prefix))

            tvshowtitle = control.infoLabel(
                '{0}.TVshowtitle'.format(infolabel_prefix))

            season = control.infoLabel('{0}.Season'.format(infolabel_prefix))

            if len(season) == 1:

                season = '0' + season

            episode = control.infoLabel('{0}.Episode'.format(infolabel_prefix))

            if len(episode) == 1:
                episode = '0' + episode

            if 's' in episode.lower():
                season, episode = '0', episode[-1:]

            if tvshowtitle != '':  # episode

                title_query = '{0} {1}'.format(tvshowtitle, title)
                season_episode_query = '{0} S{1} E{2}'.format(
                    tvshowtitle, season, episode)

                threads = [
                    workers.Thread(self.xsubstv, title_query),
                    workers.Thread(self.subzxyz, title_query),
                    workers.Thread(self.subtitlesgr, title_query),
                    workers.Thread(self.xsubstv, season_episode_query),
                    workers.Thread(self.subzxyz, season_episode_query),
                    workers.Thread(self.subtitlesgr, season_episode_query)
                ]

                dup_removal = True
                log.log('Dual query used for subtitles search: ' +
                        title_query + ' / ' + season_episode_query)

            elif year != '':  # movie

                query = '{0} ({1})'.format(title, year)

            else:  # file

                query, year = getCleanMovieTitle(title)

                if year != '':

                    query = '{0} ({1})'.format(query, year)

        if not dup_removal:

            log.log('Query used for subtitles search: ' + query)

        self.query = query

        [i.start() for i in threads]

        for c, i in list(enumerate(range(0, 40))):

            is_alive = [x.is_alive() for x in threads]

            if all(x is False for x in is_alive):
                log.log('Reached count : ' + str(c))
                break
            if control.aborted is True:
                log.log('Aborted, reached count : ' + str(c))
                break

            control.sleep(750)

        if len(self.list) == 0:

            control.directory(syshandle)

            return

        f = []

        # noinspection PyUnresolvedReferences
        f += [i for i in self.list if i['source'] == 'xsubstv']
        f += [i for i in self.list if i['source'] == 'subzxyz']
        f += [i for i in self.list if i['source'] == 'subtitlesgr']

        self.list = f

        if dup_removal:

            self.list = [
                dict(t) for t in {tuple(d.items())
                                  for d in self.list}
            ]

        for i in self.list:

            try:

                if i['source'] == 'subzxyz':
                    i['name'] = '[subzxyz] {0}'.format(i['name'])
                elif i['source'] == 'xsubstv':
                    i['name'] = '[xsubstv] {0}'.format(i['name'])

            except Exception:

                pass

        for i in self.list:

            u = {'action': 'download', 'url': i['url'], 'source': i['source']}
            u = '{0}?{1}'.format(sysaddon, urlencode(u))

            item = control.item(label='Greek',
                                label2=i['name'],
                                iconImage=str(i['rating']),
                                thumbnailImage='el')
            item.setProperty('sync', 'false')
            item.setProperty('hearing_imp', 'false')

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

        control.directory(syshandle)
Esempio n. 17
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)
Esempio n. 18
0
def resolve(url,
            meta=None,
            icon=None,
            dash=False,
            manifest_type=None,
            inputstream_type='adaptive',
            headers=None,
            mimetype=None,
            resolved_mode=True,
            live=False):
    """
    Prepares a resolved url into a listitem for playback

    :param url: Requires a string or unicode, append required urlencoded headers with pipe |
    :param meta: a dictionary with listitem keys: values
    :param icon: String
    :param dash: Boolean
    :param manifest_type: String
    :param inputstream_type: String 99.9% of the time it is adaptive
    :param headers: dictionary or urlencoded string
    :param mimetype: String
    :return: None
    """

    from tulip.init import syshandle

    # Fail gracefully instead of making Kodi complain.
    if url is None:
        from kodi_six.xbmc import log
        log('URL was not provided, failure to resolve stream')
        return

    if not headers and '|' in url:
        url, sep, headers = url.rpartition('|')
    elif headers:
        if isinstance(headers, basestring):
            if headers.startswith('|'):
                headers = headers[1:]
        elif isinstance(headers, dict):
            headers = urlencode(headers)

    if not dash and headers:
        url = '|'.join([url, headers])

    item = control.item(path=url)

    if icon is not None:
        item.setArt({'icon': icon, 'thumb': icon})

    if meta is not None:
        item.setInfo(type='Video', infoLabels=meta)

    krypton_plus = int(
        control.infoLabel('System.AddonVersion(xbmc.python)').replace(
            '.', '')) >= 2250

    try:
        isa_enabled = control.addon_details('inputstream.adaptive').get(
            'enabled')
    except KeyError:
        isa_enabled = False

    if dash and krypton_plus and isa_enabled:
        if not manifest_type:
            manifest_type = 'mpd'
        if not mimetype:
            mimetype = 'application/xml+dash'
        item.setContentLookup(False)
        item.setMimeType('{0}'.format(mimetype))
        item.setProperty('inputstreamaddon',
                         'inputstream.{}'.format(inputstream_type))
        item.setProperty(
            'inputstream.{0}.manifest_type'.format(inputstream_type),
            manifest_type)
        if headers:
            item.setProperty(
                "inputstream.{0}.stream_headers".format(inputstream_type),
                headers)
    elif mimetype:
        item.setContentLookup(False)
        item.setMimeType('{0}'.format(mimetype))

    if dash and live:
        item.setProperty(
            'inputstream.{}.manifest_update_parameter'.format(
                inputstream_type), '&start_seq=$START_NUMBER$')

    if resolved_mode:
        control.resolve(syshandle, True, item)
    else:
        control.player().play(url, item)
Esempio n. 19
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)
Esempio n. 20
0
    def run(self, url, source):

        log_debug('Source selected: {0}'.format(source))

        path = control.join(control.dataPath, 'temp')

        try:

            path = path.decode('utf-8')

        except Exception:

            pass

        control.deleteDir(control.join(path, ''), force=True)
        control.makeFile(control.dataPath)
        control.makeFile(path)

        if control.setting('keep_subs') == 'true' or control.setting(
                'keep_zips') == 'true':

            if not control.get_info_label('ListItem.Path').startswith(
                    'plugin://') and control.setting('destination') == '0':
                output_path = control.get_info_label('Container.FolderPath')
            elif control.setting('output_folder').startswith('special://'):
                output_path = control.transPath(
                    control.setting('output_folder'))
            else:
                output_path = control.setting('output_folder')

            if not exists(output_path):
                control.makeFile(output_path)

        if source == 'subtitlesgr':

            subtitle = subtitlesgr.Subtitlesgr().download(path, url)

        elif source == 'xsubstv':

            subtitle = xsubstv.Xsubstv().download(path, url)

        elif source == 'podnapisi':

            subtitle = podnapisi.Podnapisi().download(path, url)

        elif source == 'vipsubs':

            subtitle = vipsubs.Vipsubs().download(path, url)

        else:

            subtitle = None

        if subtitle is not None:

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

                # noinspection PyUnboundLocalVariable
                try:
                    if control.setting('destination') in ['0', '2']:
                        if control.infoLabel('{0}.Title'.format(
                                infolabel_prefix)).startswith('plugin://'):
                            copy(
                                subtitle,
                                control.join(output_path,
                                             os_split(subtitle)[1]))
                            log_debug(
                                'Item currently selected is not a local file, cannot save subtitle next to it'
                            )
                        else:
                            output_filename = control.join(
                                output_path, ''.join([
                                    splitext(
                                        control.infoLabel('ListItem.FileName'))
                                    [0],
                                    splitext(os_split(subtitle)[1])[1]
                                ]))
                            if exists(output_filename):
                                yesno = control.yesnoDialog(
                                    control.lang(30015))
                                if yesno:
                                    copy(subtitle, output_filename)
                            else:
                                copy(subtitle, output_filename)
                            if control.setting('destination') == '2':
                                if control.setting('output_folder').startswith(
                                        'special://'):
                                    output_path = control.transPath(
                                        control.setting('output_folder'))
                                else:
                                    output_path = control.setting(
                                        'output_folder')
                                copy(
                                    subtitle,
                                    control.join(output_path,
                                                 os_split(subtitle)[1]))
                    else:
                        copy(subtitle,
                             control.join(output_path,
                                          os_split(subtitle)[1]))
                    control.infoDialog(control.lang(30008))
                except Exception:
                    control.infoDialog(control.lang(30013))

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

        control.directory(self.syshandle)
Esempio n. 21
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)
Esempio n. 22
0
    def run(self, query=None):

        if 'Greek' not in str(self.langs).split(','):

            control.directory(self.syshandle)
            control.infoDialog(control.lang(30002))

            return

        dup_removal = False

        if not query:

            title = match_title = control.infoLabel(
                '{0}.Title'.format(infolabel_prefix))

            with concurrent_futures.ThreadPoolExecutor(5) as executor:

                if re.search(r'[^\x00-\x7F]+', title) is not None:

                    title = control.infoLabel(
                        '{0}.OriginalTitle'.format(infolabel_prefix))

                title = unicodedata.normalize('NFKD',
                                              title).encode('ascii', 'ignore')
                title = py3_dec(title)
                year = control.infoLabel('{0}.Year'.format(infolabel_prefix))
                tvshowtitle = control.infoLabel(
                    '{0}.TVshowtitle'.format(infolabel_prefix))
                season = control.infoLabel(
                    '{0}.Season'.format(infolabel_prefix))

                if len(season) == 1:

                    season = '0' + season

                episode = control.infoLabel(
                    '{0}.Episode'.format(infolabel_prefix))

                if len(episode) == 1:
                    episode = '0' + episode

                if 's' in episode.lower():
                    season, episode = '0', episode[-1:]

                if tvshowtitle != '':  # episode

                    title_query = '{0} {1}'.format(tvshowtitle, title)
                    season_episode_query = '{0} S{1} E{2}'.format(
                        tvshowtitle, season, episode)
                    season_episode_query_nospace = '{0} S{1}E{2}'.format(
                        tvshowtitle, season, episode)

                    threads = [
                        executor.submit(self.subtitlesgr,
                                        season_episode_query_nospace),
                        executor.submit(self.xsubstv, season_episode_query),
                        executor.submit(self.podnapisi, season_episode_query),
                        executor.submit(self.vipsubs, season_episode_query)
                    ]

                    dup_removal = True

                    log_debug('Dual query used for subtitles search: ' +
                              title_query + ' / ' + season_episode_query)

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

                        threads.extend([
                            executor.submit(self.subtitlesgr, title_query),
                            executor.submit(self.vipsubs, title_query),
                            executor.submit(self.podnapisi, title_query),
                            executor.submit(self.subtitlesgr,
                                            season_episode_query)
                        ])

                elif year != '':  # movie

                    query = '{0} ({1})'.format(title, year)

                    threads = [
                        executor.submit(self.subtitlesgr, query),
                        executor.submit(self.xsubstv, query),
                        executor.submit(self.vipsubs, query),
                        executor.submit(self.podnapisi, query)
                    ]

                else:  # file

                    query, year = control.cleanmovietitle(title)

                    if year != '':

                        query = '{0} ({1})'.format(query, year)

                    threads = [
                        executor.submit(self.subtitlesgr, query),
                        executor.submit(self.xsubstv, query),
                        executor.submit(self.vipsubs, query),
                        executor.submit(self.podnapisi, query)
                    ]

                for future in concurrent_futures.as_completed(threads):

                    item = future.result()

                    if not item:
                        continue

                    self.list.extend(item)

                if not dup_removal:

                    log_debug('Query used for subtitles search: ' + query)

                self.query = query

                self.query = py3_dec(self.query)

        else:  # Manual query

            with concurrent_futures.ThreadPoolExecutor(5) as executor:

                query = match_title = py3_dec(query)

                threads = [
                    executor.submit(self.subtitlesgr, query),
                    executor.submit(self.xsubstv, query),
                    executor.submit(self.vipsubs, query),
                    executor.submit(self.podnapisi, query)
                ]

                for future in concurrent_futures.as_completed(threads):

                    item = future.result()

                    if not item:
                        continue

                    self.list.extend(item)

        if len(self.list) == 0:

            control.directory(self.syshandle)

            return

        f = []

        # noinspection PyUnresolvedReferences
        f += [i for i in self.list if i['source'] == 'xsubstv']
        f += [i for i in self.list if i['source'] == 'subtitlesgr']
        f += [i for i in self.list if i['source'] == 'podnapisi']
        f += [i for i in self.list if i['source'] == 'vipsubs']

        self.list = f

        if dup_removal:

            self.list = [
                dict(t) for t in {tuple(d.items())
                                  for d in self.list}
            ]

        for i in self.list:

            try:

                if i['source'] == 'xsubstv':
                    i['name'] = u'[xsubstv] {0}'.format(i['name'])
                elif i['source'] == 'podnapisi':
                    i['name'] = u'[podnapisi] {0}'.format(i['name'])
                elif i['source'] == 'vipsubs':
                    i['name'] = u'[vipsubs] {0}'.format(i['name'])

            except Exception:

                pass

        if control.setting('sorting') == '1':
            key = 'source'
        elif control.setting('sorting') == '2':
            key = 'downloads'
        elif control.setting('sorting') == '3':
            key = 'rating'
        else:
            key = 'title'

        self.list = sorted(self.list,
                           key=lambda k: k[key].lower(),
                           reverse=control.setting('sorting')
                           in ['1', '2', '3'])

        for i in self.list:

            u = {'action': 'download', 'url': i['url'], 'source': i['source']}
            u = '{0}?{1}'.format(self.sysaddon, urlencode(u))
            item = control.item(label='Greek', label2=i['name'])
            item.setArt({'icon': str(i['rating'])[:1], 'thumb': 'el'})
            if ratio(
                    splitext(i['title'].lower())[0],
                    splitext(match_title)[0]) >= int(
                        control.setting('sync_probability')):
                item.setProperty('sync', 'true')
            else:
                item.setProperty('sync', 'false')
            item.setProperty('hearing_imp', 'false')

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

        control.directory(self.syshandle)
    def external_links(self):

        self.data = [{
            'title': control.lang(30030),
            'icon': control.addonInfo('icon'),
            'url': 'https://farosonair.com/'
        }, {
            'title': control.lang(30031),
            'icon': control.addonInfo('icon'),
            'url': 'https://farosonair.com/category/farosnews/'
        }, {
            'title': control.lang(30028),
            'icon': 'facebook.png',
            'url': 'https://www.facebook.com/farosonair'
        }, {
            'title': control.lang(30029),
            'icon': 'instagram.png',
            'url': 'https://www.instagram.com/farosonair16/'
        }, {
            'title': control.lang(30026),
            'icon': 'twitter.png',
            'url': 'https://twitter.com/faros_on_air'
        }, {
            'title':
            control.lang(30027),
            'icon':
            'youtube_sub.png',
            'url':
            'https://www.youtube.com/channel/UCfU04d4DbqpyotwfgxRS6EQ?sub_confirmation=1'
        }]

        for i in self.data:
            i.update({'action': 'open_website'})

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

            links = [i['url'] for i in self.data]
            titles = [i['title'] for i in self.data]

            choice = control.selectDialog(titles)

            if choice >= 0:
                if control.condVisibility('System.Platform.Android'):
                    from resources.lib.helpers import android_activity
                    android_activity(links[choice])
                else:
                    import webbrowser
                    webbrowser.open(links[choice])

            else:

                pass

        else:

            for i in self.data:

                if i['icon'] != control.addonInfo('icon'):
                    image = control.join(control.addonPath, 'resources',
                                         'media', i['icon'])
                else:
                    image = control.addonInfo('icon')

                li = control.item(label=i['title'])
                li.setArt({
                    'poster': image,
                    'thumb': image,
                    'fanart': control.addonInfo('fanart')
                })
                li.setInfo('video', {'title': i['title']})
                url = '{0}?action={1}&url={2}'.format(sysaddon, i['action'],
                                                      i['url'])
                self.list.append((url, li, False))

            control.addItems(syshandle, self.list)
            control.directory(syshandle)
Esempio n. 24
0
    def cartoon_collection(self):

        self.data = [{
            'title':
            u'Classical Films - Κλασσικά Κινηματογραφημένα',
            'url':
            '{0}/channel/UCsKQX1G7XQO2a5nD9nrse-Q/playlist/PLF0A5359586D57FE8/'
            .format(YT_ADDON),
            'icon':
            'https://i.ytimg.com/vi/X9RxumkELfE/mqdefault.jpg'
        }, {
            'title':
            u'Mythology - Μυθολογία',
            'url':
            '{0}/channel/UCsKQX1G7XQO2a5nD9nrse-Q/playlist/PL3E1C926284F12F32/'
            .format(YT_ADDON),
            'icon':
            'https://i.ytimg.com/vi/kpd-Z_VK6Jc/mqdefault.jpg'
        }, {
            'title':
            u'Aesop\'s Fables - Αισώπου Μύθοι',
            'url':
            '{0}/channel/UCsKQX1G7XQO2a5nD9nrse-Q/playlist/PL4FF9F773D3596E60/'
            .format(YT_ADDON),
            'icon':
            'https://i.ytimg.com/vi/Gkr-pV_gY48/mqdefault.jpg'
        }, {
            'title':
            u'Greek Fairy Tales - Ελληνικά Παραμύθια',
            'url':
            '{0}/channel/UC9VmWb5Wd5sc4E4k1CevEug/'.format(YT_ADDON),
            'icon':
            'https://yt3.ggpht.com/-n8KoGQ6U_zc/AAAAAAAAAAI/AAAAAAAAAAA/SoUWvy5-Tb8/s256-c-k-no-mo-rj-c0xffffff/photo.jpg'
        }, {
            'title':
            u'Fairy Tales & Songs - Παραμύθια και Τραγούδια',
            'url':
            '{0}/channel/UCClAFTnbGditvz9_7_7eumw/playlists/'.format(YT_ADDON),
            'icon':
            'https://yt3.ggpht.com/-mBPhzUcDIHM/AAAAAAAAAAI/AAAAAAAAAAA/pNQi44zsLq8/s256-c-k-no-mo-rj-c0xffffff/photo.jpg'
        }, {
            'title':
            u'Collection Miscellaneous - Συλλογή Διάφορα',
            'url':
            '{0}/channel/UCsKQX1G7XQO2a5nD9nrse-Q/playlist/PL4075DA390F6E82B1/'
            .format(YT_ADDON),
            'icon':
            'https://i.ytimg.com/vi/MPtZ_VHNg34/mqdefault.jpg'
        }]

        for i in self.data:
            i['url'] = '?'.join(
                [i['url'], 'addon_id={}'.format(control.addonInfo('id'))])

        additional = {
            'title':
            u'Various full length movies - Διάφορες ταινίες πλήρους μήκους',
            'url': '{0}?action={1}'.format(sysaddon, 'cartoon_various'),
            'icon': iconname('kids')
        }

        if control.setting('show_alt_vod') == 'true':
            self.data.insert(0, additional)

        for item in self.data:
            if control.setting('lang_split') == '0':
                if 'Greek' in control.infoLabel('System.Language'):
                    li = control.item(label=item['title'].partition(' - ')[2])
                elif 'English' in control.infoLabel('System.Language'):
                    li = control.item(label=item['title'].partition(' - ')[0])
                else:
                    li = control.item(label=item['title'])
            elif control.setting('lang_split') == '1':
                li = control.item(label=item['title'].partition(' - ')[0])
            elif control.setting('lang_split') == '2':
                li = control.item(label=item['title'].partition(' - ')[2])
            else:
                li = control.item(label=item['title'])
            li.setArt({
                'icon': item['icon'],
                'fanart': control.addonInfo('fanart')
            })
            self.list.append((item['url'], li, True))

        control.addItems(syshandle, self.list)
        control.directory(syshandle)
Esempio n. 25
0
    def educational(self):

        self.data = [{
            'title':
            u'Learn about animals - Μάθε για τα ζώα',
            'url':
            '{0}/channel/UCsKQX1G7XQO2a5nD9nrse-Q/playlist/PL7Adbo89X3LRboPyGr30sIRMnc20C77ui/'
            .format(YT_ADDON),
            'icon':
            'https://i.ytimg.com/vi/_fDdVYJA9Vk/mqdefault.jpg'
        }, {
            'title':
            u'Secondary school education - Εκπαίδευση Δημοτικού Σχολείου',
            'url':
            '{0}/channel/UCsKQX1G7XQO2a5nD9nrse-Q/playlist/PL7Adbo89X3LQvxn7RyUySvQy6C6hTUTXf/'
            .format(YT_ADDON),
            'icon':
            'https://i.ytimg.com/vi/isxjo7M2h74/mqdefault.jpg'
        }, {
            'title':
            u'Sexual Education for children - Σεξουαλική Αγωγή για παιδιά',
            'url':
            '{0}/channel/UCsKQX1G7XQO2a5nD9nrse-Q/playlist/PL7Adbo89X3LRy-LRQEeRdT_kf5iFdofsu/'
            .format(YT_ADDON),
            'icon':
            'https://i.ytimg.com/vi/l9gN1F6S3bc/mqdefault.jpg'
        }, {
            'title':
            u'World\'s Seven Ancient Miracles - Τα Επτά Θαύματα του Αρχαίου Κόσμου',
            'url':
            '{0}/channel/UCp_0VMwvn5LeJMhtreBFIcA/playlist/PLP25S0MkvCeThKG7GK1k2DRgB5im-vPHc/'
            .format(YT_ADDON),
            'icon':
            'https://i.ytimg.com/vi/5nEDQ_jYJIo/mqdefault.jpg'
        }, {
            'title':
            u'The land of Knowledge - Η Χώρα των Γνώσεων',
            'url':
            '{0}/channel/UCp_0VMwvn5LeJMhtreBFIcA/playlist/PLP25S0MkvCeS-ZVlk0vgNdx5igsFvYN8s/'
            .format(YT_ADDON),
            'icon':
            'https://i.ytimg.com/vi/K-Ba9l2uDDk/mqdefault.jpg'
        }, {
            'title':
            u'Ancient Egypt - Αρχαία Αίγυπτος',
            'url':
            '{0}/channel/UCp_0VMwvn5LeJMhtreBFIcA/playlist/PLP25S0MkvCeTrRcdIHjtziNEkqPqalUOa/'
            .format(YT_ADDON),
            'icon':
            'https://i.ytimg.com/vi/pV8EMy8gaXI/mqdefault.jpg'
        }, {
            'title':
            u'Explorers & Seafarers - Εξερευνητές και Θαλασσοπόροι',
            'url':
            '{0}/channel/UCp_0VMwvn5LeJMhtreBFIcA/playlist/PLP25S0MkvCeQRBb7ayyynWgYEUbkQKPpJ/'
            .format(YT_ADDON),
            'icon':
            'https://i.ytimg.com/vi/SPdnnVNZgwc/mqdefault.jpg'
        }, {
            'title':
            u'Mini Encyclopaedia - Μικρή Εγκυκλοπαίδεια',
            'url':
            '{0}/channel/UCp_0VMwvn5LeJMhtreBFIcA/playlist/PLP25S0MkvCeTLMi1bFqLC_cn5ZAtqSvlV/'
            .format(YT_ADDON),
            'icon':
            'https://i.ytimg.com/vi/o31_SNQFYhc/mqdefault.jpg'
        }, {
            'title':
            u'Miscellaneous Documentaties - Διάφορα Ντοκυμαντέρ',
            'url':
            '{0}/channel/UCp_0VMwvn5LeJMhtreBFIcA/playlist/PLP25S0MkvCeRY94Yga82ZYsPJ9Xbe3OiZ/'
            .format(YT_ADDON),
            'icon':
            'https://i.ytimg.com/vi/Vf_o_Q5ZQRg/mqdefault.jpg'
        }, {
            'title':
            u'Learn Ancient Greek - Μάθετε Αρχαία Ελληνικά',
            'url':
            '{0}/channel/UC5quWsvOBNUaR-Duv3K-JFA/playlist/PLxqCshQO3A1HnlHwxda3wX_kzY-C0gpZq/'
            .format(YT_ADDON),
            'icon':
            'https://i.ytimg.com/vi/st01jb_Xb7g/mqdefault.jpg'
        }, {
            'title':
            u'Drawings - Ζωγραφιές',
            'url':
            '{0}/channel/UC5quWsvOBNUaR-Duv3K-JFA/playlist/PLxqCshQO3A1FmjzGXbfIjTSXcysLfPfKM/'
            .format(YT_ADDON),
            'icon':
            'https://i.ytimg.com/vi/GdiLSXePno8/mqdefault.jpg'
        }]

        for item in self.data:
            if control.setting('lang_split') == '0':
                if 'Greek' in control.infoLabel('System.Language'):
                    li = control.item(label=item['title'].partition(' - ')[2])
                elif 'English' in control.infoLabel('System.Language'):
                    li = control.item(label=item['title'].partition(' - ')[0])
                else:
                    li = control.item(label=item['title'])
            elif control.setting('lang_split') == '1':
                li = control.item(label=item['title'].partition(' - ')[0])
            elif control.setting('lang_split') == '2':
                li = control.item(label=item['title'].partition(' - ')[2])
            else:
                li = control.item(label=item['title'])
            li.setArt({
                'icon': item['icon'],
                'fanart': control.addonInfo('fanart')
            })
            self.list.append((item['url'], li, True))

        control.addItems(syshandle, self.list)
        control.directory(syshandle)
Esempio n. 26
0
    def sports_news(self):

        self.data = [{
            'title':
            'EPT Sports',
            '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%2fathlitika%2f',
            'fanart':
            control.addonmedia(addonid=art_id,
                               theme='networks',
                               icon='ert_fanart.jpg',
                               media_subfolder=False)
        }, {
            'title':
            'Skai Sports',
            'icon':
            control.addonmedia(addonid=art_id,
                               theme='networks',
                               icon='skai_icon.png',
                               media_subfolder=False),
            'url':
            'plugin://plugin.video.skai.gr/?action=sports',
            'fanart':
            control.addonmedia(addonid=art_id,
                               theme='networks',
                               icon='skai_fanart.jpg',
                               media_subfolder=False)
        }, {
            'title':
            'Euronews Sports',
            '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%228%22%7d',
            '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)
        }]

        for item in self.data:
            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)
Esempio n. 27
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)
Esempio n. 28
0
    def run(self, url, source):

        log_debug('Source selected: {0}'.format(source))

        path = control.join(control.dataPath, 'temp')

        try:

            path = path.decode('utf-8')

        except Exception:

            pass

        control.deleteDir(control.join(path, ''), force=True)

        control.makeFile(control.dataPath)

        control.makeFile(path)

        if control.setting('keep_subs') == 'true' or control.setting(
                'keep_zips') == 'true':

            if control.setting('output_folder').startswith('special://'):
                output_path = control.transPath(
                    control.setting('output_folder'))
            else:
                output_path = control.setting('output_folder')

            control.makeFile(output_path)

        if source == 'subtitlesgr':

            subtitle = subtitlesgr.Subtitlesgr().download(path, url)

        elif source == 'xsubstv':

            subtitle = xsubstv.Xsubstv().download(path, url)

        elif source == 'podnapisi':

            subtitle = podnapisi.Podnapisi().download(path, url)

        elif source == 'vipsubs':

            subtitle = vipsubs.Vipsubs().download(path, url)

        else:

            subtitle = None

        if subtitle is not None:

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

                # noinspection PyUnboundLocalVariable
                copy(subtitle, control.join(output_path,
                                            os_split(subtitle)[1]))
                control.infoDialog(control.lang(30008))

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

        control.directory(self.syshandle)
Esempio n. 29
0
    def run(self, query=None):

        if not 'Greek' in str(langs).split(','):
            control.directory(syshandle)
            control.infoDialog(control.lang(32002).encode('utf-8'))
            return

        if query is None:

            title = control.infoLabel('VideoPlayer.Title')

            if re.search(r'[^\x00-\x7F]+', title) is not None:
                title = control.infoLabel('VideoPlayer.OriginalTitle')

            year = control.infoLabel('VideoPlayer.Year')

            tvshowtitle = control.infoLabel('VideoPlayer.TVshowtitle')

            season = control.infoLabel('VideoPlayer.Season')

            episode = control.infoLabel('VideoPlayer.Episode')

            if 's' in episode.lower():
                season, episode = '0', episode[-1:]

            if not tvshowtitle == '':  # episode
                query = '%s S%02dE%02d' % (tvshowtitle, int(season),
                                           int(episode))
            elif not year == '':  # movie
                query = '%s (%s)' % (title, year)
            else:  # file
                query, year = getCleanMovieTitle(title)
                if not year == '': query = '%s (%s)' % (query, year)

        self.query = query

        threads = []

        threads.append(workers.Thread(self.xsubstv))
        threads.append(workers.Thread(self.subzxyz))
        threads.append(workers.Thread(self.subtitlesgr))

        [i.start() for i in threads]

        for i in range(0, 10 * 2):
            try:
                is_alive = [x.is_alive() for x in threads]
                if all(x == False for x in is_alive):
                    break
                if control.aborted is True:
                    break
                control.sleep(500)
            except:
                pass

        if len(self.list) == 0:
            control.directory(syshandle)
            return

        f = []

        f += [i for i in self.list if i['source'] == 'xsubstv']
        f += [i for i in self.list if i['source'] == 'subzxyz']
        f += [i for i in self.list if i['source'] == 'subtitlesgr']

        self.list = f

        for i in self.list:

            try:
                if i['source'] == 'subzxyz':
                    i['name'] = '[subzxyz] %s' % i['name']
                elif i['source'] == 'xsubstv':
                    i['name'] = '[xsubstv] %s' % i['name']
            except:
                pass

        for i in self.list:

            try:
                name, url, source, rating = i['name'], i['url'], i[
                    'source'], i['rating']

                u = {'action': 'download', 'url': url, 'source': source}
                u = '%s?%s' % (sysaddon, urllib.urlencode(u))

                item = control.item(label='Greek',
                                    label2=name,
                                    iconImage=str(rating),
                                    thumbnailImage='el')
                item.setProperty('sync', 'false')
                item.setProperty('hearing_imp', 'false')

                control.addItem(handle=syshandle,
                                url=u,
                                listitem=item,
                                isFolder=False)
            except:
                pass

        control.directory(syshandle)
Esempio n. 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)