def __download(self, url, file_path): try: # Setup progress dialog and download self.pDialog = xbmcgui.DialogProgress() self.pDialog.create('PGLiveTV', common.translate(30050), common.translate(30051)) urllib.urlretrieve(url, file_path, self.video_report_hook) self.pDialog.close() return True except IOError: self.pDialog.close() common.showError(common.translate(30053)) except KeyboardInterrupt: self.pDialog.close() return False
def run(self, argv=None): self.addon = Addon('plugin.video.SportsDevil', argv) common.log('SportsDevil running') base = argv[0] handle = int(argv[1]) parameter = argv[2] self.base = base self.handle = handle paramstring = urllib.unquote_plus(parameter) try: # if addon is started listItemPath = xbmcUtils.getListItemPath() if not listItemPath.startswith(self.base): if not('mode=' in paramstring and not 'mode=1&' in paramstring): xbmcplugin.setPluginFanart(self.handle, common.Paths.pluginFanart) self.clearCache() #if common.getSetting('autoupdate') == 'true': # self.update() # Main Menu if len(paramstring) <= 2: mainMenu = ListItem.create() mainMenu['url'] = self.MAIN_MENU_FILE tmpList = self.parseView(mainMenu) if tmpList: self.currentlist = tmpList else: [mode, item] = self._parseParameters() # switch(mode) if mode == Mode.VIEW: tmpList = self.parseView(item) if tmpList: self.currentlist = tmpList count = len(self.currentlist.items) if count == 1: # Autoplay single video autoplayEnabled = common.getSetting('autoplay') == 'true' if autoplayEnabled: videos = self.currentlist.getVideos() if len(videos) == 1: self.playVideo(videos[0], True) elif mode == Mode.ADDITEM: tmp = os.path.normpath(paramstring.split('url=')[1]) if tmp: suffix = tmp.split(os.path.sep)[-1] tmp = tmp.replace(suffix,'') + urllib.quote_plus(suffix) if self.favouritesManager.add(tmp): xbmc.executebuiltin('Container.Refresh()') elif mode in [Mode.ADDTOFAVOURITES, Mode.REMOVEFROMFAVOURITES, Mode.EDITITEM]: if mode == Mode.ADDTOFAVOURITES: self.favouritesManager.addItem(item) elif mode == Mode.REMOVEFROMFAVOURITES: self.favouritesManager.removeItem(item) xbmc.executebuiltin('Container.Refresh()') elif mode == Mode.EDITITEM: if self.favouritesManager.editItem(item): xbmc.executebuiltin('Container.Refresh()') elif mode == Mode.EXECUTE: self.executeItem(item) elif mode == Mode.PLAY: self.playVideo(item) elif mode == Mode.QUEUE: self.queueAllVideos(item) elif mode == Mode.DOWNLOAD: url = urllib.unquote(item['url']) title = item['title'] self.downloadVideo(url, title) elif mode == Mode.REMOVEFROMCUSTOMMODULES: self.removeCustomModule(item) #elif mode == Mode.UPDATE: # self.update() elif mode == Mode.DOWNLOADCUSTOMMODULE: self.downloadCustomModule() elif mode == Mode.INSTALLADDON: success = install(item['url']) if success: xbmc.sleep(100) if xbmcUtils.getCurrentWindowXmlFile() == 'DialogAddonSettings.xml': # workaround to update settings dialog common.setSetting('', '') except Exception, e: common.showError('Error running SportsDevil') common.log('Error running SportsDevil. Reason:' + str(e))
def parseView(self, lItem): def endOfDirectory(succeeded=True): xbmcplugin.endOfDirectory(handle=self.handle, succeeded=succeeded, cacheToDisc=True) if not lItem: endOfDirectory(False) return None if lItem['type'] == 'search': search_phrase = self.getSearchPhrase() if not search_phrase: common.log("search canceled") endOfDirectory(False) return None else: lItem['type'] = 'rss' lItem['url'] = lItem['url'] % (urllib.quote_plus(search_phrase)) url = lItem['url'] if url == common.Paths.customModulesFile: self.customModulesManager.getCustomModules() tmpList = None result = self.parser.parse(lItem) if result.code == ParsingResult.Code.SUCCESS: tmpList = result.list else: if result.code == ParsingResult.Code.CFGFILE_NOT_FOUND: common.showError("Cfg file not found") elif result.code == ParsingResult.Code.CFGSYNTAX_INVALID: common.showError("Cfg syntax invalid") elif result.code == ParsingResult.Code.WEBREQUEST_FAILED: common.showError("Web request failed") endOfDirectory(False) return None # if it's the main menu, add folder 'Favourites' and 'Custom Modules if url == self.MAIN_MENU_FILE: tmp = ListItem.create() tmp['title'] = '[COLOR green]Favourites[/COLOR]' tmp['type'] = 'rss' tmp['icon'] = os.path.join(common.Paths.imgDir, 'bookmark.png') tmp['url'] = str(common.Paths.favouritesFile) tmpList.items.insert(0, tmp) tmp = ListItem.create() tmp['title'] = '[COLOR red]Custom Modules[/COLOR]' tmp['type'] = 'rss' tmp['url'] = os.path.join(common.Paths.customModulesDir, 'custom.cfg') tmpList.items.insert(0, tmp) # if it's the favourites menu, add item 'Add item' elif url == common.Paths.favouritesFile or url.startswith('favfolders'): if url.startswith('favfolders'): url = os.path.normpath(os.path.join(common.Paths.favouritesFolder, url)) tmp = ListItem.create() tmp['title'] = 'Add item...' tmp['type'] = 'command' tmp['icon'] = os.path.join(common.Paths.imgDir, 'bookmark_add.png') action = 'RunPlugin(%s)' % (self.base + '?mode=' + str(Mode.ADDITEM) + '&url=' + url) tmp['url'] = action tmpList.items.append(tmp) # if it's the custom modules menu, add item 'more...' elif url == common.Paths.customModulesFile: tmp = ListItem.create() tmp['title'] = 'more...' tmp['type'] = 'command' #tmp['icon'] = os.path.join(common.Paths.imgDir, 'bookmark_add.png') action = 'RunPlugin(%s)' % (self.base + '?mode=' + str(Mode.DOWNLOADCUSTOMMODULE) + '&url=') tmp['url'] = action tmpList.items.append(tmp) # Create menu or play, if it's a single video and autoplay is enabled proceed = False count = len(tmpList.items) if count == 0: if url.startswith('favfolders'): proceed = True else: common.showInfo('No stream available') elif count > 0 and not (common.getSetting('autoplay') == 'true' and count == 1 and len(tmpList.getVideos()) == 1): # sort methods sortKeys = tmpList.sort.split('|') setSortMethodsForCurrentXBMCList(self.handle, sortKeys) # Add items to XBMC list for m in tmpList.items: self.addListItem(m, len(tmpList.items)) proceed = True endOfDirectory(proceed) common.log('End of directory') return tmpList
def run(self, argv=None): self.addon = Addon('plugin.video.ViendoKodiStreaming', argv) common.log('ViendoKodiStreaming running') base = argv[0] handle = int(argv[1]) parameter = argv[2] self.base = base self.handle = handle paramstring = urllib.unquote_plus(parameter) common.log(paramstring) try: # if addon is started listItemPath = xbmcUtils.getListItemPath() if not listItemPath.startswith(self.base): if not('mode=' in paramstring and not 'mode=1&' in paramstring): xbmcplugin.setPluginFanart(self.handle, common.Paths.pluginFanart) self.clearCache() #if common.getSetting('autoupdate') == 'true': # self.update() # Main Menu if '98VKS' in paramstring: nametorrent = os.path.normpath(paramstring.split('url=')[1]) if nametorrent == 'quasar': addonTorrent = 'item_info_build=plugin://plugin.video.quasar/play?uri=%s' elif nametorrent == 'pulsar': addonTorrent = 'item_info_build=plugin://plugin.video.pulsar/play?uri=%s' elif nametorrent == 'kmediatorrent': addonTorrent = 'item_info_build=plugin://plugin.video.kmediatorrent/play/%s' elif nametorrent == "torrenter": addonTorrent = 'item_info_build=plugin://plugin.video.torrenter/?action=playSTRM&url=%s¬_download_only=True' elif nametorrent == "yatp": addonTorrent = 'item_info_build=plugin://plugin.video.yatp/?action=play&torrent=%s' else: addonTorrent = 'item_info_build=plugin://plugin.video.xbmctorrent/play/%s' cFichero = common.Paths.catchersDir + '/'+'torrent.txt' outfile = open(cFichero, 'w') # Indicamos el valor 'w'. outfile.write('item_info_name=url\n' + 'item_info_from=@PARAM1@\n' + addonTorrent + '\n' ) outfile.close() common.showInfo('Para los torrent se utilizará ' + nametorrent ) elif len(paramstring) <= 2: mainMenu = ListItem.create() mainMenu['url'] = self.MAIN_MENU_FILE tmpList = self.parseView(mainMenu) if tmpList: self.currentlist = tmpList else: [mode, item] = self._parseParameters() # switch(mode) if mode == Mode.VIEW: tmpList = self.parseView(item) if tmpList: self.currentlist = tmpList count = len(self.currentlist.items) if count == 1: # Autoplay single video autoplayEnabled = common.getSetting('autoplay') == 'true' if autoplayEnabled: videos = self.currentlist.getVideos() if len(videos) == 1: self.playVideo(videos[0], True) elif mode == Mode.ADDITEM: tmp = os.path.normpath(paramstring.split('url=')[1]) if tmp: suffix = tmp.split(os.path.sep)[-1] tmp = tmp.replace(suffix,'') + urllib.quote_plus(suffix) if self.favouritesManager.add(tmp): xbmc.executebuiltin('Container.Refresh()') elif mode in [Mode.ADDTOFAVOURITES, Mode.REMOVEFROMFAVOURITES, Mode.EDITITEM]: if mode == Mode.ADDTOFAVOURITES: self.favouritesManager.addItem(item) elif mode == Mode.REMOVEFROMFAVOURITES: self.favouritesManager.removeItem(item) xbmc.executebuiltin('Container.Refresh()') elif mode == Mode.EDITITEM: if self.favouritesManager.editItem(item): xbmc.executebuiltin('Container.Refresh()') elif mode == Mode.EXECUTE: self.executeItem(item) elif mode == Mode.PLAY: self.playVideo(item) elif mode == Mode.WEBDRIVER: url = urllib.quote(item['url']) title = item['title'] self.playWebDriver(url, title) elif mode == Mode.QUEUE: self.queueAllVideos(item) elif mode == Mode.DOWNLOAD: url = urllib.unquote(item['url']) title = item['title'] self.downloadVideo(url, title) elif mode == Mode.CHROME: url = urllib.quote(item['url']) title = item['title'] self.launchChrome(url, title) elif mode == Mode.REMOVEFROMCUSTOMMODULES: self.removeCustomModule(item) #elif mode == Mode.UPDATE: # self.update() elif mode == Mode.SAY: #title = item['title'] url = "" elif mode == Mode.DOWNLOADCUSTOMMODULE: self.downloadCustomModule() elif mode == Mode.INSTALLADDON: success = install(item['url']) if success: xbmc.sleep(100) if xbmcUtils.getCurrentWindowXmlFile() == 'DialogAddonSettings.xml': # workaround to update settings dialog common.setSetting('', '') except Exception, e: common.showError('Error running ViendoKodiStreaming') common.log('Error running ViendoKodiStreaming. Reason:' + str(e))
def createXBMCListItem(self, item): title = item['title'] m_type = item['type'] icon = item['icon'] if icon and not icon.startswith('http'): try: if not fu.fileExists(icon): tryFile = os.path.join(common.Paths.modulesDir, icon) if not fu.fileExists(tryFile): tryFile = os.path.join(common.Paths.customModulesDir, icon) if fu.fileExists(tryFile): icon = tryFile except: pass if not icon: if m_type == 'video': icon = common.Paths.defaultVideoIcon else: icon = common.Paths.defaultCategoryIcon fanart = item['fanart'] if not fanart: fanart = common.Paths.pluginFanart liz = xbmcgui.ListItem(title) try: liz.setArt({'thumb': icon, 'fanart': fanart}) except: liz.setProperty('fanart_image', fanart) liz.setThumbnailImage(icon) common.log('main.py:374: setThumbnailImage is deprecated') """ General Values that apply to all types: count : integer (12) - can be used to store an id for later, or for sorting purposes size : long (1024) - size in bytes date : string (%d.%m.%Y / 01.01.2009) - file date Video Values: genre : string (Comedy) year : integer (2009) episode : integer (4) season : integer (1) top250 : integer (192) tracknumber : integer (3) rating : float (6.4) - range is 0..10 watched : depreciated - use playcount instead playcount : integer (2) - number of times this item has been played overlay : integer (2) - range is 0..8. See GUIListItem.h for values cast : list (Michal C. Hall) castandrole : list (Michael C. Hall|Dexter) director : string (Dagur Kari) mpaa : string (PG-13) plot : string (Long Description) plotoutline : string (Short Description) title : string (Big Fan) originaltitle : string (Big Fan) duration : string (3:18) studio : string (Warner Bros.) tagline : string (An awesome movie) - short description of movie writer : string (Robert D. Siegel) tvshowtitle : string (Heroes) premiered : string (2005-03-04) status : string (Continuing) - status of a TVshow code : string (tt0110293) - IMDb code aired : string (2008-12-07) credits : string (Andy Kaufman) - writing credits lastplayed : string (%Y-%m-%d %h:%m:%s = 2009-04-05 23:16:04) album : string (The Joshua Tree) votes : string (12345 votes) trailer : string (/home/user/trailer.avi) """ infoLabels = {} for video_info_name in item.infos.keys(): infoLabels[video_info_name] = item[video_info_name] infoLabels['title'] = title liz.setInfo('video', infoLabels) url = urllib.unquote_plus(item['url']) liz.setPath(url) if m_type == 'video': liz.setProperty('IsPlayable','true') if title.startswith('p2pcast'): try: liz.setMimeType('application/vnd.apple.mpegurl') #liz.setContentLookup(False) except: common.showError('Update Kodi to 16+ to view this stream') return None return liz
def showListOptions(self,argv=None): params = self.parser.getParams() mode = self.parser.getIntParam(params, "mode") name = self.parser.getParam(params, "name") service = self.parser.getParam(params, "service") self.addon = Addon(scriptID, argv) print("MMMMMMMM",mode,params) mymodes = [common.Mode2.VIEW ,common.Mode2.PLAY, common.Mode2.ADDTOFAVOURITES, common.Mode2.EXECUTE] base = argv[0] handle = int(argv[1]) parameter = argv[2] self.base = base self.handle = handle paramstring = urllib.unquote_plus(parameter) #self.log.info(paramstring) #self.log.info('Base: '+ base) #self.log.info('Handle: '+ str(handle)) #self.log.info('Parameter: '+ parameter) #self.log.info('LEN: ' + str(len(paramstring))) #self.log.info('mode: ' + str(mode)) if mode == None and name == None and service == None: self.log.info('Wyświetlam kategorie') self.CATEGORIES() #self.LIST(MENU_TABLE) elif mode == 1: self.LIST(TV_ONLINE_TABLE) elif mode == 4: self.LIST(FUN_ONLINE_TABLE) elif mode == 19: self.LIST(SPORT_ONLINE_TABLE) elif mode == 2: self.LIST(FILM_ONLINE_TABLE) elif mode == 3: self.LIST(SERIALE_ONLINE_TABLE) elif mode == 20: self.log.info('Wyświetlam ustawienia') self.settings.showSettings() elif mode == 30: self.LIBRTMP() #elif mode == 30 and category=='update': # self.DLLIBRTMP(name,murl) elif mode in mymodes: try: # if addon is started listItemPath = xbmcUtils.getListItemPath() if not listItemPath.startswith(self.base): if not('mode=' in paramstring and not 'mode=110&' in paramstring): xbmcplugin.setPluginFanart(self.handle, common.Paths.pluginFanart) #if common.getSetting('autoupdate') == 'true': # self.update() # Main Menu if len(paramstring) <= 9: mainMenu = ListItem.create() mainMenu['url'] = self.MAIN_MENU_FILE tmpList = self.parseView(mainMenu) if tmpList: self.currentlist = tmpList else: [mode, item] = self._parseParameters() print("MMMMMMMM",mode,mydump(item)) # switch(mode) if mode == common.Mode2.VIEW: tmpList = self.parseView(item) print("MMMMMMMM",item,vars(item)) if tmpList: self.currentlist = tmpList count = len(self.currentlist.items) if count == 1: # Autoplay single video autoplayEnabled = ptv.getSetting('autoplay') == 'true' if autoplayEnabled: videos = self.currentlist.getVideos() if len(videos) == 1: self.playVideo(videos[0], True) elif mode == common.Mode2.ADDITEM: tmp = os.path.normpath(paramstring.split('url=')[1]) if tmp: suffix = tmp.split(os.path.sep)[-1] tmp = tmp.replace(suffix,'') + urllib.quote_plus(suffix) if self.favouritesManager.add(tmp): xbmc.executebuiltin('Container.Refresh()') elif mode in [common.Mode2.ADDTOFAVOURITES, common.Mode2.REMOVEFROMFAVOURITES, common.Mode2.EDITITEM]: if mode == common.Mode2.ADDTOFAVOURITES: self.favouritesManager.addItem(item) elif mode == common.Mode2.REMOVEFROMFAVOURITES: self.favouritesManager.removeItem(item) xbmc.executebuiltin('Container.Refresh()') elif mode == common.Mode2.EDITITEM: if self.favouritesManager.editItem(item): xbmc.executebuiltin('Container.Refresh()') elif mode == common.Mode2.PLAY: self.playVideo(item) except Exception, e: common.showError('Error running Mrknow') self.log.info('Error running Mrknow. Reason:' + str(e))
def parseView(self, lItem): def endOfDirectory(succeeded=True): xbmcplugin.endOfDirectory(handle=self.handle, succeeded=succeeded, cacheToDisc=True) if not lItem: endOfDirectory(False) return None if lItem['type'] == 'search': search_phrase = self.getSearchPhrase() if not search_phrase: common.log("search canceled") endOfDirectory(False) return None else: lItem['type'] = 'rss' lItem['url'] = lItem['url'] % (urllib.quote_plus(search_phrase)) url = lItem['url'] if url == common.Paths.customModulesFile: self.customModulesManager.getCustomModules() tmpList = None result = self.parser.parse(lItem) if result.code == ParsingResult.Code.SUCCESS: tmpList = result.list elif result.code == ParsingResult.Code.CFGFILE_NOT_FOUND: common.showError("Cfg file not found") endOfDirectory(False) return None elif result.code == ParsingResult.Code.CFGSYNTAX_INVALID: common.showError("Cfg syntax invalid") endOfDirectory(False) return None elif result.code == ParsingResult.Code.WEBREQUEST_FAILED: common.showError("Web request failed") if len(result.list.items) > 0: tmpList = result.list else: endOfDirectory(False) return None # if it's the main menu, add folder 'Favourites' and 'Custom Modules if url == self.MAIN_MENU_FILE: tmp = ListItem.create() tmp['title'] = 'Favourites' tmp['type'] = 'rss' tmp['icon'] = os.path.join(common.Paths.imgDir, 'bookmark.png') tmp['url'] = str(common.Paths.favouritesFile) tmpList.items.insert(0, tmp) #tmp = ListItem.create() #tmp['title'] = '[COLOR red]Custom Modules[/COLOR]' #tmp['type'] = 'rss' #tmp['url'] = os.path.join(common.Paths.customModulesDir, 'custom.cfg') #tmpList.items.insert(0, tmp) # if it's the favourites menu, add item 'Add item' elif url == common.Paths.favouritesFile or url.startswith('favfolders'): if url.startswith('favfolders'): url = os.path.normpath(os.path.join(common.Paths.favouritesFolder, url)) tmp = ListItem.create() tmp['title'] = 'Add item...' tmp['type'] = 'command' tmp['icon'] = os.path.join(common.Paths.imgDir, 'bookmark_add.png') action = 'RunPlugin(%s)' % (self.base + '?mode=' + str(Mode.ADDITEM) + '&url=' + url) tmp['url'] = action tmpList.items.append(tmp) # if it's the custom modules menu, add item 'more...' elif url == common.Paths.customModulesFile: tmp = ListItem.create() tmp['title'] = 'more...' tmp['type'] = 'command' #tmp['icon'] = os.path.join(common.Paths.imgDir, 'bookmark_add.png') action = 'RunPlugin(%s)' % (self.base + '?mode=' + str(Mode.DOWNLOADCUSTOMMODULE) + '&url=') tmp['url'] = action tmpList.items.append(tmp) # Create menu or play, if it's a single video and autoplay is enabled proceed = False count = len(tmpList.items) if count == 0: if url.startswith('favfolders'): proceed = True else: common.showInfo('No stream available') elif count > 0 and not (common.getSetting('autoplay') == 'true' and count == 1 and len(tmpList.getVideos()) == 1): # sort methods sortKeys = tmpList.sort.split('|') setSortMethodsForCurrentXBMCList(self.handle, sortKeys) # Add items to XBMC list for m in tmpList.items: self.addListItem(m, len(tmpList.items)) proceed = True endOfDirectory(proceed) common.log('End of directory') return tmpList
def showListOptions(self, argv=None): params = self.parser.getParams() mode = self.parser.getIntParam(params, "mode") name = self.parser.getParam(params, "name") service = self.parser.getParam(params, "service") self.addon = Addon(scriptID, argv) #print("MMMMMMMM",mode,params) mymodes = [ common.Mode2.VIEW, common.Mode2.PLAY, common.Mode2.ADDTOFAVOURITES, common.Mode2.EXECUTE ] mymodes2 = [common.Mode3.VIEW, common.Mode3.PLAY] base = argv[0] handle = int(argv[1]) parameter = argv[2] self.base = base self.handle = handle paramstring = urllib.unquote_plus(parameter) self.log.info(paramstring) self.log.info('Base: ' + base) self.log.info('Handle: ' + str(handle)) self.log.info('Parameter: ' + parameter) self.log.info('LEN: ' + str(len(paramstring))) self.log.info('mode: ' + str(mode)) if mode == None and name == None and service == None: self.log.info('Wyświetlam kategorie') self.CATEGORIES() #self.LIST(MENU_TABLE) elif mode == 1: self.LIST(TV_ONLINE_TABLE) elif mode == 4: self.LIST(FUN_ONLINE_TABLE) elif mode == 2: self.LIST(FILM_ONLINE_TABLE) elif mode == 3: self.LIST(SERIALE_ONLINE_TABLE) elif mode == 5: self.LIST(DOC_ONLINE_TABLE) elif mode == 6: self.LIST(VOD_ONLINE_TABLE) elif mode == 20: self.log.info('Wyświetlam ustawienia') self.settings.showSettings() elif mode == 30: self.LIBRTMP() #elif mode == 30 and category=='update': # self.DLLIBRTMP(name,murl) elif mode in mymodes: #try: # if addon is started listItemPath = xbmcUtils.getListItemPath() if not listItemPath.startswith(self.base): if not ('mode=' in paramstring and not 'mode=110&' in paramstring): xbmcplugin.setPluginFanart(self.handle, common.Paths.pluginFanart) #if common.getSetting('autoupdate') == 'true': # self.update() # Main Menu if len(paramstring) <= 9: mainMenu = ListItem.create() mainMenu['url'] = self.MAIN_MENU_FILE tmpList = self.parseView(mainMenu) if tmpList: self.currentlist = tmpList else: [mode, item] = self._parseParameters() #print("MMMMMMMM",mode,mydump(item)) # switch(mode) if mode == common.Mode2.VIEW: tmpList = self.parseView(item) #print("MMMMMMMM",item,vars(item)) if tmpList: self.currentlist = tmpList count = len(self.currentlist.items) if count == 1: # Autoplay single video autoplayEnabled = ptv.getSetting( 'autoplay') == 'true' if autoplayEnabled: videos = self.currentlist.getVideos() if len(videos) == 1: self.playVideo(videos[0], True) elif mode == common.Mode2.ADDITEM: tmp = os.path.normpath(paramstring.split('url=')[1]) if tmp: suffix = tmp.split(os.path.sep)[-1] tmp = tmp.replace(suffix, '') + urllib.quote_plus(suffix) if self.favouritesManager.add(tmp): xbmc.executebuiltin('Container.Refresh()') elif mode in [ common.Mode2.ADDTOFAVOURITES, common.Mode2.REMOVEFROMFAVOURITES, common.Mode2.EDITITEM ]: if mode == common.Mode2.ADDTOFAVOURITES: self.favouritesManager.addItem(item) elif mode == common.Mode2.REMOVEFROMFAVOURITES: self.favouritesManager.removeItem(item) xbmc.executebuiltin('Container.Refresh()') elif mode == common.Mode2.EDITITEM: if self.favouritesManager.editItem(item): xbmc.executebuiltin('Container.Refresh()') elif mode == common.Mode2.EXECUTE: self.executeItem(item) elif mode == common.Mode2.PLAY: self.playVideo(item) #except Exception, e: # common.showError('Error running Mrknow') # self.log.info('Error running Mrknow. m1 Reason:' + str(e)) elif mode in mymodes2: try: # if addon is started listItemPath = xbmcUtils.getListItemPath() if not listItemPath.startswith(self.base): if not ('mode=' in paramstring and not 'mode=210&' in paramstring): xbmcplugin.setPluginFanart(self.handle, common.Paths.pluginFanart) #if common.getSetting('autoupdate') == 'true': # self.update() # Main Menu if len(paramstring) <= 9: mainMenu = ListItem.create() mainMenu['url'] = self.SPORT_MENU_FILE tmpList = self.parseView(mainMenu) if tmpList: self.currentlist = tmpList else: [mode, item] = self._parseParameters() #print("MMMMMMMM",mode,mydump(item)) # switch(mode) if mode == common.Mode2.VIEW: tmpList = self.parseView(item) #print("MMMMMMMM",item,vars(item)) if tmpList: self.currentlist = tmpList count = len(self.currentlist.items) if count == 1: # Autoplay single video autoplayEnabled = ptv.getSetting( 'autoplay') == 'true' if autoplayEnabled: videos = self.currentlist.getVideos() if len(videos) == 1: self.playVideo(videos[0], True) except Exception, e: common.showError('Error running Mrknow') self.log.info('Error running Mrknow. m2 Reason:' + str(e))
def run(self, argv=None): self.addon = Addon('plugin.video.SportsDevil', argv) common.log('SportsDevil running') base = argv[0] handle = int(argv[1]) parameter = argv[2] self.base = base self.handle = handle paramstring = urllib.unquote_plus(parameter) common.log(paramstring) try: # if addon is started listItemPath = xbmcUtils.getListItemPath() if not listItemPath.startswith(self.base): if not ('mode=' in paramstring and not 'mode=1&' in paramstring): xbmcplugin.setPluginFanart(self.handle, common.Paths.pluginFanart) self.clearCache() # Main Menu if len(paramstring) <= 2: mainMenu = ListItem.create() mainMenu['url'] = self.MAIN_MENU_FILE tmpList = self.parseView(mainMenu) if tmpList: self.currentlist = tmpList else: [mode, item] = self._parseParameters() # switch(mode) if mode == Mode.VIEW: tmpList = self.parseView(item) if tmpList: self.currentlist = tmpList count = len(self.currentlist.items) if count == 1: # Autoplay single video autoplayEnabled = common.getSetting( 'autoplay') == 'true' if autoplayEnabled: videos = self.currentlist.getVideos() if len(videos) == 1: self.playVideo(videos[0], True) elif mode == Mode.ADDITEM: tmp = os.path.normpath(paramstring.split('url=')[1]) if tmp: suffix = tmp.split(os.path.sep)[-1] tmp = tmp.replace(suffix, '') + urllib.quote_plus(suffix) if self.favouritesManager.add(tmp): xbmc.executebuiltin('Container.Refresh()') elif mode in [ Mode.ADDTOFAVOURITES, Mode.REMOVEFROMFAVOURITES, Mode.EDITITEM ]: if mode == Mode.ADDTOFAVOURITES: self.favouritesManager.addItem(item) elif mode == Mode.REMOVEFROMFAVOURITES: self.favouritesManager.removeItem(item) xbmc.executebuiltin('Container.Refresh()') elif mode == Mode.EDITITEM: if self.favouritesManager.editItem(item): xbmc.executebuiltin('Container.Refresh()') elif mode == Mode.EXECUTE: self.executeItem(item) elif mode == Mode.PLAY: self.playVideo(item) elif mode == Mode.WEBDRIVER: url = urllib.quote(item['url']) title = item['title'] self.playWebDriver(url, title) elif mode == Mode.QUEUE: self.queueAllVideos(item) elif mode == Mode.CHROME: url = urllib.quote(item['url']) title = item['title'] self.launchChrome(url, title) elif mode == Mode.INSTALLADDON: success = install(item['url']) if success: xbmc.sleep(100) if xbmcUtils.getCurrentWindowXmlFile( ) == 'DialogAddonSettings.xml': # workaround to update settings dialog common.setSetting('', '') except Exception, e: common.showError('Error running SportsDevil') common.log('Error running SportsDevil. Reason:' + str(e))
def createXBMCListItem(self, item): title = item['title'] m_type = item['type'] icon = item['icon'] if icon and not icon.startswith('http'): try: if not fu.fileExists(icon): tryFile = os.path.join(common.Paths.modulesDir, icon) if not fu.fileExists(tryFile): tryFile = os.path.join(common.Paths.customModulesDir, icon) if fu.fileExists(tryFile): icon = tryFile except: pass if not icon: if m_type == 'video': icon = common.Paths.defaultVideoIcon else: icon = common.Paths.defaultCategoryIcon fanart = item['fanart'] if not fanart: fanart = common.Paths.pluginFanart liz = xbmcgui.ListItem(title) try: liz.setArt({'thumb': icon, 'fanart': fanart}) except: liz.setProperty('fanart_image', fanart) liz.setThumbnailImage(icon) common.log('main.py:374: setThumbnailImage is deprecated') """ General Values that apply to all types: count : integer (12) - can be used to store an id for later, or for sorting purposes size : long (1024) - size in bytes date : string (%d.%m.%Y / 01.01.2009) - file date Video Values: genre : string (Comedy) year : integer (2009) episode : integer (4) season : integer (1) top250 : integer (192) tracknumber : integer (3) rating : float (6.4) - range is 0..10 watched : depreciated - use playcount instead playcount : integer (2) - number of times this item has been played overlay : integer (2) - range is 0..8. See GUIListItem.h for values cast : list (Michal C. Hall) castandrole : list (Michael C. Hall|Dexter) director : string (Dagur Kari) mpaa : string (PG-13) plot : string (Long Description) plotoutline : string (Short Description) title : string (Big Fan) originaltitle : string (Big Fan) duration : string (3:18) studio : string (Warner Bros.) tagline : string (An awesome movie) - short description of movie writer : string (Robert D. Siegel) tvshowtitle : string (Heroes) premiered : string (2005-03-04) status : string (Continuing) - status of a TVshow code : string (tt0110293) - IMDb code aired : string (2008-12-07) credits : string (Andy Kaufman) - writing credits lastplayed : string (%Y-%m-%d %h:%m:%s = 2009-04-05 23:16:04) album : string (The Joshua Tree) votes : string (12345 votes) trailer : string (/home/user/trailer.avi) """ infoLabels = {} for video_info_name in item.infos.keys(): infoLabels[video_info_name] = item[video_info_name] infoLabels['title'] = title liz.setInfo('video', infoLabels) url = urllib.unquote_plus(item['url']) liz.setPath(url) if m_type == 'video': liz.setProperty('IsPlayable', 'true') if title.startswith('castflash'): try: liz.setMimeType('application/vnd.apple.mpegurl') liz.setContentLookup(False) except: common.showError('Update Kodi to 16+ to view this stream') return None if title.startswith('nohead'): try: liz.setMimeType('video/x-mpegts') liz.setContentLookup(False) except: pass return liz
def run(self, paramstring): common.log('SportsDevil running') try: # Main Menu if len(paramstring) <= 2: mainMenu = ListItem.fromUrl(self.MAIN_MENU_FILE) tmpList = self.parseView(mainMenu) if tmpList: self.currentlist = tmpList # if addon is started currFolder = xbmcUtils.getCurrentFolderPath() if not currFolder.startswith(self.base): xbmcplugin.setPluginFanart(self.handle, common.Paths.pluginFanart) self.clearCache() if common.getSetting('autoupdate') == 'true': self.update() else: params = paramstring[1:] [mode, item] = self._parseParameters(params) # switch(mode) if mode == Mode.VIEW: tmpList = self.parseView(item) if tmpList: self.currentlist = tmpList count = len(self.currentlist.items) if count == 1: # Autoplay single video autoplayEnabled = common.getSetting('autoplay') == 'true' if autoplayEnabled: videos = self.currentlist.getVideos() if len(videos) == 1: self.playVideo(videos[0], True) elif mode == Mode.ADDITEM: if self.favouritesManager.addItem(): xbmc.executebuiltin('Container.Refresh()') elif mode in [Mode.ADDTOFAVOURITES, Mode.REMOVEFROMFAVOURITES, Mode.EDITITEM]: if mode == Mode.ADDTOFAVOURITES: self.favouritesManager.addToFavourites(item) elif mode == Mode.REMOVEFROMFAVOURITES: self.favouritesManager.removeItem(item) xbmc.executebuiltin('Container.Refresh()') elif mode == Mode.EDITITEM: if self.favouritesManager.editItem(item): xbmc.executebuiltin('Container.Refresh()') elif mode == Mode.EXECUTE: self.executeItem(item) elif mode == Mode.PLAY: self.playVideo(item) elif mode == Mode.QUEUE: self.queueAllVideos(item) elif mode == Mode.DOWNLOAD: url = urllib.unquote(item['url']) title = item['title'] self.downloadVideo(url, title) elif mode == Mode.REMOVEFROMCUSTOMMODULES: self.removeCustomModule(item) elif mode == Mode.UPDATE: self.update() elif mode == Mode.DOWNLOADCUSTOMMODULE: self.downloadCustomModule() except Exception, e: if common.enable_debug: traceback.print_exc(file = sys.stdout) common.showError('Error running SportsDevil.\n\nReason:\n' + str(e))
def run(self, paramstring): common.log('SportsDevil running') try: # Main Menu if len(paramstring) <= 2: # Set fanart xbmcplugin.setPluginFanart(self.handle, common.Paths.pluginFanart) # Clear cache self.clearCache() # Show Main Menu tmpList = self.parseView(self.MAIN_MENU_FILE) if tmpList: self.currentlist = tmpList self.curr_file = tmpList.cfg else: params = paramstring mode, codedItem = params.split('&',1) mode = int(mode.split('=')[1]) codedItem = codedItem[4:] item = decodeUrl(codedItem) # switch(mode) if mode == Mode.VIEW: tmpList = self.parseView(codedItem) if tmpList: self.currentlist = tmpList self.curr_file = tmpList.cfg count = len(self.currentlist.items) if count == 0: common.showInfo('No stream available') elif count == 1: # Autoplay single video autoplayEnabled = common.getSetting('autoplay') == 'true' if autoplayEnabled: videos = self.currentlist.getVideos() if len(videos) == 1: self.playVideo(videos[0], True) elif mode == Mode.ADDITEM: if self.favouritesManager.addItem(): xbmc.executebuiltin('Container.Refresh()') elif mode in [Mode.ADDTOFAVOURITES, Mode.REMOVEFROMFAVOURITES, Mode.EDITITEM]: if mode == Mode.ADDTOFAVOURITES: self.favouritesManager.addToFavourites(item) elif mode == Mode.REMOVEFROMFAVOURITES: self.favouritesManager.removeItem(item) xbmc.executebuiltin('Container.Refresh()') elif mode == Mode.EDITITEM: if self.favouritesManager.editItem(item): xbmc.executebuiltin('Container.Refresh()') elif mode == Mode.EXECUTE: url = item['url'] if url.find('(') > -1: xbmcCommand = parseText(url,'([^\(]*).*') if xbmcCommand.lower() in ['activatewindow', 'runscript', 'runplugin', 'playmedia']: if xbmcCommand.lower() == 'activatewindow': params = parseText(url, '.*\(\s*(.+?)\s*\).*').split(',') for i in range(len(params)-1,-1,-1): p = params[i] if p == 'return': params.remove(p) path = enc.unescape(params[len(params)-1]) xbmc.executebuiltin('Container.Update(' + path + ')') return xbmc.executebuiltin(enc.unescape(url)) elif mode == Mode.PLAY: self.playVideo(item) elif mode == Mode.QUEUE: dia = DialogProgress() dia.create('SportsDevil', 'Get videos...' + item['title']) dia.update(0) items = self.getVideos(item, dia) if items: for it in items: item = self.createXBMCListItem(it) uc = sys.argv[0] + '?mode=' + str(Mode.PLAY) + '&url=' + codeUrl(it) item.setProperty('IsPlayable', 'true') item.setProperty('IsFolder','false') xbmc.PlayList(1).add(uc, item) resultLen = len(items) msg = 'Queued ' + str(resultLen) + ' video' if resultLen > 1: msg += 's' dia.update(100, msg) xbmc.sleep(500) dia.update(100, msg,' ',' ') else: dia.update(0, 'No items found',' ') xbmc.sleep(700) dia.close() elif mode == Mode.DOWNLOAD: url = urllib.unquote(item['url']) title = item['title'] self.downloadVideo(url, title) except Exception, e: if common.enable_debug: traceback.print_exc(file = sys.stdout) common.showError('Error running SportsDevil.\n\nReason:\n' + str(e))
def parseView(self, url): lItem = decodeUrl(url) if lItem['type'] == 'search': search_phrase = self.getSearchPhrase() if not search_phrase: common.log("search canceled") self.__endOfDirectory(False) return None lItem['type'] = 'rss' lItem['url'] = lItem['url'] % (urllib.quote_plus(search_phrase)) url = lItem['url'] tmpList = self.parser.parse(lItem) if not tmpList: common.showError("Parsing failed") self.__endOfDirectory(False) return None # Remove duplicates urls = [] for i in range(len(tmpList.items)-1,-1,-1): item = tmpList.items[i] tmpUrl = item['url'] tmpCfg = item['cfg'] if not tmpCfg: tmpCfg = '' if not urls.__contains__(tmpUrl + '|' + tmpCfg): urls.append(tmpUrl + '|' + tmpCfg) else: tmpList.items.remove(item) # SHOW ITEMS IN GUI # if it's the main menu, add folder 'Favourites' if url == self.MAIN_MENU_FILE: # Add Favourites tmp = CListItem() tmp['title'] = 'Favourites' tmp['type'] = 'rss' tmp['url'] = str(common.Paths.favouritesFile) tmpList.items.insert(0,tmp) # if it's the favourites menu, add item 'Add item' elif url == common.Paths.favouritesFile: tmp = CListItem() tmp['title'] = 'Add item...' tmp['type'] = 'command' action = 'RunPlugin(%s)' % (sys.argv[0] + '?mode=' + str(Mode.ADDITEM) + '&url=') tmp['url'] = action tmpList.items.append(tmp) count = len(tmpList.items) if count > 0 and not (common.getSetting('autoplay') == 'true' and count == 1 and len(tmpList.getVideos()) == 1): # sort methods sortKeys = tmpList.sort.split('|') setSortMethodsForCurrentXBMCList(self.handle, sortKeys) # Add items to XBMC list for m in tmpList.items: self.addListItem(m, len(tmpList.items)) self.__endOfDirectory() common.log('End of directory') else: self.__endOfDirectory(False) return tmpList
def run(self, argv=None): self.addon = Addon('plugin.video.ViendoKodiStreaming', argv) common.log('ViendoKodiStreaming running') base = argv[0] handle = int(argv[1]) parameter = argv[2] self.base = base self.handle = handle paramstring = urllib.unquote_plus(parameter) common.log(paramstring) try: # if addon is started listItemPath = xbmcUtils.getListItemPath() if not listItemPath.startswith(self.base): if not ('mode=' in paramstring and not 'mode=1&' in paramstring): xbmcplugin.setPluginFanart(self.handle, common.Paths.pluginFanart) self.clearCache() #if common.getSetting('autoupdate') == 'true': # self.update() # Main Menu if '98VKS' in paramstring: nametorrent = os.path.normpath(paramstring.split('url=')[1]) if nametorrent == 'quasar': addonTorrent = 'item_info_build=plugin://plugin.video.quasar/play?uri=%s' elif nametorrent == 'pulsar': addonTorrent = 'item_info_build=plugin://plugin.video.pulsar/play?uri=%s' elif nametorrent == 'kmediatorrent': addonTorrent = 'item_info_build=plugin://plugin.video.kmediatorrent/play/%s' elif nametorrent == "torrenter": addonTorrent = 'item_info_build=plugin://plugin.video.torrenter/?action=playSTRM&url=%s¬_download_only=True' elif nametorrent == "yatp": addonTorrent = 'item_info_build=plugin://plugin.video.yatp/?action=play&torrent=%s' else: addonTorrent = 'item_info_build=plugin://plugin.video.xbmctorrent/play/%s' cFichero = common.Paths.catchersDir + '/' + 'torrent.txt' outfile = open(cFichero, 'w') # Indicamos el valor 'w'. outfile.write('item_info_name=url\n' + 'item_info_from=@PARAM1@\n' + addonTorrent + '\n') outfile.close() common.showInfo('Para los torrent se utilizará ' + nametorrent) elif len(paramstring) <= 2: mainMenu = ListItem.create() mainMenu['url'] = self.MAIN_MENU_FILE tmpList = self.parseView(mainMenu) if tmpList: self.currentlist = tmpList else: [mode, item] = self._parseParameters() # switch(mode) if mode == Mode.VIEW: tmpList = self.parseView(item) if tmpList: self.currentlist = tmpList count = len(self.currentlist.items) if count == 1: # Autoplay single video autoplayEnabled = common.getSetting( 'autoplay') == 'true' if autoplayEnabled: videos = self.currentlist.getVideos() if len(videos) == 1: self.playVideo(videos[0], True) elif mode == Mode.ADDITEM: tmp = os.path.normpath(paramstring.split('url=')[1]) if tmp: suffix = tmp.split(os.path.sep)[-1] tmp = tmp.replace(suffix, '') + urllib.quote_plus(suffix) if self.favouritesManager.add(tmp): xbmc.executebuiltin('Container.Refresh()') elif mode in [ Mode.ADDTOFAVOURITES, Mode.REMOVEFROMFAVOURITES, Mode.EDITITEM ]: if mode == Mode.ADDTOFAVOURITES: self.favouritesManager.addItem(item) elif mode == Mode.REMOVEFROMFAVOURITES: self.favouritesManager.removeItem(item) xbmc.executebuiltin('Container.Refresh()') elif mode == Mode.EDITITEM: if self.favouritesManager.editItem(item): xbmc.executebuiltin('Container.Refresh()') elif mode == Mode.EXECUTE: self.executeItem(item) elif mode == Mode.PLAY: self.playVideo(item) elif mode == Mode.WEBDRIVER: url = urllib.quote(item['url']) title = item['title'] self.playWebDriver(url, title) elif mode == Mode.QUEUE: self.queueAllVideos(item) elif mode == Mode.DOWNLOAD: url = urllib.unquote(item['url']) title = item['title'] self.downloadVideo(url, title) elif mode == Mode.CHROME: url = urllib.quote(item['url']) title = item['title'] self.launchChrome(url, title) elif mode == Mode.REMOVEFROMCUSTOMMODULES: self.removeCustomModule(item) #elif mode == Mode.UPDATE: # self.update() elif mode == Mode.SAY: #title = item['title'] url = "" elif mode == Mode.DOWNLOADCUSTOMMODULE: self.downloadCustomModule() elif mode == Mode.INSTALLADDON: success = install(item['url']) if success: xbmc.sleep(100) if xbmcUtils.getCurrentWindowXmlFile( ) == 'DialogAddonSettings.xml': # workaround to update settings dialog common.setSetting('', '') except Exception, e: common.showError('Error running ViendoKodiStreaming') common.log('Error running ViendoKodiStreaming. Reason:' + str(e))