Ejemplo n.º 1
0
    def bookmarks(self):

        self.list = bookmarks.get()

        if not self.list:
            na = [{'title': control.lang(30058), 'action': None}]
            directory.add(na)
            return

        for i in self.list:
            bookmark = dict((k, v) for k, v in iteritems(i) if not k == 'next')
            bookmark['delbookmark'] = i['url']
            i.update({'cm': [{'title': 30502, 'query': {'action': 'deleteBookmark', 'url': json.dumps(bookmark)}}]})

        control.sortmethods('title')

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

            clear_menu = {
                'title': control.lang(30059), 'action': 'clear_bookmarks'
            }

            self.list.insert(0, clear_menu)

        directory.add(self.list, content='videos')
Ejemplo n.º 2
0
def radios(url):

    self_list = radios_list(url)

    if self_list is None:
        return

    if url == ALL_LINK:

        self_list.extend(_devpicks())

    for i in self_list:

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

    control.sortmethods('title')

    directory.add(self_list, infotype='music')
Ejemplo n.º 3
0
def bookmarks():

    self_list = _bookmarks.get()

    if not self_list:
        na = [{'title': control.lang(30007), 'action': None}]
        directory.add(na)
        return

    for i in self_list:
        bookmark = dict((k, v) for k, v in iteritems(i) if not k == 'next')
        bookmark['delbookmark'] = i['url']
        i.update({
            'cm': [{
                'title': 30006,
                'query': {
                    'action': 'deleteBookmark',
                    'url': json.dumps(bookmark)
                }
            }]
        })

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

    directory.add(self_list, content='videos')
Ejemplo n.º 4
0
def live():

    self_list = list_live_items()

    if self_list is None:
        return

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

    for item in self_list:

        item.update({'action': 'play', 'isFolder': 'False'})
        bookmark = dict((k, v) for k, v in iteritems(item) if not k == 'next')
        bookmark['delbookmark'] = item['url']
        item.update({
            'cm': [{
                'title': 30004,
                'query': {
                    'action': 'addBookmark',
                    'url': json.dumps(bookmark)
                }
            }]
        })

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

    directory.add(self_list, content='videos')
Ejemplo n.º 5
0
    def techno_choices(self, url):

        self.list = cache.get(youtube.youtube(key=thgiliwt(api_keys['api_key']), replace_url=replace_url).playlist, 12, url)

        if self.list is None:

            return

        for i in self.list:
            i['label'] = i.pop('title')
            # process stupid descriptions/comments put up by uploaders on labels
            i['label'] = re.sub(r'PREMIERE ?:|\(full version\)\.mp4|\(?(?:Un)?Official.*\)? ?(?:HD)?|\[?HD (?:108|72)0p\]?', '', i['label'], flags=re.IGNORECASE)

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

            if '–' in i['label']:
                sep = '–'
            elif ':' in i['label'] and not '-' in i['label']:
                sep = ':'
            elif '-' in i['label']:
                sep = '-'
            else:
                sep = ' '

            artist, separator, title = i['label'].partition(sep)

            if '&' in artist:
                artists_separator = '&'
            elif ',' in artist:
                artists_separator = ','
            elif 'feat.' in artist:
                artists_separator = 'feat.'
            elif 'feat' in artist:
                artists_separator = 'feat'
            elif 'Feat' in artist:
                artists_separator = 'Feat'
            else:
                artists_separator = None

            if artists_separator:
                artist = [a.strip() for a in artist.split(artists_separator)]
                on_label = ' / '.join(artist)
            else:
                on_label = artist.strip()
                artist = [artist.strip()]

            i.update(
                {
                    'action': 'play', 'isFolder': 'False', 'title': title, 'label': ' '.join([on_label, separator , title]),
                    'album': control.lang(30292), 'fanart': 'https://i.ytimg.com/vi/vtjL9IeowUs/maxresdefault.jpg',
                    'tracknumber': count, 'count': count, 'artist': artist
                }
            )

            if control.setting('audio_only') == 'true' and control.condVisibility('Window.IsVisible(music)'):
                i['artist'] = on_label

        control.sortmethods('tracknum', mask='%A')

        directory.add(self.list, content=self.content, infotype=self.infotype, argv=self.argv)
