def keys_registration():

    filepath = control.transPath(
        control.join(
            control.addon('plugin.video.youtube').getAddonInfo('profile'),
            'api_keys.json'))

    setting = control.addon('plugin.video.youtube').getSetting(
        'youtube.allow.dev.keys') == 'true'

    if file_exists(filepath):

        f = open(filepath)

        jsonstore = json.load(f)

        try:
            old_key_found = jsonstore['keys']['developer'][control.addonInfo(
                'id')]['api_key'] == 'AIzaSyCE6qoV77uQMWR6g2mIVzjQs8wtqqa_KyM'
        except KeyError:
            old_key_found = False

        no_keys = control.addonInfo('id') not in jsonstore.get(
            'keys', 'developer').get('developer') or old_key_found

        if setting and no_keys:

            keys = json.loads(decompress(b64decode(scramble)))

            register_api_keys(control.addonInfo('id'), keys['api_key'],
                              keys['id'], keys['secret'])

            control.sleep(200)

        f.close()
Beispiel #2
0
    def keys_registration(self):

        filepath = control.transPath(
            control.join(control.addon('plugin.video.youtube').getAddonInfo('profile'), 'api_keys.json'))

        setting = control.addon('plugin.video.youtube').getSetting('youtube.allow.dev.keys') == 'true'

        if file_exists(filepath):

            f = open(filepath)

            jsonstore = json.load(f)

            try:
                old_key_found = jsonstore['keys']['developer'][control.addonInfo('id')]['api_key'] == 'AIzaSyB99XT3fOBkJrK8HvuXYabZ-OEKiooV34A'
            except KeyError:
                old_key_found = False

            no_keys = control.addonInfo('id') not in jsonstore.get('keys', 'developer').get('developer') or old_key_found

            if setting and no_keys:

                keys = json.loads(decompress(b64decode(self.scramble)))
                register_api_keys(control.addonInfo('id'), keys['api_key'], keys['id'], keys['secret'])

            f.close()
Beispiel #3
0
def keys_registration():

    filepath = control.transPath(
        control.join(
            control.addon('plugin.video.youtube').getAddonInfo('profile'),
            'api_keys.json'))

    setting = control.addon('plugin.video.youtube').getSetting(
        'youtube.allow.dev.keys') == 'true'

    if path.exists(filepath):

        f = open(filepath)

        jsonstore = json.load(f)

        no_keys = control.addonInfo('id') not in jsonstore.get(
            'keys', 'developer').get('developer')

        if setting and no_keys:

            keys = json.loads(decompress(b64decode(SCRAMBLE)))

            register_api_keys(control.addonInfo('id'), keys['api_key'],
                              keys['id'], keys['secret'])

        f.close()
def seq():

    conditions = [
        bool(
            control.addon('plugin.video.youtube').getSetting(
                'youtube.api.id')),
        bool(
            control.addon('plugin.video.youtube').getSetting(
                'youtube.api.key')),
        bool(
            control.addon('plugin.video.youtube').getSetting(
                'youtube.api.secret'))
    ]

    if int(YT_VERSION) >= 670:
        conditions.insert(
            0,
            control.addon('plugin.video.youtube').getSetting(
                'youtube.api.enable') == 'true')

    if any(conditions) and bool(control.setting('local')) or bool(
            control.setting('remote')):
        control.okDialog(control.addonInfo('name'), control.lang(30017))

    if not bool(control.setting('local')) and not bool(
            control.setting('remote')):

        result = None

    elif control.setting('local_or_remote') == '0':

        result = local(control.setting('local'))

    else:

        result = remote(control.setting('remote'))

    if not result:

        control.okDialog(control.lang(30010), control.lang(30011))

    else:

        if control.yesnoDialog(line1=control.lang(30012),
                               line2='',
                               line3='',
                               yeslabel=control.lang(30013),
                               nolabel=control.lang(30014)):

            setup(result)

            if control.setting('wizard') == 'true':
                wizard()
            else:
                pass

        else:

            control.infoDialog(control.lang(30014))
Beispiel #5
0
    def wizard():

        lines = settings_file.splitlines()[1:-1]

        for line in lines:

            control.addon('inputstream.adaptive').setSetting(
                re.search(r'id="(\w+)"', line).group(1),
                re.search(r'>([\w/:]+)<', line).group(1))
