def ChangeWatched(imdb_id, video_type, name, season, episode, year='', watched=''): from metahandler import metahandlers metaget = metahandlers.MetaData(False) metaget.change_watched(video_type, name, imdb_id, season=season, episode=episode, year=year, watched=watched)
def getSeasonIndicators2(tvshowtitle, imdb, tvdb, season): try: import sys, xbmc from resources.lib.modules import control if not trakt.getTraktIndicatorsInfo() == False: raise Exception() total = '6' from metahandler import metahandlers from resources.lib.indexers import episodes if not int('%01d' % int(season)) > 0: raise Exception() metaget = metahandlers.MetaData(preparezip=False) name = control.addonInfo('name') imdb = imdb.encode('utf-8') tvdb = tvdb.encode('utf-8') season = season.encode('utf-8') # metaget.get_meta('tvshow', '', imdb_id=imdb) items = episodes.episodes().get(tvshowtitle, '0', imdb, tvdb, '0', idx=False) try: items = [ i for i in items if int('%01d' % int(season)) == int('%01d' % int(i['season'])) ] except: pass season_playcount = [] for i in range(len(items)): season, episode = items[i]['season'], items[i]['episode'] playcount = metaget._get_watched_episode({ 'imdb_id': imdb, 'season': season, 'episode': episode, 'premiered': '' }) playcount = str(playcount) if playcount == '7': play = '1' else: play = '0' season_playcount.append(playcount) season_file = control.seasons_meta try: from sqlite3 import dbapi2 as database except: from pysqlite2 import dbapi2 as database try: control.makeFile(control.dataPath) dbcon = database.connect(season_file) dbcur = dbcon.cursor() dbcur.execute("CREATE TABLE IF NOT EXISTS season_meta (" "imdb TEXT, " "tvdb TEXT, " "season TEXT, " "playcount TEXT, " "UNIQUE(imdb, tvdb, season, playcount)" ");") dbcon.commit() except: pass if "6" in season_playcount: total = '6' dbcon = database.connect(season_file) dbcur = dbcon.cursor() dbcur.execute( "DELETE FROM season_meta WHERE imdb = '%s' AND season = '%s'" % (imdb, season)) dbcur.execute("INSERT INTO season_meta Values (?, ?, ?, ?)", (imdb, tvdb, season, total)) dbcon.commit() elif int(len(season_playcount)) > 0: if not "6" in season_playcount: total = '7' dbcon = database.connect(season_file) dbcur = dbcon.cursor() dbcur.execute( "DELETE FROM season_meta WHERE imdb = '%s' AND season = '%s'" % (imdb, season)) dbcur.execute("INSERT INTO season_meta Values (?, ?, ?, ?)", (imdb, tvdb, season, total)) dbcon.commit() # metaget.change_watched('season', name='', imdb_id=imdb, season=season, watched=int(total)) return total except: return total
def marktvshows(tvshowtitle, imdb, tvdb, watched): try: import sys, xbmc if not trakt.getTraktIndicatorsInfo() == False: raise Exception() watched = int(watched) from metahandler import metahandlers from resources.lib.indexers import episodes imdb = imdb.encode('utf-8') metaget = metahandlers.MetaData(preparezip=False) name = control.addonInfo('name') dialog = control.progressDialogBG dialog.create(str(name), str(tvshowtitle)) dialog.update(0, str(name), str(tvshowtitle)) items = episodes.episodes().get(tvshowtitle, '0', imdb, tvdb, '0', idx=False) try: items = [i for i in items] except: pass items = [{ 'label': '%s S%02dE%02d' % (tvshowtitle, int(i['season']), int(i['episode'])), 'season': int('%01d' % int(i['season'])), 'episode': int('%01d' % int(i['episode'])) } for i in items] season_file = control.seasons_meta try: from sqlite3 import dbapi2 as database except: from pysqlite2 import dbapi2 as database try: if watched == 6: total = '6' dbcon = database.connect(season_file) dbcur = dbcon.cursor() dbcur.execute("DELETE FROM season_meta WHERE imdb = '%s'" % (imdb)) dbcon.commit() except: pass for i in range(len(items)): if xbmc.abortRequested == True: return sys.exit() dialog.update(int((100 / float(len(items))) * i), str(name), str(items[i]['label'])) season, episode = items[i]['season'], items[i]['episode'] metaget.get_episode_meta('', imdb, season, episode) metaget.change_watched('episode', '', imdb, season=season, episode=episode, year='', watched=watched) try: if watched == 7: total = '7' dbcon = database.connect(season_file) dbcur = dbcon.cursor() dbcur.execute( "DELETE FROM season_meta WHERE imdb = '%s' AND season = '%s'" % (imdb, season)) dbcur.execute( "INSERT INTO season_meta Values (?, ?, ?, ?)", (imdb, tvdb, season, total)) dbcon.commit() except: pass try: dialog.close() except: pass except: try: dialog.close() except: pass try: import sys, xbmc watched = int(watched) imdb = imdb.encode('utf-8') from metahandler import metahandlers from resources.lib.indexers import episodes metaget = metahandlers.MetaData(preparezip=False) metaget.get_meta('tvshow', name='', imdb_id=imdb) metaget._update_watched(imdb, 'tvshow', watched) metaget.change_watched('tvshow', '', imdb, watched=watched) except: pass control.refresh()
def getMeta(self, mediaType, imdbID='', TVShowTitle='', season='', episode='', mode='add'): ''' Fetch metainformations for GuiElement. Args: mediaType(str): 'movie'/'tvshow'/'season'/'episode' Kwargs: imdbID (str) : TVShowTitle (str) : mode (str) : 'add'/'replace' defines if fetched metainformtions should be added to existing informations, or if they should replace them. ''' if cConfig().getSetting('metahandler') == 'false': return False if not self._mediaType: self.setMediaType(mediaType) if not mode in ['add', 'replace']: logger.info('Wrong meta set mode') if not season and self._season: season = self._season if not episode and self._episode: episode = self._episode try: from metahandler import metahandlers except: import traceback logger.info(traceback.format_exc()) return False if not self._mediaType: logger.info( 'Could not get MetaInformations for %s, mediaType not defined' % self.getTitle()) return False oMetaget = metahandlers.MetaData() if self._mediaType == 'movie' or self._mediaType == 'tvshow': meta = oMetaget.get_meta(self._mediaType, self.__sTitle) #if self._mediaType == 'tvshow' and not self.__aItemValues['TVShowTitle']: # self.setTVShowTitle(self.__sTitle) elif self._mediaType == 'season': meta = oMetaget.get_seasons(TVShowTitle, imdbID, str(season)) elif self._mediaType == 'episode': meta = oMetaget.get_episode_meta(TVShowTitle, imdbID, str(season), str(episode)) else: return False if not meta: return False if self._mediaType == 'season': meta = meta[0] if mode == 'replace': self.setItemValues(meta) if not meta['cover_url'] == '': self.setThumbnail(meta['cover_url']) if not meta['backdrop_url'] == '': self.setFanart(meta['backdrop_url']) else: meta.update(self.__aItemValues) meta.update(self.__aProperties) if meta['cover_url'] != '' and self.__sThumbnail == '': self.setThumbnail(meta['cover_url']) if meta['backdrop_url'] != '' and self.__sFanart == self.DEFAULT_FANART: self.setFanart(meta['backdrop_url']) self.setItemValues(meta) if meta['imdb_id']: self._imdbID = meta['imdb_id'] self._isMetaSet = True return meta
def tvshows(tvshowtitle, imdb, tvdb, season, watched): control.busy() try: import sys, xbmc if not trakt.getTraktIndicatorsInfo() == False: raise Exception() from metahandler import metahandlers from resources.lib.indexers import episodes metaget = metahandlers.MetaData(preparezip=False) name = control.addonInfo('name') dialog = control.progressDialogBG dialog.create(str(name), str(tvshowtitle)) dialog.update(0, str(name), str(tvshowtitle)) metaget.get_meta('tvshow', name='', imdb_id=imdb) items = episodes.episodes().get(tvshowtitle, '0', imdb, tvdb, '0', idx=False) try: items = [ i for i in items if int('%01d' % int(season)) == int('%01d' % int(i['season'])) ] except: pass items = [{ 'label': '%s S%02dE%02d' % (tvshowtitle, int(i['season']), int(i['episode'])), 'season': int('%01d' % int(i['season'])), 'episode': int('%01d' % int(i['episode'])) } for i in items] for i in range(len(items)): if xbmc.abortRequested == True: return sys.exit() dialog.update(int((100 / float(len(items))) * i), str(name), str(items[i]['label'])) season, episode = items[i]['season'], items[i]['episode'] metaget.get_episode_meta('', imdb_id=imdb, season=season, episode=episode) metaget.change_watched('episode', '', imdb_id=imdb, season=season, episode=episode, watched=int(watched)) try: dialog.close() except: pass except: try: dialog.close() except: pass try: if trakt.getTraktIndicatorsInfo() == False: raise Exception() if season: from resources.lib.indexers import episodes items = episodes.episodes().get(tvshowtitle, '0', imdb, tvdb, season, idx=False) items = [(int(i['season']), int(i['episode'])) for i in items] items = [ i[1] for i in items if int('%01d' % int(season)) == int('%01d' % i[0]) ] for i in items: if int(watched) == 7: trakt.markEpisodeAsWatched(tvdb, season, i) else: trakt.markEpisodeAsNotWatched(tvdb, season, i) else: if int(watched) == 7: trakt.markTVShowAsWatched(tvdb) else: trakt.markTVShowAsNotWatched(tvdb) trakt.cachesyncTVShows() except: pass control.refresh()
def subDirectory(name, url, audio, image, fanart, playable, tvshow, content): match = re.compile('<sublink>(.+?)</sublink>').findall(url) if len(match) == 0: return try: title = cleantitle(name).encode('utf-8') data = {'title': title} except: pass try: if not content == 'movies': raise Exception() title = cleantitle(name).encode('utf-8') data = {'title': title} title, year = re.compile('(.+?)[(](\d{4})[)]').findall(name)[0] title = cleantitle(title).encode('utf-8') data = {'title': title, 'year': year} from metahandler import metahandlers metaget = metahandlers.MetaData(preparezip=False) #data = metaget.get_meta('movie', title, year=year) data = cachemeta.get(metaget.get_meta, 24, 'movie', title, '', '', year) metaimage = data['cover_url'] if not metaimage == '': image = metaimage metafanart = data['backdrop_url'] if not metafanart == '': fanart = metafanart except: pass try: if tvshow == '0' and not content == 'episodes': raise Exception() try: title = cleantitle(name).encode('utf-8') data = {'title': title, 'tvshowtitle': tvshow} except: pass try: i = cleaneptitle(tvshow, title) title, season, episode = i[0].encode('utf-8'), i[1], i[2] data = { 'title': title, 'tvshowtitle': tvshow, 'season': season, 'episode': episode } except: pass from metahandler import metahandlers metaget = metahandlers.MetaData(preparezip=False) tvd = metaget.get_meta('tvshow', tvshow) tvd = cachemeta.get(metaget.get_meta, 24, 'tvshow', tvshow, '', '', '') data.update({ 'year': tvd['year'], 'imdb_id': tvd['imdb_id'], 'tvdb_id': tvd['tvdb_id'], 'tvshowtitle': tvd['TVShowTitle'], 'genre': tvd['genre'], 'studio': tvd['studio'], 'status': tvd['status'], 'duration': tvd['duration'], 'rating': tvd['rating'], 'mpaa': tvd['mpaa'], 'plot': tvd['plot'], 'cast': tvd['cast'] }) metafanart = tvd['backdrop_url'] if not metafanart == '': image = fanart = metafanart except: pass for i in range(0, len(match)): url = match[i] label = '%s %s %s' % (name, control.lang(30704).encode('utf-8'), str(i + 1)) addDirectoryItem(label, url, 'resolveUrl', image, image, fanart, '0', content, data, isFolder=False) control.directory(int(sys.argv[1]), cacheToDisc=True)
def i1IiIiiI(name, url, mode, iconimage, itemcount, isFolder=False): if mm == 'true': if not 'COLOR' in name: I1iiIii = name.partition('(') mmmmkK = "" mKmKmkmmkmkKKmk = "" if len(I1iiIii) > 0: mmmmkK = I1iiIii[0] mKmKmkmmkmkKKmk = I1iiIii[2].partition(')') if len(mKmKmkmmkmkKKmk) > 0: mKmKmkmmkmkKKmk = mKmKmkmmkmkKKmk[0] i1I1ii = metahandlers.MetaData() mKKmmk = i1I1ii.get_meta('movie', name=mmmmkK, year=mKmKmkmmkmkKKmk) mKmkmkmmk = sys.argv[0] + "?url=" + urllib.quote_plus( url) + "&site=" + str(mmmkmkKmkmkmK) + "&mode=" + str( mode) + "&name=" + urllib.quote_plus(name) mmmkKmmKKmmk = True mmkKKmkmkmK = xbmcgui.ListItem(name, iconImage=mKKmmk['cover_url'], thumbnailImage=mKKmmk['cover_url']) mmkKKmkmkmK.setInfo(type="Video", infoLabels=mKKmmk) mmkKKmkmkmK.setProperty("IsPlayable", "true") iIiIIIi = [] iIiIIIi.append(('Movie Information', 'XBMC.Action(Info)')) iIiIIIi.append( ('[COLOR white]Add to UK Turk Favourites[/COLOR]', 'XBMC.RunPlugin(%s?mode=6&name=%s&url=%s&iconimage=%s)' % (sys.argv[0], name, url, mKKmmk['cover_url']))) mmkKKmkmkmK.addContextMenuItems(iIiIIIi, replaceItems=True) if not mKKmmk['backdrop_url'] == '': mmkKKmkmkmK.setProperty('fanart_image', mKKmmk['backdrop_url']) else: mmkKKmkmkmK.setProperty('fanart_image', Kmk) mmmkKmmKKmmk = xbmcplugin.addDirectoryItem(handle=int(sys.argv[1]), url=mKmkmkmmk, listitem=mmkKKmkmkmK, isFolder=isFolder, totalItems=itemcount) return mmmkKmmKKmmk else: mKmkmkmmk = sys.argv[0] + "?url=" + urllib.quote_plus( url) + "&site=" + str(mmmkmkKmkmkmK) + "&mode=" + str( mode) + "&name=" + urllib.quote_plus(name) mmmkKmmKKmmk = True mmkKKmkmkmK = xbmcgui.ListItem(name, iconImage=iconimage, thumbnailImage=iconimage) mmkKKmkmkmK.setInfo(type="Video", infoLabels={"Title": name}) mmkKKmkmkmK.setProperty('fanart_image', Kmk) mmkKKmkmkmK.setProperty("IsPlayable", "true") KKmmmkK = [] KKmmmkK.append( ('[COLOR white]Add to UK Turk Favourites[/COLOR]', 'XBMC.RunPlugin(%s?mode=6&name=%s&url=%s&iconimage=%s)' % (sys.argv[0], name, url, iconimage))) mmkKKmkmkmK.addContextMenuItems(items=KKmmmkK, replaceItems=True) mmmkKmmKKmmk = xbmcplugin.addDirectoryItem(handle=int(sys.argv[1]), url=mKmkmkmmk, listitem=mmkKKmkmkmK, isFolder=isFolder) return mmmkKmmKKmmk if 93 - 93: iiIiIiIi
def movieDirectory(self, items, provider=None, lang=None): if items == None or len(items) == 0: return isFolder = True if control.setting('autoplay') == 'false' and control.setting('host_select') == '1' else False isFolder = False if control.window.getProperty('PseudoTVRunning') == 'True' else isFolder playbackMenu = control.lang(30204).encode('utf-8') if control.setting('autoplay') == 'true' else control.lang(30203).encode('utf-8') cacheToDisc = False if not action == 'movieSearch' else True addonPoster, addonBanner = control.addonPoster(), control.addonBanner() addonFanart, settingFanart = control.addonFanart(), control.setting('fanart') sysaddon = sys.argv[0] try: from metahandler import metahandlers metaget = metahandlers.MetaData(tmdb_api_key=self.tmdb_key, preparezip=False) except: pass for i in items: try: label = i['name'] sysname = urllib.quote_plus(label) systitle = urllib.quote_plus(i['title']) imdb, tmdb, year = i['imdb'], i['tmdb'], i['year'] poster, banner, fanart = i['poster'], i['banner'], i['fanart'] if poster == '0': poster = addonPoster if banner == '0' and poster == '0': banner = addonBanner elif banner == '0': banner = poster meta = dict((k,v) for k, v in i.iteritems() if not v == '0') meta.update({'trailer': '%s?action=trailer&name=%s' % (sysaddon, sysname)}) if i['duration'] == '0': meta.update({'duration': '120'}) try: meta.update({'duration': str(int(meta['duration']) * 60)}) except: pass sysmeta = urllib.quote_plus(json.dumps(meta)) url = '%s?action=play&name=%s&title=%s&year=%s&imdb=%s&tmdb=%s&meta=%s&t=%s' % (sysaddon, sysname, systitle, year, imdb, tmdb, sysmeta, self.systime) sysurl = urllib.quote_plus(url) if isFolder == True: url = '%s?action=sources&name=%s&title=%s&year=%s&imdb=%s&tmdb=%s&meta=%s' % (sysaddon, sysname, systitle, year, imdb, tmdb, sysmeta) try: playcount = metaget._get_watched('movie', imdb, '', '') if playcount == 7: meta.update({'playcount': 1, 'overlay': 7}) else: meta.update({'playcount': 0, 'overlay': 6}) except: pass cm = [] cm.append((playbackMenu, 'RunPlugin(%s?action=alterSources&url=%s&meta=%s)' % (sysaddon, sysurl, sysmeta))) cm.append((control.lang(30214).encode('utf-8'), 'RunPlugin(%s?action=trailer&name=%s)' % (sysaddon, sysname))) cm.append((control.lang(30205).encode('utf-8'), 'Action(Info)')) if not action == 'movieSearch': cm.append((control.lang(30206).encode('utf-8'), 'RunPlugin(%s?action=moviePlaycount&title=%s&year=%s&imdb=%s&query=7)' % (sysaddon, systitle, year, imdb))) cm.append((control.lang(30207).encode('utf-8'), 'RunPlugin(%s?action=moviePlaycount&title=%s&year=%s&imdb=%s&query=6)' % (sysaddon, systitle, year, imdb)))# cm.append((control.lang(30212).encode('utf-8'), 'RunPlugin(%s?action=addView&content=movies)' % sysaddon)) item = control.item(label=label, iconImage=poster, thumbnailImage=poster) try: item.setArt({'poster': poster, 'banner': banner}) except: pass if settingFanart == 'true' and not fanart == '0': item.setProperty('Fanart_Image', fanart) elif not addonFanart == None: item.setProperty('Fanart_Image', addonFanart) item.setInfo(type='Video', infoLabels = meta) item.setProperty('Video', 'true') #item.setProperty('IsPlayable', 'true') item.addContextMenuItems(cm, replaceItems=True) control.addItem(handle=int(sys.argv[1]), url=url, listitem=item, isFolder=isFolder) except: pass try: url = items[0]['next'] if url == '': raise Exception() url = '%s?action=movies&url=%s&provider=%s&lang=%s' % (sysaddon, urllib.quote_plus(url), provider, lang) addonNext = control.addonNext() item = control.item(label=control.lang(30213).encode('utf-8'), iconImage=addonNext, thumbnailImage=addonNext) item.addContextMenuItems([], replaceItems=False) if not addonFanart == None: item.setProperty('Fanart_Image', addonFanart) control.addItem(handle=int(sys.argv[1]), url=url, listitem=item, isFolder=True) except: pass control.content(int(sys.argv[1]), 'movies') views.setView('movies', {'skin.confluence': control.viewMode['thumbnails']}) control.directory(int(sys.argv[1]), cacheToDisc=cacheToDisc)
#=============END DLFUNCTION====================================================================================================================== # Global Stuff settings = xbmcaddon.Addon(id=addon_id) def nameCleaner(name): name = name.replace('–', '') name = name.replace("’", "") name = name.replace("'s", "'s") #name = unicode(name, errors='ignore') return (name) #Metadata grab = metahandlers.MetaData() def GRABMETA(name, year): meta = grab.get_meta('movie', name, year, None, None) infoLabels = { 'rating': meta['rating'], 'duration': meta['duration'], 'genre': meta['genre'], 'mpaa': "rated %s" % meta['mpaa'], 'plot': meta['plot'], 'title': meta['title'], 'writer': meta['writer'], 'cover_url': meta['cover_url'], 'director': meta['director'], 'cast': meta['cast'],
def season_refresh(vidname, imdb, season_num): metaget = metahandlers.MetaData() metaget.update_season(vidname, imdb, season_num) xbmc.executebuiltin("XBMC.Container.Refresh")
def tvshows(tvshowtitle, imdb, tvdb, season, watched): watched = int(watched) try: if traktIndicators: if watched == 5: trakt.watch(name=tvshowtitle, imdb=imdb, tvdb=tvdb, season=season, refresh=True) else: trakt.unwatch(name=tvshowtitle, imdb=imdb, tvdb=tvdb, season=season, refresh=True) else: from metahandler import metahandlers from resources.lib.menus import episodes from sys import exit as sysexit name = control.addonInfo('name') dialog = control.progressDialogBG dialog.create(str(name), str(tvshowtitle)) dialog.update(0, str(name), str(tvshowtitle)) metaget = metahandlers.MetaData(tmdb_api_key, omdb_api_key, tvdb_api_key) metaget.get_meta('tvshow', name='', imdb_id=imdb) items = episodes.Episodes().get(tvshowtitle, '0', imdb, tvdb, create_directory=False) for i in range(len(items)): items[i]['season'] = int(items[i]['season']) items[i]['episode'] = int(items[i]['episode']) try: items = [ i for i in items if int('%01d' % int(season)) == int('%01d' % i['season']) ] except: pass items = [{ 'label': '%s S%02dE%02d' % (tvshowtitle, i['season'], i['episode']), 'season': int('%01d' % i['season']), 'episode': int('%01d' % i['episode']) } for i in items] count = len(items) for i in range(count): if control.monitor.abortRequested(): return sysexit() dialog.update(int(100.0 / count * i), str(name), str(items[i]['label'])) season, episode = items[i]['season'], items[i]['episode'] metaget.get_episode_meta('', imdb_id=imdb, season=season, episode=episode) metaget.change_watched('episode', '', imdb_id=imdb, season=season, episode=episode, watched=watched) tvshowsUpdate(imdb=imdb, tvdb=tvdb) try: dialog.close() except: pass except: log_utils.error()
def episode_refresh(vidname, imdb, season_num, episode_num): #refresh info for an episode metaget = metahandlers.MetaData() metaget.update_episode_meta(vidname, imdb, season_num, episode_num) xbmc.executebuiltin("XBMC.Container.Refresh")
def superSearch(keyword='', image=BLANK, fanart=FANART, imdb=''): if len(keyword) < 1: kb = xbmc.Keyboard(keyword, GETTEXT(30054)) kb.doModal() if kb.isConfirmed(): keyword = kb.getText() if len(keyword) > 0: mode = _SUPERSEARCH cmd = '%s?mode=%d&keyword=%s&image=%s&fanart=%s' % ( sys.argv[0], mode, keyword, image, fanart) xbmc.executebuiltin('XBMC.Container.Update(%s)' % cmd) return False if len(keyword) < 1: return if keyword == ISEARCH_EMPTY: keyword = '' if not SHOW_FANART: fanart = BLANK menu = [] menu.append( (GETTEXT(30057), 'XBMC.Container.Update(%s?mode=%d&keyword=%s)' % (sys.argv[0], _EDITTERM, keyword))) infolabels = {} if METARECOMMEND and len(imdb) > 0: from metahandler import metahandlers grabber = metahandlers.MetaData() infolabels = getMeta(grabber, '', 'movie', year=None, imdb=imdb) getMovieMenu(infolabels, menu) addDir(GETTEXT(30066) % keyword.strip(), _EDITTERM, thumbnail=image, isFolder=True, menu=menu, fanart=fanart, keyword=keyword, infolabels=infolabels) #reset menu, since adddir call will have added to it menu = [] menu.append( (GETTEXT(30057), 'XBMC.Container.Update(%s?mode=%d&keyword=%s)' % (sys.argv[0], _EDITTERM, keyword))) addSeparatorItem(menu) if SHOWRECOMMEND: menu = [] menu.append( (GETTEXT(30057), 'XBMC.Container.Update(%s?mode=%d&keyword=%s)' % (sys.argv[0], _EDITTERM, keyword))) getMovieMenu(infolabels, menu) if len(imdb) > 0: addDir(GETTEXT(30088), _RECOMMEND_IMDB, thumbnail=image, isFolder=True, menu=menu, fanart=fanart, keyword=keyword, imdb=imdb, infolabels=infolabels) else: addDir(GETTEXT(30088), _RECOMMEND_KEY, thumbnail=image, isFolder=True, menu=menu, fanart=fanart, keyword=keyword) keyword = urllib.quote_plus(keyword.replace('&', '')) file = os.path.join(xbmc.translatePath(ROOT), 'Search', FILENAME) faves = favourite.getFavourites(file, superSearch=True) if len(faves) == 0: #try shipped search file file = os.path.join(xbmc.translatePath(HOME), 'resources', 'Search', FILENAME) faves = favourite.getFavourites(file) for fave in faves: label = fave[0] thumb = fave[1] cmd = fave[2].replace('[%SF%]', keyword) fan = fanart if SHOW_FANART: fan = favourite.getFanart(cmd) if len(fan) == 0: fan = fanart menu = [] menu.append( (GETTEXT(30057), 'XBMC.Container.Update(%s?mode=%d&keyword=%s)' % (sys.argv[0], _EDITTERM, keyword))) menu.append( (GETTEXT(30103), 'XBMC.RunPlugin(%s?mode=%d&file=%s&cmd=%s&name=%s&thumb=%s)' % (sys.argv[0], _EDITSEARCH, urllib.quote_plus(file), urllib.quote_plus(cmd), urllib.quote_plus(label), urllib.quote_plus(thumb)))) #special fix for GlobalSearch, use local launcher (globalsearch.py) to bypass keyboard cmd = cmd.replace('script.globalsearch', os.path.join(HOME, 'globalsearch.py')) addDir(label, _ACTIVATESEARCH, cmd=cmd, thumbnail=thumb, isFolder=True, menu=menu, fanart=fan) return True
def showEpisodes(): oGui = cGui() oParams = ParameterHandler() sShowTitle = oParams.getValue('Title') sUrl = oParams.getValue('siteUrl') sImdb = oParams.getValue('imdbID') sSeason = oParams.getValue('Season') logger.info("%s: show episodes of '%s' season '%s' " % (SITE_NAME, sShowTitle, sSeason)) oRequestHandler = cRequestHandler(sUrl) sHtmlContent = oRequestHandler.request() sPattern = '<table>(.*?)</table>' oParser = cParser() aResult = oParser.parse(sHtmlContent, sPattern) if (aResult[0] == True): sHtmlContent = aResult[1][0] sPattern = '<td>([^<]+)</td>\s*<td><a href="([^"]+)">(.*?)</a>.*?<td class="nowrap">(\s*<a|\s*</td).*?</tr>' aResult = oParser.parse(sHtmlContent, sPattern) if (aResult[0] == True): for aEntry in aResult[1]: if aEntry[3].strip() == '</td': continue sNumber = str(aEntry[0]).strip() oGuiElement = cGuiElement('Episode ' + sNumber, SITE_IDENTIFIER, 'showHosters') if META == True and not sImdb == '': oMetaget = metahandlers.MetaData() meta = oMetaget.get_episode_meta(sShowTitle, sImdb, sSeason, sNumber) meta['TVShowTitle'] = sShowTitle oGuiElement.setItemValues(meta) oGuiElement.setThumbnail(meta['cover_url']) oGuiElement.setFanart(meta['backdrop_url']) sPattern = '<strong>(.*?)</strong>' aResultTitle = oParser.parse(str(aEntry[2]), sPattern) if (aResultTitle[0] == True): sTitleName = str(aResultTitle[1][0]).strip() else: sPattern = '<span lang="en">(.*?)</span>' aResultTitle = oParser.parse(str(aEntry[2]), sPattern) if (aResultTitle[0] == True): sTitleName = str(aResultTitle[1][0]).strip() else: sTitleName = '' sTitle = sNumber sTitleName = cUtil().unescape( sTitleName.decode('utf-8')).encode('utf-8') oParams.setParam('EpisodeTitle', sTitleName) sTitle = sTitle + ' - ' + sTitleName oGuiElement.setTitle(sTitle) oParams.setParam('siteUrl', URL_MAIN + '/' + str(aEntry[1])) oParams.setParam('EpisodeNr', sNumber) oParams.setParam('Title', sShowTitle + ' - S' + sSeason + 'E' + sTitle) oGui.addFolder(oGuiElement, oParams, iTotal=len(aResult[1])) oGui.setView('episodes') oGui.setEndOfDirectory()
import urllib, urllib2, re, xbmcplugin, xbmcgui, os import settings import time from datetime import date, datetime from threading import Timer from hashlib import md5 from helpers import clean_file_name import shutil from hashlib import md5 import hashlib from threading import Thread import requests import urlresolver from helpers import clean_file_name from metahandler import metahandlers metainfo = metahandlers.MetaData() ADDON = settings.addon() TVO_USER = settings.tvo_user() TVO_PASSWORD = settings.tvo_pass() TVO_EMAIL = settings.tvo_email() ENABLE_SUBS = settings.enable_subscriptions() ENABLE_META = settings.enable_meta() TV_PATH = settings.tv_directory() CACHE_PATH = settings.cache_path() FAV = settings.favourites_file() SUB = settings.subscription_file() addon_path = os.path.join(xbmc.translatePath('special://home/addons'), '') fanart = xbmc.translatePath( os.path.join('special://home/addons/plugin.video.tvonline.cc', 'art', 'Fanart2.jpg'))
def build_features_list(save_page): metaget = metahandlers.MetaData() form_data = {'page': save_page} data = getUrl('http://www.traileraddict.com/ajax/features_home.php', form_data=form_data) movie_info = re.compile( 'class="featured_box[ sp rb]*">(.+?)</a>[\\r\\n\\t]+</div>', re.DOTALL).findall(data) for movie in movie_info: url_thumb_x_title = re.compile( '<a href="(.+?)" class="movie_img" title="(.+?)"><img alt=".+?" src="(.+?)" />' ).findall(movie) totalItems = len(url_thumb_x_title) for url, title, thumb in url_thumb_x_title: title = title.rsplit(' - ') name1 = clean(title[0]) if len(title) > 1: name2 = clean(title[0]) + ' (' + clean(title[1]) + ')' else: name2 = clean(title[0]) url = 'http://www.traileraddict.com' + url thumb = 'http:' + thumb cm = [] run = sys.argv[0] + '?' + urllib.urlencode({ 'mode': '5', 'name': name2, 'url': url, 'download': 'True' }) cm.append((settings.getLocalizedString(30059), "XBMC.RunPlugin(%s)" % run)) cm.append((settings.getLocalizedString( 30014 ), "XBMC.RunPlugin(plugin://plugin.video.couchpotato_manager/movies/add?title=%s)" % name1)) cm.append(('Show Information', 'XBMC.Action(Info)')) u = {'mode': '5', 'name': name2, 'url': url} #Try to clean up the name as best we can before grabbing meta data scrape_name = name1.lower().replace( 'theatrical trailer', '').replace('feature trailer', '').replace('international trailer', '').replace( 'final trailer', '').replace('red band', '').replace( 'feature red band', '').replace('international red band ', '').replace('trailer', '') meta = metaget.get_meta('movie', scrape_name) meta['title'] = name1 meta['trailer'] = '' addListItem(label=name1, image=thumb, url=u, isFolder=False, totalItems=totalItems, infoLabels=meta, cm=cm) if save_page < 94: u = {'mode': '6', 'page': str(int(save_page) + 1)} addListItem(label='[Next Page (' + str(int(save_page) + 1) + ')]', image=next_thumb, url=u, isFolder=True, totalItems=0, infoLabels=False) xbmcplugin.addSortMethod(handle=int(sys.argv[1]), sortMethod=xbmcplugin.SORT_METHOD_NONE) setViewMode("500", "movies") xbmcplugin.endOfDirectory(int(sys.argv[1]))
def repair_meta_images(self): from metahandler import metahandlers from metahandler import metacontainers import xbmcgui __metaget__ = metahandlers.MetaData() cont = metacontainers.MetaContainer() if self.db_type == DB_TYPES.MYSQL: db = db_lib.connect(database=self.dbname, user=self.username, password=self.password, host=self.address, buffered=True) else: db = db_lib.connect(cont.videocache) dbcur = db.cursor() dlg = xbmcgui.DialogProgress() dlg.create('Repairing Images', '', '', '') for video_type in ('tvshow', 'movie'): total = 'SELECT count(*) from %s_meta WHERE ' % video_type total += 'imgs_prepacked = "true"' total = dbcur.execute(total).fetchone()[0] statement = 'SELECT title,cover_url,backdrop_url' if video_type == 'tvshow': statement += ',banner_url' statement += ' FROM %s_meta WHERE imgs_prepacked = "true"' % video_type complete = 1.0 start_time = time.time() already_existing = 0 for row in dbcur.execute(statement): title = row[0] cover = row[1] backdrop = row[2] if video_type == 'tvshow': banner = row[3] else: banner = False percent = int((complete * 100) / total) entries_per_sec = (complete - already_existing) entries_per_sec /= max(float((time.time() - start_time)), 1) total_est_time = total / max(entries_per_sec, 1) eta = total_est_time - (time.time() - start_time) eta = utils.format_eta(eta) dlg.update(percent, eta + title, '') if cover: dlg.update(percent, eta + title, cover) img_name = __metaget__._picname(cover) img_path = os.path.join(__metaget__.mvcovers, img_name[0].lower()) file_path = os.path.join(img_path, img_name) if not os.path.isfile(file_path): retries = 4 while retries: try: __metaget__._downloadimages( cover, img_path, img_name) break except: retries -= 1 else: already_existing -= 1 if backdrop: dlg.update(percent, eta + title, backdrop) img_name = __metaget__._picname(backdrop) img_path = os.path.join(__metaget__.mvbackdrops, img_name[0].lower()) file_path = os.path.join(img_path, img_name) if not os.path.isfile(file_path): retries = 4 while retries: try: __metaget__._downloadimages( backdrop, img_path, img_name) break except: retries -= 1 else: already_existing -= 1 if banner: dlg.update(percent, eta + title, banner) img_name = __metaget__._picname(banner) img_path = os.path.join(__metaget__.tvbanners, img_name[0].lower()) file_path = os.path.join(img_path, img_name) if not os.path.isfile(file_path): retries = 4 while retries: try: __metaget__._downloadimages( banner, img_path, img_name) break except: retries -= 1 else: already_existing -= 1 if dlg.iscanceled(): return False complete += 1
REQUESTS_LOC = xbmc.translatePath(os.path.join(SETTINGS_LOC, 'requests', '')) ICON = os.path.join(ADDON_PATH, 'icon.png') FANART = os.path.join(ADDON_PATH, 'fanart.jpg') DEBUG = REAL_SETTINGS.getSetting('Enable_Debugging') == 'true' KODI_MONITOR = xbmc.Monitor() YOUTUBE_PLAYER = 'plugin://plugin.video.youtube/play/?video_id=' YT_API_KEY = REAL_SETTINGS.getSetting('YT_API_KEY') TMDB_API_KEY = REAL_SETTINGS.getSetting('TMDB_API_KEY') # pyfscache globals from pyfscache import * cache_daily = FSCache(REQUESTS_LOC, days=1, hours=0, minutes=0) try: from metahandler import metahandlers METAGET = metahandlers.MetaData(preparezip=False, tmdb_api_key=TMDB_API_KEY) ENHANCED_DATA = REAL_SETTINGS.getSetting('Enable_Metahandler') == 'true' except Exception, e: ENHANCED_DATA = False xbmc.log("plugin.video.bringthepopcorn: metahandler Import failed! " + str(e)) def log(msg, level=xbmc.LOGDEBUG): if DEBUG == True: xbmc.log(ADDON_ID + '-' + ADDON_VERSION + '-' + msg, level) def uni(string): if isinstance(string, basestring): if isinstance(string, unicode):
def getDirectory(name, url, audio, image, fanart, playable, content, close=True, local=False): if local == True: f = control.openFile(url) result = f.read() f.close() else: result = cache.get(client.request, 0, url) result = str(result).replace('\r', '').replace('\n', '').replace( '\t', '').replace(' ', '') try: fanart = re.findall('<fanart>(.+?)</fanart>', result)[0] except: fanart = '0' try: notify = re.compile('<notify>(.+?)</notify>').findall(result)[0] vip = re.findall('<poster>(.+?)</poster>', result)[0] if not re.search('[a-zA-Z]', vip): raise Exception() def message(vip): return (vip + version) check = cache.get(message, 600000000, vip, table='rel_vip') version = re.findall('<new>(.+?)</new>', notify)[0] if not version.isdigit(): raise Exception() if check == (vip + version): raise Exception() title = '[B]Announcement From %s![/B]' % vip msg1 = re.findall('<message1>(.+?)</message1>', notify)[0] msg2 = re.findall('<message2>(.+?)</message2>', notify)[0] msg3 = re.findall('<message3>(.+?)</message3>', notify)[0] check = cache.get(message, 0, vip, table='rel_vip') control.dialog.ok(str(title), str(msg1), str(msg2), str(msg3)) except: pass infos = re.compile('<info>(.+?)</info>').findall(result) for info in infos: try: name = re.findall('<message>(.+?)</message>', info)[0] try: image = re.findall('<thumbnail>(.+?)</thumbnail>', info)[0] except: image = '0' addDirectoryItem(name, '0', '0', image, image, fanart, '0', '0', {}) except: pass popups = re.compile('<popup>(.+?)</popup>').findall(result) for popup in popups: try: name = re.findall('<name>(.+?)</name>', popup)[0] url = re.findall('<popImage>(.+?)</popImage>', popup)[0] try: image = re.findall('<thumbnail>(.+?)</thumbnail>', popup)[0] except: image = '0' try: audio = re.findall('<sound>(.+?)</sound>', popup)[0] except: audio = '0' addDirectoryItem(name, url, 'openDialog', image, image, fanart, audio, '0', {}) except: pass special = re.compile( '<name>([^<]+)</name><link>([^<]+)</link><thumbnail>([^<]+)</thumbnail><date>([^<]+)</date>' ).findall(result) for name, url, image, date in special: if re.search(r'\d+', date): name += ' [COLOR red] Updated %s[/COLOR]' % date addDirectoryItem(name, url, 'ndmode', image, image, fanart, '0', '0', {}) special = re.compile( '<name>([^<]+)</name><link>([^<]+)</link><thumbnail>([^<]+)</thumbnail><mode>([^<]+)</mode>' ).findall(result) for name, url, image, action in special: if not url == phNews: addDirectoryItem(name, url, action, image, image, fanart, '0', '0', {}) meta = False try: content = re.findall('<meta>(.+?)</meta>', result)[0] except: content = '0' try: tvshow = re.findall('<tvshow>(.+?)</tvshow>', result)[0] except: tvshow = '0' if content in ['seasons', 'episodes'] and tvshow == '0': content = '0' if content in ['movies', 'tvshows'] and control.setting('meta') == 'true': try: from metahandler import metahandlers metaget = metahandlers.MetaData(preparezip=False) meta = True except: meta = False elif content in ['seasons', 'episodes']: try: from metahandler import metahandlers metaget = metahandlers.MetaData(preparezip=False) #tvd = metaget.get_meta('tvshow', tvshow) tvd = cachemeta.get(metaget.get_meta, 24, 'tvshow', tvshow, '', '', '') except: tvd = {} dirs = re.compile('<dir>(.+?)</dir>').findall(result) totalItems = len(dirs) for dir in dirs: try: data = {} name = re.findall('<name>(.+?)</name>', dir)[0] url = re.findall('<link>(.+?)</link>', dir)[0] try: image = re.findall('<thumbnail>(.+?)</thumbnail>', dir)[0] except: image = '0' try: fanart2 = re.findall('<fanart>(.+?)</fanart>', dir)[0] except: fanart2 = fanart if meta == True and content == 'tvshows': try: title = cleantitle(name).encode('utf-8') data = {'title': title, 'tvshowtitle': title} #data = metaget.get_meta('tvshow', title) data = cachemeta.get(metaget.get_meta, 24, 'tvshow', title, '', '', '') metafanart = data['backdrop_url'] if not metafanart == '': fanart2 = metafanart except: pass elif content == 'tvshows': try: title = cleantitle(name).encode('utf-8') data = {'title': title, 'tvshowtitle': title} except: pass elif content == 'seasons': try: title = cleantitle(tvshow).encode('utf-8') data = {'title': title, 'tvshowtitle': title} data.update(tvd) metafanart = tvd['backdrop_url'] if not metafanart == '': fanart2 = metafanart except: pass addDirectoryItem(name, url, 'ndmode', image, image, fanart2, '0', content, data, totalItems=totalItems) except: pass items = re.compile('<item>(.+?)</item>').findall(result) try: sort = re.findall('<sort>(.+?)</sort>', result)[0] except: sort = '' if sort == 'yes': items = sorted(items) totalItems = len(items) for item in items: try: data = {} name = re.findall('<title>(.+?)</title>', item)[0] url = re.findall('<link>(.+?)</link>', item)[0] try: image = image2 = re.findall('<thumbnail>(.+?)</thumbnail>', item)[0] except: image = image2 = '0' try: fanart2 = re.findall('<fanart>(.+?)</fanart>', item)[0] except: fanart2 = fanart if meta == True and content == 'movies': try: title = cleantitle(name).encode('utf-8') data = {'title': title} title, year = re.compile('(.+?)[(](\d{4})[)]').findall( name)[0] title = cleantitle(title).encode('utf-8') data = {'title': title, 'year': year} #data = metaget.get_meta('movie', title, year=year) data = cachemeta.get(metaget.get_meta, 24, 'movie', title, '', '', year) metaimage = data['cover_url'] if not metaimage == '': image = metaimage metafanart = data['backdrop_url'] if not metafanart == '': fanart2 = metafanart except: pass elif content == 'movies': try: title = cleantitle(name).encode('utf-8') data = {'title': title} title, year = re.compile('(.+?)[(](\d{4})[)]').findall( name)[0] title = cleantitle(title).encode('utf-8') data = {'title': title, 'year': year} except: pass elif content == 'episodes': try: title = cleantitle(name).encode('utf-8') data = {'title': title, 'tvshowtitle': tvshow} except: pass try: i = cleaneptitle(tvshow, title) title, season, episode = i[0].encode('utf-8'), i[1], i[2] data = { 'title': title, 'tvshowtitle': tvshow, 'season': season, 'episode': episode } except: pass try: data.update({ 'year': tvd['year'], 'imdb_id': tvd['imdb_id'], 'tvdb_id': tvd['tvdb_id'], 'tvshowtitle': tvd['TVShowTitle'], 'genre': tvd['genre'], 'studio': tvd['studio'], 'status': tvd['status'], 'duration': tvd['duration'], 'rating': tvd['rating'], 'mpaa': tvd['mpaa'], 'plot': tvd['plot'], 'cast': tvd['cast'] }) metafanart = tvd['backdrop_url'] if not metafanart == '': image = fanart2 = metafanart except: pass if 'sublink' in url: addDirectoryItem(name, url, 'subDirectory', image, image2, fanart2, '0', content, data, tvshow=tvshow, totalItems=totalItems, isFolder=True) else: addDirectoryItem(name, url, 'resolveUrl', image, image2, fanart2, '0', content, data, totalItems=totalItems, isFolder=False) except: pass endDirectory(content, close)
def tvshows(tvshowtitle, year, imdb, tvdb, season, watched): watched = int(watched) try: from metahandler import metahandlers from resources.lib.indexers import episodes metaget = metahandlers.MetaData(preparezip=False) dialog = control.progressDialog dialog.create(control.addonInfo('name'), str(tvshowtitle)) dialog.update(0, str(tvshowtitle), control.lang(30451).encode('utf-8') + '...') metaget.get_meta('tvshow', '', imdb_id=imdb) items = episodes.episodes().get(tvshowtitle, year, imdb, '0', tvdb, '0', idx=False) try: items = [ i for i in items if int('%01d' % int(season)) == int('%01d' % int(i['season'])) ] except: pass items = [{ 'name': i['name'], 'season': int('%01d' % int(i['season'])), 'episode': int('%01d' % int(i['episode'])) } for i in items] for i in range(len(items)): if xbmc.abortRequested == True: return sys.exit() if dialog.iscanceled(): return dialog.close() dialog.update(int((100 / float(len(items))) * i), str(tvshowtitle), str(items[i]['name'])) season, episode = items[i]['season'], items[i]['episode'] metaget.get_episode_meta('', imdb, season, episode) metaget.change_watched('episode', '', imdb, season=season, episode=episode, year='', watched=watched) try: dialog.close() except: pass except: try: dialog.close() except: pass control.refresh()
import urllib, urllib2, re, xbmcplugin, xbmcgui, urlresolver, sys, xbmc, xbmcaddon, os, base64 from t0mm0.common.addon import Addon from metahandler import metahandlers addon_id = 'plugin.video.movienight' selfAddon = xbmcaddon.Addon(id=addon_id) metaget = metahandlers.MetaData(preparezip=False) addon = Addon(addon_id, sys.argv) ADDON2 = xbmcaddon.Addon(id='plugin.video.movienight') fanart = xbmc.translatePath( os.path.join('special://home/addons/' + addon_id, 'fanart.jpg')) icon = xbmc.translatePath( os.path.join('special://home/addons/' + addon_id, 'icon.png')) metaset = selfAddon.getSetting('enable_meta') def CATEGORIES(): addDir2('New Releases', 'http://movienight.ws/', 1, icon, '', fanart) addDir2('Drama', 'http://movienight.ws/category/drama/', 4, icon, '', fanart) addDir2('Action', 'http://movienight.ws/category/Action/', 4, icon, '', fanart) addDir2('Thriller', 'http://movienight.ws/category/Thriller/', 4, icon, '', fanart) addDir2('Crime', 'http://movienight.ws/category/Crime/', 4, icon, '', fanart) addDir2('Mystery', 'http://movienight.ws/category/Mystery/', 4, icon, '', fanart) addDir2('Science Fiction', 'http://movienight.ws/category/science-fiction/', 4, icon, '', fanart)
def WindowsBoxes(self, sTitle, sFileName, num, year=''): if (xbmcaddon.Addon('script.extendedinfo') and self.getSetting('extendedinfo-view') == 'true'): self.showInfo('vStream', 'Lancement de ExtendInfo') xbmc.executebuiltin( 'XBMC.RunScript(script.extendedinfo, info=extendedinfo, name=%s)' % sFileName) return if self.getSetting('meta-view') == 'true': xbmc.executebuiltin("Action(Info)") return if num == "1": try: from metahandler import metahandlers grab = metahandlers.MetaData( preparezip=False, tmdb_api_key='92ab39516970ab9d86396866456ec9b6') meta = grab.get_meta('movie', sFileName) except: xbmc.executebuiltin("Action(Info)") return elif num == "2": try: from metahandler import metahandlers grab = metahandlers.MetaData( preparezip=False, tmdb_api_key='92ab39516970ab9d86396866456ec9b6') meta = grab.get_meta('tvshow', sFileName) except: xbmc.executebuiltin("Action(Info)") return if (not meta['imdb_id']): xbmc.executebuiltin("Action(Info)") return class XMLDialog(xbmcgui.WindowXMLDialog): """ Dialog class that asks user about rating of movie. """ def __init__(self, *args, **kwargs): xbmcgui.WindowXMLDialog.__init__(self) pass # def message(self, message): # """ # Shows xbmc dialog with OK and message. # """ # dialog = xbmcgui.Dialog() # dialog.ok(" My message title", message) # self.close() def onInit(self): #par default le resumer# self.getControl(50).setVisible(False) #title #self.getControl(1).setLabel(meta['title']) meta['title'] = sTitle self.getControl(49).setVisible(True) #self.getControl(2).setImage(meta['cover_url']) #self.getControl(3).setLabel(meta['rating']) for e in meta: property = 'ListItem.%s' % (e) if isinstance(meta[e], unicode): xbmcgui.Window(10000).setProperty( property, meta[e].encode('utf-8')) else: if (property == "ListItem.cast"): cast = '' try: for real, act in meta[e]: cast += real + ' est ' + act + ', ' xbmcgui.Window(10000).setProperty( property, cast.encode('utf-8')) except: for act in meta[e]: cast += act + ', ' xbmcgui.Window(10000).setProperty( property, str(cast)) else: xbmcgui.Window(10000).setProperty( property, str(meta[e])) #description #self.getControl(400).setText(meta['plot']) def onClick(self, controlId): if controlId == 5: self.getControl(400).setVisible(False) self.getControl(50).setVisible(True) return elif controlId == 20: self.getControl(50).setVisible(False) self.getControl(400).setVisible(True) return elif controlId == 15: return self.close() def onFocus(self, controlId): self.controlId = controlId def _close_dialog(self): self.close() def onAction(self, action): if action.getId() in ( 9, 10, 92, 216, 247, 257, 275, 61467, 61448, ): self.close() wd = XMLDialog('DialogInfo.xml', self.__oPath, 'default', '720p') wd.doModal() del wd
# This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # 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/>. import ast,operator,os,re,shutil,sys,string,time,urllib,urlparse import xbmc,xbmcaddon,xbmcgui,xbmcplugin,xbmcvfs from metahandler import metahandlers from md_view import setView from common import Addon metaget = metahandlers.MetaData() dialog = xbmcgui.Dialog() class md: def __init__(self, addon_id, argv=None):
import urllib, urllib2, re, xbmcplugin, xbmcgui, urlresolver, sys, xbmc, xbmcaddon, os from t0mm0.common.addon import Addon from metahandler import metahandlers addon_id = 'plugin.video.giaitritv' selfAddon = xbmcaddon.Addon(id=addon_id) metaget = metahandlers.MetaData(preparezip=False) addon = Addon(addon_id, sys.argv) ADDON2 = xbmcaddon.Addon(id='plugin.video.giaitritv') fanart = xbmc.translatePath( os.path.join('special://home/addons/' + addon_id, 'fanart.jpg')) icon = xbmc.translatePath( os.path.join('special://home/addons/' + addon_id, 'icon.png')) metaset = selfAddon.getSetting('enable_meta') def CATEGORIES(): addDir2('Latest Cinema Releases', 'http://www.moviexk.net/cinema/', 1, icon, '', fanart) addDir2('Recently Added', 'http://www.moviexk.net/new-movies/', 1, icon, '', fanart) addDir2('Most Viewed', 'http://www.moviexk.net/popular-movies/', 1, icon, '', fanart) addDir2('HD Movies', 'http://www.moviexk.net/movies-hd/', 1, icon, '', fanart) addDir2('Genres', 'http://www.moviexk.net', 2, icon, '', fanart) addDir2('Search', 'url', 3, icon, '', fanart) xbmc.executebuiltin('Container.SetViewMode(50)') def GETMOVIES(url, name): metaset = selfAddon.getSetting('enable_meta') link = open_url(url)
def tvshows(tvshowtitle, imdb, tvdb, season, watched): watched = int(watched) try: if traktIndicators is True: raise Exception() from metahandler import metahandlers from resources.lib.menus import episodes name = control.addonInfo('name') dialog = control.progressDialogBG dialog.create(str(name), str(tvshowtitle)) dialog.update(0, str(name), str(tvshowtitle)) metaget = metahandlers.MetaData() metaget.get_meta('tvshow', name='', imdb_id=imdb) items = episodes.Episodes().get(tvshowtitle, '0', imdb, tvdb, idx = False) for i in range(len(items)): items[i]['season'] = int(items[i]['season']) items[i]['episode'] = int(items[i]['episode']) try: items = [i for i in items if int('%01d' % int(season)) == int('%01d' % i['season'])] except: pass items = [{'label': '%s S%02dE%02d' % (tvshowtitle, i['season'], i['episode']), 'season': int('%01d' % i['season']), 'episode': int('%01d' % i['episode'])} for i in items] count = len(items) for i in range(count): if xbmc.abortRequested is True: return sys.exit() dialog.update(int(100.0 / count * i), str(name), str(items[i]['label'])) season, episode = items[i]['season'], items[i]['episode'] metaget.get_episode_meta('', imdb_id = imdb, season = season, episode = episode) metaget.change_watched('episode', '', imdb_id = imdb, season = season, episode = episode, watched = watched) tvshowsUpdate(imdb = imdb, tvdb = tvdb) try: dialog.close() except: pass except: try: dialog.close() except: pass try: if traktIndicators is False: raise Exception() if watched == 7: trakt.watch(imdb = imdb, tvdb = tvdb, season = season, refresh = True, notification = trakt.notification) else: trakt.unwatch(imdb = imdb, tvdb = tvdb, season = season, refresh = True, notification = trakt.notification) except: # import traceback # traceback.print_exc() # pass from resources.lib.modules import log_utils log_utils.error()
def updateMeta(params): if not cConfig().getSetting('metahandler') == 'true': return #videoType, name, imdbID, season=season, episode=episode, year=year, watched=watched try: from metahandler import metahandlers except Exception as e: logger.info("Could not import package 'metahandler'") logger.info(e) return meta = metahandlers.MetaData() season = '' episode = '' mediaType = params.getValue('mediaType') imdbID = params.getValue('imdbID') name = str(params.getValue('title')) year = params.getValue('year') print "MedienType: " + mediaType if (mediaType == 'movie' or mediaType == 'tvshow'): # show meta search input oGui = cGui() sSearchText = oGui.showKeyBoard(name) if (sSearchText != False and sSearchText != ''): if mediaType == 'movie': try: foundInfo = meta.search_movies(sSearchText) except: logger.info('error or nothing found') foundInfo = False elif mediaType == 'tvshow': foundInfo = metahandlers.TheTVDB().get_matching_shows( sSearchText, language="all") else: return else: return if not foundInfo: oGui.showInfo('xStream', 'Suchanfrage lieferte kein Ergebnis') return # select possible match dialog = xbmcgui.Dialog() items = [] for item in foundInfo: if mediaType == 'movie': items.append( str(item['title'].encode('utf-8')) + ' (' + str(item['year']) + ')') elif mediaType == 'tvshow': items.append(str(item[1])) else: return index = dialog.select('Film/Serie wählen', items) if index > -1: item = foundInfo[index] else: return False if not imdbID: imdbID = '' if not year: year = '' if mediaType == 'movie': meta.update_meta(mediaType, name, imdbID, new_imdb_id=str(item['imdb_id']), new_tmdb_id=str(item['tmdb_id']), year=year) elif mediaType == 'tvshow': if params.exist('season'): season = params.getValue('season') meta.update_season(name, imdbID, season) if params.exist('episode'): episode = params.getValue('episode') if season and episode: meta.update_episode_meta(name, imdbID, season, episode) elif season: meta.update_season(name, imdbID, season) else: meta.update_meta(mediaType, name, imdbID, new_imdb_id=str(item[2]), new_tmdb_id=str(item[0]), year=year) #print params.getAllParameters() xbmc.executebuiltin("XBMC.Container.Refresh") return
def tvshows(tvshowtitle, imdb, tvdb, season, watched): try: import sys, xbmc if not trakt.getTraktIndicatorsInfo() == False: raise Exception() watched = int(watched) from metahandler import metahandlers from resources.lib.indexers import episodes imdb = imdb.encode('utf-8') metaget = metahandlers.MetaData(preparezip=False) name = control.addonInfo('name') dialog = control.progressDialogBG dialog.create(str(name), str(tvshowtitle)) dialog.update(0, str(name), str(tvshowtitle)) items = episodes.episodes().get(tvshowtitle, '0', imdb, tvdb, '0', idx=False) try: items = [ i for i in items if int('%01d' % int(season)) == int('%01d' % int(i['season'])) ] except: pass items = [{ 'label': '%s S%02dE%02d' % (tvshowtitle, int(i['season']), int(i['episode'])), 'season': int('%01d' % int(i['season'])), 'episode': int('%01d' % int(i['episode'])) } for i in items] for i in range(len(items)): if xbmc.abortRequested == True: return sys.exit() dialog.update(int((100 / float(len(items))) * i), str(name), str(items[i]['label'])) season, episode = items[i]['season'], items[i]['episode'] metaget.get_episode_meta('', imdb, season, episode) metaget.change_watched('episode', '', imdb, season=season, episode=episode, year='', watched=watched) try: dialog.close() except: pass except: try: dialog.close() except: pass control.refresh()
def setWatchedStatus(self): if self.content == 'movie': try: control.jsonrpc( '{"jsonrpc": "2.0", "method": "VideoLibrary.SetMovieDetails", "params": {"movieid" : %s, "playcount" : 1 }, "id": 1 }' % str(self.DBID)) if not self.folderPath.startswith('plugin://'): control.refresh() except: pass try: from metahandler import metahandlers metaget = metahandlers.MetaData(preparezip=False) metaget.get_meta('movie', self.title, year=self.year) metaget.change_watched(self.content, '', self.imdb, season='', episode='', year='', watched=7) except: pass try: if trakt.getTraktAddonMovieInfo() == False: trakt.markMovieAsWatched(self.imdb) trakt.syncMovies() except: pass elif self.content == 'episode': try: control.jsonrpc( '{"jsonrpc": "2.0", "method": "VideoLibrary.SetEpisodeDetails", "params": {"episodeid" : %s, "playcount" : 1 }, "id": 1 }' % str(self.DBID)) if not self.folderPath.startswith('plugin://'): control.refresh() except: pass try: from metahandler import metahandlers metaget = metahandlers.MetaData(preparezip=False) metaget.get_meta('tvshow', self.tvshowtitle, imdb_id=self.imdb) metaget.get_episode_meta(self.tvshowtitle, self.imdb, self.season, self.episode) metaget.change_watched(self.content, '', self.imdb, season=self.season, episode=self.episode, year='', watched=7) except: pass try: if trakt.getTraktAddonEpisodeInfo() == False: trakt.markEpisodeAsWatched(self.tvdb, self.season, self.episode) trakt.syncTVShows() except: pass
import urllib, urllib2, re, xbmcplugin, xbmcgui, sys, xbmc, xbmcaddon, os, random, urlparse, time, net from t0mm0.common.addon import Addon from metahandler import metahandlers net = net.Net() addon_id = 'plugin.video.xmovies8' selfAddon = xbmcaddon.Addon(id=addon_id) datapath = xbmc.translatePath(selfAddon.getAddonInfo('profile')) metaget = metahandlers.MetaData(preparezip=False) addon = Addon(addon_id, sys.argv) fanart = xbmc.translatePath( os.path.join('special://home/addons/' + addon_id, 'fanart.jpg')) icon = xbmc.translatePath( os.path.join('special://home/addons/' + addon_id, 'icon.png')) metaset = selfAddon.getSetting('enable_meta') def CATEGORIES(): #addDir2('Cinema Movies','http://xmovies8.tv/cinema-movies/page/1',1,icon,'',fanart) addDir2('New Movies', 'http://xmovies8.tv/new/page/1', 1, icon, '', fanart) addDir2('HD Movies', 'http://xmovies8.tv/movie-quality/hd/page/1', 1, icon, '', fanart) addDir2('Movies By Year', 'http://xmovies8.tv/', 2, icon, '', fanart) addDir2('Movies By Genre', 'http://xmovies8.tv/', 4, icon, '', fanart) addDir2('Search', 'URL', 3, icon, '', fanart) xbmc.executebuiltin('Container.SetViewMode(50)') def GETYEARS(url): link = open_url(url) link = link.replace('\n', '').replace(' ', '') match = re.compile('<a href="(.+?)">(.+?)</a>').findall(link) for url, name in match:
def tvshows(tvshowtitle, imdb, tvdb, season, watched): watched = int(watched) watchedIs = watched == 7 try: from metahandler import metahandlers from resources.lib.indexers import episodes if not trakt.getTraktIndicatorsInfo() == False: raise Exception() name = control.addonInfo('name') dialog = control.progressDialogBG() dialog.create(str(name), str(tvshowtitle)) dialog.update(0, str(name), str(tvshowtitle)) metaget = metahandlers.MetaData(preparezip=False) metaget.get_meta('tvshow', name='', imdb_id=imdb) items = episodes.episodes().get(tvshowtitle, '0', imdb, tvdb, idx=False) for i in range(len(items)): items[i]['season'] = int(items[i]['season']) items[i]['episode'] = int(items[i]['episode']) try: items = [ i for i in items if int('%01d' % int(season)) == int('%01d' % i['season']) ] except: pass items = [{ 'label': '%s S%02dE%02d' % (tvshowtitle, i['season'], i['episode']), 'season': int('%01d' % i['season']), 'episode': int('%01d' % i['episode']) } for i in items] count = len(items) for i in range(count): if xbmc.abortRequested == True: return sys.exit() dialog.update(int(100.0 / count * i), str(name), str(items[i]['label'])) season, episode = items[i]['season'], items[i]['episode'] metaget.get_episode_meta('', imdb_id=imdb, season=season, episode=episode) metaget.change_watched('episode', '', imdb_id=imdb, season=season, episode=episode, watched=watched) tvshowsUpdate(imdb=imdb, tvdb=tvdb) try: dialog.close() except: pass except: try: dialog.close() except: pass try: if trakt.getTraktIndicatorsInfo() == False: raise Exception() if watched == 7: trakt.watch(type=tools.Media.TypeShow, imdb=imdb, tvdb=tvdb, season=season, refresh=True, notification=False) else: trakt.unwatch(type=tools.Media.TypeShow, imdb=imdb, tvdb=tvdb, season=season, refresh=True, notification=False) except: tools.Logger.error() pass try: from resources.lib.extensions import video if watchedIs: video.Trailer().watch(imdb=imdb) else: video.Trailer().unwatch(imdb=imdb) except: tools.Logger.error()