Ejemplo n.º 6
0
    def index(self, url):

        if self.basecy_link in url:
            self.list = self.index_cy(url)
        elif self.basegr_link in url:
            self.list = self.index_gr(url)

        if not self.list:
            return

        for i in self.list:
            if 'action' not in i:
                i.update({'action': 'episodes'})
            if 'next' in i:
                i.update({'nextaction': 'index'})

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

        if self.basegr_link in url:

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

        directory.add(self.list, content='videos')
Ejemplo n.º 7
0
    def mgreekz_top10(self):

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

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

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

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

        control.sortmethods('tracknum', mask='%A')
        directory.add(self.list, content=self.content, infotype=self.infotype, argv=self.argv)
Ejemplo n.º 8
0
def search():

    input_str = control.inputDialog()

    if not input_str:
        return

    items = radios_list(ALL_LINK) + _devpicks()

    if is_py3:

        titles = [strip_accents(i['title']) for i in items]

        matches = [
            titles.index(t) for t, s in process.extract(
                strip_accents(input_str), titles, limit=10) if s >= 70
        ]

    else:

        titles = [
            strip_accents(i['title']).encode('unicode-escape') for i in items
        ]

        matches = [
            titles.index(t) for t, s in process.extract(strip_accents(
                input_str).encode('unicode-escape'),
                                                        titles,
                                                        limit=10) if s >= 70
        ]

    data = []

    for m in matches:
        data.append(items[m])

    if not data:

        control.infoDialog(30010)

        return

    else:

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

        control.sortmethods('title')
        directory.add(data, infotype='music')
Ejemplo n.º 9
0
    def archive(self):

        self.list = cache.get(
            youtube.youtube(key=self.yt_key).playlists, 12, self.yt_channel)

        if self.list is None:
            return

        for i in self.list:
            i['title'] = client.replaceHTMLCodes(i['title'])
            i.update({'action': 'episodes'})
            bookmark = dict((k, v) for k, v in iteritems(i) if not k == 'next')
            bookmark['bookmark'] = i['url']
            i.update({
                'cm': [{
                    'title': 32501,
                    'query': {
                        'action': 'addBookmark',
                        'url': json.dumps(bookmark)
                    }
                }]
            })

        control.sortmethods('title')

        directory.add(self.list, content='videos')
Ejemplo n.º 10
0
    def episodes(self, url):

        if CACHE_DEBUG:
            self.list = self.epeisodia(url)
        else:
            self.list = cache.get(self.epeisodia, 12, url)

        if self.list is None:
            log_debug(
                'Episode section failed to load, try resetting indexer methods'
            )
            return

        for item in self.list:

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

        for item in self.list:

            refresh_cm = {'title': 30054, 'query': {'action': 'refresh'}}
            item.update({'cm': [refresh_cm]})

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

            self.list = sorted(
                self.list,
                key=lambda k: k['group']
                if k['group'] in ['1bynumber', '2bydate'] else k['title'],
                reverse=True)[::-1]

        else:

            self.list = sorted(self.list, key=lambda k: k['group'])

        if len(self.list) > int(
                control.setting('pagination_integer')) and control.setting(
                    'paginate_items') == 'true':

            try:

                pages = list_divider(
                    self.list, int(control.setting('pagination_integer')))
                self.list = pages[int(control.setting('page'))]
                reset = False

            except Exception:

                pages = list_divider(
                    self.list, int(control.setting('pagination_integer')))
                self.list = pages[0]
                reset = True

            self.list.insert(0, page_menu(len(pages), reset=reset))

        control.sortmethods()
        # control.sortmethods('title')
        # control.sortmethods('year')

        directory.add(self.list, content='episodes')