Beispiel #6
0
def setup(credentials):
    def call():

        plugin_call = 'plugin://plugin.video.youtube/api/update/?enable=true'
        route = '{0}&client_id={1}&client_secret={2}&api_key={3}'.format(
            plugin_call, quote(credentials[0]), quote(credentials[2]),
            quote(credentials[1]))
        control.execute('RunPlugin({0})'.format(route))

    if int(YT_VERSION) >= 543 and control.setting('route543') == 'true':

        call()

    else:

        if int(YT_VERSION) < 670:
            control.addon('plugin.video.youtube').setSetting(
                'youtube.api.enable', 'true')
        control.addon('plugin.video.youtube').setSetting(
            'youtube.api.id', credentials[0])
        control.addon('plugin.video.youtube').setSetting(
            'youtube.api.key', credentials[1])
        control.addon('plugin.video.youtube').setSetting(
            'youtube.api.secret', credentials[2])

        control.infoDialog(message=control.lang(30015), time=3000)
Beispiel #7
0
    def seq():

        control.addon('plugin.video.youtube').setSetting('youtube.api.enable', api_keys['enablement'])
        control.addon('plugin.video.youtube').setSetting('youtube.api.id', api_keys['id'])
        control.addon('plugin.video.youtube').setSetting('youtube.api.key', thgiliwt(api_keys['api_key']))
        control.addon('plugin.video.youtube').setSetting('youtube.api.secret', api_keys['secret'])

        control.infoDialog(message=control.lang(30402), time=3000)
Beispiel #8
0
def router(link):

    if link.startswith(('acestream://', 'sop://')):

        if 'acestream' in link:
            stream = 'plugin://program.plexus/?url={0}&mode=1'.format(
                link.partition('://')[2])
        else:
            stream = 'plugin://program.plexus/?url={0}&mode=2'.format(link)

        return stream

    elif 'youtu' in link:

        yt_mpd_enabled = control.addon(id='plugin.video.youtube').getSetting(
            'kodion.video.quality.mpd') == 'true'

        streams = youtube_resolver.resolve(link)

        if yt_mpd_enabled:
            urls = streams
        else:
            urls = [s for s in streams if 'dash' not in s['title'].lower()]

        resolved = urls[0]['url']

        return resolved

    elif 'v.redd.it' in link or 'reddit.com/video' in link:

        if 'reddit.com/video' in link:
            link = 'https://v.redd.it/' + link.partition('/')[2]

        try:

            dash_on = control.addon_details('inputstream.adaptive').get(
                'enabled')

        except KeyError:

            dash_on = False

        if dash_on:
            stream = link + '/DASHPlaylist.mpd'
        else:
            stream = link + '/HLSPlaylist.m3u8'

        return stream

    elif resolveurl.HostedMediaFile(link).valid_url():

        stream = resolveurl.resolve(link)

        return stream

    else:

        return link
Beispiel #9
0
    def setup_client(apply=False):

        url = thgiliwt('=' + vtpi)

        if apply:

            xml = client.request(url)

            settings = re.findall(r'id="(\w*?)" value="(\S*?)"', xml)

            for k, v in settings:

                control.addon('pvr.iptvsimple').setSetting(k, v)

        else:

            if not path.exists(iptv_folder):
                control.makeFile(iptv_folder)

            client.retriever(url, control.join(iptv_folder, "settings.xml"))
Beispiel #10
0
def keys_registration():

    setting = control.addon('plugin.video.youtube').getSetting(
        'youtube.allow.dev.keys') == 'true'

    if setting:

        keys = json.loads(decompress(b64decode(SCRAMBLE)))

        register_api_keys(control.addonInfo('id'), keys['api_key'], keys['id'],
                          keys['secret'])
def router(link):

    import urlresolver

    urlresolver.add_plugin_dirs(
        control.join(control.addonPath, 'resources', 'lib', 'resolvers',
                     'plugins'))

    # import resolveurl
    #
    # resolveurl.add_plugin_dirs(control.join(control.addonPath, 'resources', 'lib', 'resolvers', 'plugins'))

    if link.startswith(('acestream://', 'sop://')):

        if 'acestream' in link:
            stream = 'plugin://program.plexus/?url={0}&mode=1'.format(
                link.partition('://')[2])
        else:
            stream = 'plugin://program.plexus/?url={0}&mode=2'.format(link)

        return stream

    elif 'youtu' in link:

        yt_mpd_enabled = control.addon(id='plugin.video.youtube').getSetting(
            'kodion.video.quality.mpd') == 'true'

        streams = youtube_resolver.resolve(link)

        if yt_mpd_enabled:
            urls = streams
        else:
            urls = [s for s in streams if 'dash' not in s['title'].lower()]

        resolved = urls[0]['url']

        return resolved

    elif urlresolver.HostedMediaFile(link).valid_url():

        stream = urlresolver.resolve(link)

        # elif resolveurl.HostedMediaFile(link).valid_url():
        #
        #     stream = resolveurl.resolve(link)

        return stream

    else:

        return link
