def get_video_link(self): if not self._read_sources(): dialog = xbmcgui.Dialog() dialog.notification(control.lang(30103), "", xbmcgui.NOTIFICATION_ERROR) return None return self._select_source()
def _fetch_sources_progress(self, sources): dialog = xbmcgui.DialogProgress() dialog.create(control.lang(30100)) ret = self._fetch_sources(sources, dialog) dialog.close() return ret
def nullify(_id_): null = [{ 'title': control.lang(_id_), 'image': control.join(control.addonmedia('null.png')), 'url': sysurl }] return null
def _select_source(self): if len(self._sources) == 1: print "1 source was found, returning it" return self._sources.values()[0] dialog = xbmcgui.Dialog() slist = sorted(self._sources.keys()) sel = dialog.select(control.lang(30102), slist) if sel == -1: return None return self._sources[slist[sel]]
def switcher(): groups = [control.lang(30016)] + constructor()[1] choices = control.dialog.select(heading=control.lang(30017), list=groups) if choices == 0: control.setSetting('group', 'ALL') control.execute('Dialog.Close(busydialog)') control.sleep(50) control.execute('Container.Refresh') elif choices <= len(groups) and not choices == -1: control.setSetting('group', (groups.pop(choices))) control.execute('Dialog.Close(busydialog)') control.sleep(50) control.execute('Container.Refresh') else: control.execute('Dialog.Close(busydialog)') control.dialog.notification(heading=control.addonInfo('name'), message=control.lang(30019), icon=control.addonInfo('icon'), sound=False)
def _fetch_sources(self, sources, dialog): fetched_sources = [] factor = 100.0 / len(sources) for i, do in enumerate(sources): if dialog.iscanceled(): return None name, url = do try: dialog.update(int(i * factor), control.lang(30101) % name) fetched_url = embed_extractor.load_video_from_url(url) if fetched_url is not None: fetched_sources.append(("%03d | %s" % (len(fetched_sources) + 1, name), fetched_url)) else: print "Skipping invalid source %s" % name dialog.update(int(i * factor), "") except Exception, e: print "[*E*] Skiping %s because Exception at parsing" % name print e
def _fetch_sources(self, sources, dialog): fetched_sources = [] factor = 100.0 / len(sources) for i, do in enumerate(sources): if dialog.iscanceled(): return None name, url = do try: dialog.update(int(i * factor), control.lang(30101) % name) fetched_url = embed_extractor.load_video_from_url(url) if fetched_url is not None: fetched_sources.append( ("%03d | %s" % (len(fetched_sources) + 1, name), fetched_url)) else: print "Skipping invalid source %s" % name dialog.update(int(i * factor), "") except Exception, e: print "[*E*] Skiping %s because Exception at parsing" % name print e
def SEARCH(payload): query = control.keyboard(control.lang(30002)) if query: return control.draw_items(AnimeramBrowser().search_site(query)) return False
from resources.lib import control from resources.lib.SourcesList import SourcesList from resources.lib.router import route, router_process from resources.lib.AnimeramBrowser import AnimeramBrowser AB_LIST = [".", "0"] + [chr(i) for i in range(ord("A"), ord("Z")+1)] MENU_ITEMS = [ (control.lang(30000), "latest"), (control.lang(30001), "all"), (control.lang(30002), "search") ] @route('animes/*') def ANIMES_PAGE(animeurl): return control.draw_items(AnimeramBrowser().get_anime_episodes(animeurl)) @route('latest') def LATEST(payload): return control.draw_items(AnimeramBrowser().get_latest()) @route('search') def SEARCH(payload): query = control.keyboard(control.lang(30002)) if query: return control.draw_items(AnimeramBrowser().search_site(query)) return False @route('all') def LIST_ALL_AB(payload): return control.draw_items([control.allocate_item(i, "all/%s" % i, True) for i in AB_LIST])
from resources.lib import control from resources.lib.SourcesList import SourcesList from resources.lib.router import route, router_process from resources.lib.AnimeramBrowser import AnimeramBrowser AB_LIST = [".", "0"] + [chr(i) for i in range(ord("A"), ord("Z") + 1)] MENU_ITEMS = [(control.lang(30000), "latest"), (control.lang(30001), "all"), (control.lang(30002), "search")] @route('animes/*') def ANIMES_PAGE(animeurl): return control.draw_items(AnimeramBrowser().get_anime_episodes(animeurl)) @route('latest') def LATEST(payload): return control.draw_items(AnimeramBrowser().get_latest()) @route('search') def SEARCH(payload): query = control.keyboard(control.lang(30002)) if query: return control.draw_items(AnimeramBrowser().search_site(query)) return False @route('all') def LIST_ALL_AB(payload): return control.draw_items(
def main_menu(): _list_ = [] root_menu = [{ 'title': control.lang(30011), 'image': control.join(control.addonmedia('settings.png')), 'url': '{0}?action={1}'.format(sysurl, 'settings') }, { 'title': control.lang(30015).format( control.lang(30016) if control.setting('group') == 'ALL' else control.setting('group').decode('utf-8')), 'image': control.join(control.addonmedia('switcher.png')), 'url': '{0}?action={1}'.format(sysurl, 'switcher') }] try: if constructor() == 'Youtube': if 'playlist?list=' in control.setting('youtube_url'): _items_ = root_menu + cache.get( youtube.youtube( key='AIzaSyA8k1OyLGf03HBNl0byD511jr9cFWo2GR4'). playlist, int(control.setting('caching')) if int(control.setting('caching')) > 0 else 0, control.setting('youtube_url').partition('list=')[2]) del _items_[1] elif not bool(control.setting('youtube_url')): raise TypeError else: raise ValueError elif constructor() == 'null': raise TypeError elif not constructor()[0] == []: if len(constructor()[1]) == 1: del root_menu[1] if control.setting('group') not in constructor()[1]: control.setSetting('group', 'ALL') filtered = [ item for item in constructor()[0] if any( item['group'] == selected for selected in [control.setting('group').decode('utf-8')]) ] if not control.setting('group') == 'ALL' else constructor()[0] _items_ = root_menu + filtered else: raise ValueError except ValueError: _items_ = root_menu + nullify(30013) del _items_[1] except TypeError: _items_ = root_menu + nullify(30026) del _items_[1] for item in _items_: li = control.item(label=item['title']) li.setInfo('video', {'title': item['title']}) li.setArt({ 'icon': item['image'], 'thumb': item['image'], 'fanart': control.addonInfo('fanart') }) li.setProperty('IsPlayable', 'true') li.addContextMenuItems([ (control.lang(30012), 'RunPlugin({0}?action=refresh)'.format(sysurl)) ]) _url_ = '{0}?action=play&url={1}'.format(sysurl, item['url']) isFolder = False if control.setting('youtube') == 'true' and item['url'].startswith( 'plugin://plugin.video.youtube/play/?video_id='): _url_ = '{0}?action=play&url={1}'.format(sysurl, item['url']) if control.setting('youtube') == 'false' and item['url'].startswith( 'plugin://plugin.video.youtube/play/?video_id='): _url_ = item['url'] if item['url'].startswith('plugin://'): _url_ = item['url'] if item['url'].endswith(('settings', 'switcher')): li.setProperty('IsPlayable', 'false') _list_.append((_url_, li, isFolder)) control.addItems(syshandle, _list_) control.directory(syshandle, cacheToDisc=True)
except NameError: play_item(params['url']) except NameError: try: if urlresolver.HostedMediaFile(params['url']).valid_url(): url = urlresolver.resolve(params['url']) play_item(url) else: play_item(params['url']) except NameError: play_item(params['url']) elif action == 'install_youtube-dl': if control.condVisibility('System.HasAddon(script.module.youtube.dl)'): control.infoDialog(control.lang(30030)) else: control.execute('RunPlugin(plugin://script.module.youtube.dl)') elif action == 'install_urlresolver': if control.condVisibility('System.HasAddon(script.module.urlresolver)'): control.infoDialog(control.lang(30031)) else: control.execute('RunPlugin(plugin://script.module.urlresolver)') elif action == 'settings': control.openSettings() elif action == 'refresh':