Ejemplo n.º 11
0
    def episodes(self, url, title=None, name=None, image=None):

        if self.basegr_link in url:
            self.list = self.episodes_list_gr(url, title)
        else:
            self.list = self.episodes_list_cy(url, name, image)

        if self.list is None:
            return

        if self.newscy_link == url:

            item = {
                'title': control.lang(30021),
                'action': 'enter_date',
                'icon': 'selector.png',
                'isFolder': 'False', 'isPlayable': 'False',
                'next': self.list[0]['next']
            }

            self.list.insert(0, item)

        for c, i in list(enumerate(self.list, 1)):

            if 'action' not in i:
                i.update({'action': 'play', 'isFolder': 'False', 'code': str(c)})

            if 'next' in i:
                i.update({'nextaction': 'episodes'})

        if control.setting('reverse') == 'true' and self.basegr_link in url:

            self.list = sorted(self.list, key=lambda k: int(k['code']), reverse=True)

        if len(self.list) > int(control.setting('pagination_integer')) and control.setting('paginate') == 'true':

            try:

                pages = utils.list_divider(self.list, int(control.setting('pagination_integer')))
                self.list = pages[int(control.setting('page'))]
                reset = False

            except Exception:

                pages = utils.list_divider(self.list, int(control.setting('pagination_integer')))
                self.list = pages[0]
                reset = True

            self.list.insert(0, self.page_menu(len(pages), reset=reset))

        if self.basegr_link in url:
            control.sortmethods()
            control.sortmethods('production_code')

        directory.add(self.list, content='videos')
Ejemplo n.º 12
0
    def stations(self):

        self.list = self.get_stations()

        if self.list is None:
            return

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

        for item in self.list:

            refresh = {'title': 30015, 'query': {'action': 'refresh'}}
            cache_clear = {'title': 30002, 'query': {'action': 'cache_clear'}}
            info_cm = {'title': 30020, 'query': {'action': 'info_cm'}}
            station_info = {
                'title': 30016,
                'query': {
                    'action': 'description',
                    'text': item['comment']
                }
            }
            history = {
                'title': 30017,
                'query': {
                    'action': 'history',
                    'url': item['history']
                }
            }

            if control.kodi_version() < 17.0:
                item.update({
                    'cm': [refresh, cache_clear, history],
                    'action': 'play',
                    'isFolder': 'False'
                })
            else:
                item.update({
                    'cm':
                    [refresh, cache_clear, history, station_info, info_cm],
                    'action':
                    'play',
                    'isFolder':
                    'False'
                })

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

        control.sortmethods()
        control.sortmethods('album')
        control.sortmethods('genre')
        control.sortmethods('listeners')

        directory.add(self.list, infotype='music')
Ejemplo n.º 13
0
    def top50_list(self, url):

        self.list = self._top50(url)

        if self.list is None:
            log_debug('Developer\'s picks section failed to load')
            return

        for count, item in list(enumerate(self.list, start=1)):
            add_to_playlist = {
                'title': 30226,
                'query': {
                    'action': 'add_to_playlist'
                }
            }
            clear_playlist = {
                'title': 30227,
                'query': {
                    'action': 'clear_playlist'
                }
            }
            item.update({
                'action': 'play',
                'isFolder': 'False',
                'cm': [add_to_playlist, clear_playlist],
                'album': control.lang(30269),
                'fanart':
                'https://i.ytimg.com/vi/vtjL9IeowUs/maxresdefault.jpg',
                'tracknumber': count,
                'code': count,
                'artist': [item['label'].partition(' - ')[0]]
            })

            if control.setting(
                    'audio_only') == 'true' and control.condVisibility(
                        'Window.IsVisible(music)'):
                item['artist'] = item['artist'][0]

        control.sortmethods('tracknum', mask='%A')
        directory.add(self.list, content=self.content, infotype=self.infotype)
Ejemplo n.º 14
0
    def top20_list(self, url):

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

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

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

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

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

        control.sortmethods('tracknum', mask='%A')
        directory.add(self.list, content=self.content, infotype=self.infotype, argv=self.argv)
Ejemplo n.º 15
0
    def listing(self, url):

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

        if self.list is None:
            return

        for i in self.list:

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

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

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

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

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

            for i in self.list:

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

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

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

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

        directory.add(self.list, content=content)