Beispiel #12
0
    def wizard():

        control.addon('plugin.video.youtube').setSetting(
            'kodion.setup_wizard', 'false')
        control.addon('plugin.video.youtube').setSetting(
            'youtube.language', 'el')
        control.addon('plugin.video.youtube').setSetting(
            'youtube.region', 'GR')
        control.infoDialog(message=control.lang(30402), time=3000)
Beispiel #13
0
    def yt_mpd():

        control.addon('plugin.video.youtube').setSetting(
            'kodion.video.quality.mpd', 'true')
        control.addon('plugin.video.youtube').setSetting(
            'kodion.mpd.videos', 'true')
        control.addon('plugin.video.youtube').setSetting(
            'kodion.mpd.live_streams', 'true')
        control.infoDialog(message=control.lang(30402), time=3000)
Beispiel #14
0
    def process():

        if control.addon('plugin.video.youtube').getSetting('youtube.api.enable') == 'true':

            if control.yesnoDialog(line1=control.lang(30069), line2=control.lang(30022), line3=''):
                seq()
            else:
                control.infoDialog(message=control.lang(30029), time=3000)

        else:

            if control.yesnoDialog(line1=control.lang(30070), line2=control.lang(30022), line3=''):
                seq()
            else:
                control.infoDialog(message=control.lang(30029), time=3000)
Beispiel #15
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)
Beispiel #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)
Beispiel #17
0
def wizard():

    control.addon('plugin.video.youtube').setSetting('kodion.setup_wizard',
                                                     'true')
    control.execute('RunPlugin(plugin://plugin.video.youtube/sign/out/)')
Beispiel #18
0
def youtube_set_up():

    _id_ = '498788153161-pe356urhr0uu2m98od6f72k0vvcdsij0.apps.googleusercontent.com'
    key = 'AIzaSyA8k1OyLGf03HBNl0byD511jr9cFWo2GR4'
    secret = 'e6RBIFCVh1Fm-IX87PVJjgUu'

    control.addon('plugin.video.youtube').setSetting('youtube.api.enable',
                                                     'true')
    control.addon('plugin.video.youtube').setSetting('youtube.api.id', _id_)
    control.addon('plugin.video.youtube').setSetting('youtube.api.key', key)
    control.addon('plugin.video.youtube').setSetting('youtube.api.secret',
                                                     secret)
    control.addon('plugin.video.youtube').setSetting('kodion.setup_wizard',
                                                     'false')
    control.addon('plugin.video.youtube').setSetting('youtube.language', 'el')
    control.addon('plugin.video.youtube').setSetting('youtube.region', 'GR')
Beispiel #19
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)
Beispiel #20
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': '[B]' + control.addonInfo('name') + ': ' + control.lang(30350) + '[/B]',
                'action': 'toggle_alt',
                'icon': iconname('monitor'),
                'isFolder': 'False',
                'isPlayable': 'False'
            }
            ,
            {
                'title': control.lang(30320) + ': ' + control.lang(30272),
                'action': 'input_stream_addons',
                'icon': iconname('monitor')
            }
            ,
            {
                '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.addonInfo('name') + ': ' + control.lang(30110),
                'action': 'changelog',
                'icon': control.addonInfo('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 control.condVisibility('Window.IsVisible(programs)'):

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

        if control.condVisibility('System.HasAddon(script.module.resolveurl)'):

            rurl = {
                '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'
            }

            self.list.insert(-2, rurl)

        directory.add(self.list)
Beispiel #21
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')
Beispiel #22
0
        MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
        GNU General Public License for more details.
        You should have received a copy of the GNU General Public License
        along with this program.  If not, see <http://www.gnu.org/licenses/>.
'''

from tulip import control
from resources.lib.modules.themes import iconname
from resources.lib.modules.constants import yt_addon, sdik

try:
    if control.condVisibility('System.HasAddon({0})'.format(sdik)):
        import sys
        sys.path.extend([
            control.join(
                control.addon(id=sdik).getAddonInfo('path'), 'resources',
                'lib')
        ])
        import extension
except Exception:
    pass


class Indexer:
    def __init__(self, argv):

        self.list = []
        self.data = []
        self.argv = argv
        self.sysaddon = self.argv[0]
        self.syshandle = int(self.argv[1])
Beispiel #23
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(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(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(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'
            }
        ]

        try:

            rurl_enabled = control.addon_details('script.module.resolveurl').get('enabled')

        except Exception:

            rurl_enabled = False

        if rurl_enabled:

            resolveurl = {

                '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'

            }

            self.list.insert(-2, resolveurl)

        directory.add(self.list, content='movies')