Ejemplo n.º 16
0
    def listing(self, url, post=None, get_listing=False):

        if CACHE_DEBUG:
            self.list = self.items_list(url, post)
        else:
            self.list = cache.get(self.items_list, 12, url, post)

        if self.list is None:
            log_debug(
                'Listing section failed to load, try resetting indexer methods'
            )
            return

        if url.startswith(MOVIES) and control.setting(
                'show_cartoons') == 'false' and url != ''.join(
                    [GM_BASE, 'movies.php?g=8&y=&l=&p=']):

            if CACHE_DEBUG:
                bl_urls = blacklister()
            else:
                bl_urls = cache.get(blacklister, 96)

            self.list = [i for i in self.list if i['url'] not in bl_urls]

        for item in self.list:

            if url.startswith((MOVIES, THEATER, SHORTFILMS, PERSON,
                               SEARCH)) and item['url'].startswith(
                                   (MOVIES, THEATER, SHORTFILMS, PERSON)):
                item.update({'action': 'play', 'isFolder': 'False'})
            elif url.startswith(SPORTS):
                item.update({'action': 'events'})
            else:
                item.update({'action': 'episodes'})

        for item in self.list:

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

        if get_listing:

            return self.list

        if len(self.list) > int(
                control.setting('pagination_integer')) and control.setting(
                    'paginate_items') == 'true':

            if control.setting('sort_method') == '0':
                self.list.sort(
                    key=lambda k: cleantitle.strip_accents(k['title'].lower()),
                    reverse=control.setting('reverse_order') == 'true')
            elif control.setting('sort_method') == '1':
                self.list.sort(
                    key=lambda k: k['year'],
                    reverse=control.setting('reverse_order') == 'true')

            try:

                pages = list_divider(
                    self.list, int(control.setting('pagination_integer')))
                self.list = pages[int(control.setting('page'))]
                reset = False

            except Exception:

                pages = list_divider(
                    self.list, int(control.setting('pagination_integer')))
                self.list = pages[0]
                reset = True

            self.list.insert(0, page_menu(len(pages), reset=reset))

        if control.setting('paginate_items') == 'false' or len(
                self.list) <= int(control.setting('pagination_integer')):

            control.sortmethods()
            control.sortmethods('title')
            control.sortmethods('year')

        if url.startswith((MOVIES, THEATER, SHORTFILMS)):
            directory.add(self.list, content='movies')
        else:
            directory.add(self.list, content='tvshows')
Ejemplo n.º 17
0
def main_menu():

    if control.setting('show_root') == 'false' and not control.setting(
            'local') and not control.setting('remote') and not control.setting(
                'youtube_url'):

        return

    try:
        group_setting = control.setting('group').decode('utf-8')
    except Exception:
        group_setting = control.setting('group')

    root_menu = [{
        'title':
        control.lang(30011),
        'image':
        control.join(control.addonPath, 'resources', 'media', 'settings.png'),
        'action':
        'settings'
    }]

    null = [{
        'title':
        control.lang(30013),
        'image':
        control.join(control.addonPath, 'resources', 'media', 'null.png'),
        'action':
        None
    }]

    if control.setting('show_root') == 'false':
        root_menu = []
        null = []

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

        switcher_menu = []

    else:

        switcher_menu = [{
            'title':
            control.lang(30015).format(
                control.lang(30016) if control.setting('group') ==
                'ALL' else group_setting),
            'image':
            control.join(control.addonPath, 'resources', 'media',
                         'switcher.png'),
            'action':
            'switcher'
        }]

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

        items = root_menu + null

    else:

        try:

            output = cache.get(
                constructor,
                int(control.setting('caching'))
                if int(control.setting('caching')) > 0 else 0)

            if not output:
                items = root_menu + null
            elif len(output) == 2:
                filtered = [
                    i for i in output[0] if any(
                        i['group'] == selected for selected in [group_setting])
                ] if not control.setting('group') == 'ALL' else output[0]
                items = root_menu + switcher_menu + filtered
            else:
                items = root_menu + output

        except Exception:

            items = root_menu + null

    for i in items:

        i.update({
            'cm': [{
                'title': 30012,
                'query': {
                    'action': 'refresh'
                }
            }, {
                'title': 30038,
                'query': {
                    'action': 'settings'
                }
            }]
        })

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

    try:
        if len(output) == 2:
            control.sortmethods('genre')
    except Exception:
        pass

    add(items)
Ejemplo n.º 18
0
    def live_tv(self, zapping=False, query=None):

        if control.setting('live_tv_mode') == '1' and query is None:
            zapping = True

        if control.setting('debug') == 'false':
            live_data = cache.get(self.live, 8)
        else:
            live_data = cache.get(self.live,
                                  int(control.setting('cache_period')))

        self.list = live_data[0]

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

        if zapping and control.setting('live_group_switcher') != '0':

            value = int(control.setting('live_group_switcher')) - 1

            group = str(live_groups.values()[value])

            self.list = [item for item in self.list if item['group'] == group]

        elif control.setting('show_live_switcher') == 'true':

            if control.setting('live_group') != 'ALL' and query is None:

                self.list = [
                    item for item in self.list
                    if item['group'] == control.setting('live_group')
                ]

        elif not zapping:

            if control.setting('live_group_switcher') != '0' and query is None:

                value = int(control.setting('live_group_switcher')) - 1

                group = str(live_groups.values()[value])

                self.list = [
                    item for item in self.list if item['group'] == group
                ]

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

            self.list = [
                item for item in self.list if not any([
                    'BUP' in item['title'],
                    re.search(r'\(\d\)', item['title'])
                ])
            ]

        year = datetime.now().year

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

            item.update({
                'action':
                'play_resolved'
                if zapping and control.setting('preresolve_streams') == 'true'
                else 'play',
                'isFolder':
                'False',
                'year':
                year,
                'duration':
                None,
                'code':
                str(count)
            })

        for item in self.list:

            # bookmark = dict((k, v) for k, v in iteritems(item) if not k == 'next')
            # bookmark['bookmark'] = item['url']
            #
            # bookmark_cm = {'title': 30080, 'query': {'action': 'addBookmark', 'url': json.dumps(bookmark)}}
            if not zapping:
                r_and_c_cm = {
                    'title': 30082,
                    'query': {
                        'action': 'refresh_and_clear'
                    }
                }
            else:
                r_and_c_cm = None
            pvr_client_cm = {
                'title': 30084,
                'query': {
                    'action': 'pvr_client',
                    'query': 'true'
                }
            }
            if item['website'] != 'None':
                web_cm = {
                    'title': 30316,
                    'query': {
                        'action': 'open_link',
                        'url': item['website']
                    }
                }
            else:
                web_cm = None

            if control.condVisibility('Pvr.HasTVChannels'):
                item.update({'cm': [r_and_c_cm, pvr_client_cm, web_cm]})
            else:
                item.update({'cm': [r_and_c_cm, web_cm]})

        if control.setting(
                'show_live_switcher') == 'true' and zapping is False:

            switch = {
                'title':
                control.lang(30047).format(
                    control.lang(30048) if control.setting('live_group') ==
                    'ALL' else control.lang(int(control.setting('live_group'))
                                            )),
                'image':
                iconname('switcher'),
                'action':
                'live_switcher',
                'plot':
                control.lang(30034) + '\n' + control.lang(30035) +
                live_data[2],
                'isFolder':
                'False',
                'isPlayable':
                'False'
            }

            self.list.insert(0, switch)

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

            from resources.lib.modules.player import conditionals

            pd = control.progressDialogGB
            pd.create(control.name())

            for item in self.list:

                try:
                    percent = control.per_cent(int(item['code']),
                                               len(self.list))
                    pd.update(percent)
                    item.update(
                        {'url': conditionals(item['url'], params=self.params)})
                except Exception as e:
                    log_debug('Failed to resolve ' + item['title'] +
                              ' , reason: ' + repr(e))
                    continue

            pd.update(100)
            pd.close()

        if query:

            self.list = [i for i in self.list if query in i['title'].lower()]

            return self.list

        if not zapping:

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

        directory.add(self.list,
                      content='movies',
                      argv=self.argv,
                      as_playlist=zapping,
                      progress=len(self.list) >= 100)