def getLocalTitle(self, title, imdb, content): langDict = {'German': 'de', 'German+English': 'de', 'French': 'fr', 'French+English': 'fr'} name = control.setting('providers.lang') try: lang = langDict[name] except: return title if content == 'movie': t = trakt.getMovieTranslation(imdb, lang) else: t = trakt.getTVShowTranslation(imdb, lang) title = t if not t == None else title return title
def strmFile(self, i): try: title, year, imdb, tvdb, season, episode, tvshowtitle, premiered = i[ 'title'], i['year'], i['imdb'], i['tvdb'], i['season'], i[ 'episode'], i['tvshowtitle'], i['premiered'] episodetitle = urllib.quote_plus(title) systitle, syspremiered = urllib.quote_plus( tvshowtitle), urllib.quote_plus(premiered) if control.setting('Ordnerstruktur.auf.Deutsch') != 'false': lang = 'de' germantvshowtitle = trakt.getTVShowTranslation(imdb, lang) transtitle = cleantitle.normalize( germantvshowtitle.translate(None, '\/:*?"<>|')) else: transtitle = cleantitle.normalize( tvshowtitle.translate(None, '\/:*?"<>|')) content = '%s?action=play&title=%s&year=%s&imdb=%s&tvdb=%s&season=%s&episode=%s&tvshowtitle=%s&date=%s' % ( sys.argv[0], episodetitle, year, imdb, tvdb, season, episode, systitle, syspremiered) folder = lib_tools.make_path(self.library_folder, transtitle, year) if not os.path.isfile(os.path.join(folder, 'tvshow.nfo')): lib_tools.create_folder(folder) lib_tools.write_file(os.path.join(folder, 'tvshow.nfo'), lib_tools.nfo_url('tv', i)) folder = lib_tools.make_path(self.library_folder, transtitle, year, season) lib_tools.create_folder(folder) lib_tools.write_file( os.path.join( folder, lib_tools.legal_filename( '%s S%02dE%02d' % (transtitle, int(season), int(episode))) + '.strm'), content) except: pass
def super_info(self, i): try: if self.list[i]['metacache']: return imdb = self.list[i].get('imdb', '') ; tmdb = self.list[i].get('tmdb', '') ; tvdb = self.list[i].get('tvdb', '') #### -- Missing id's lookup -- #### trakt_ids = None if (not tmdb or not tvdb) and imdb: trakt_ids = trakt.IdLookup('imdb', imdb, 'show') if (not tmdb or not imdb) and tvdb: trakt_ids = trakt.IdLookup('tvdb', tvdb, 'show') if trakt_ids: if not imdb: imdb = str(trakt_ids.get('imdb', '')) if trakt_ids.get('imdb') else '' if not tmdb: tmdb = str(trakt_ids.get('tmdb', '')) if trakt_ids.get('tmdb') else '' if not tvdb: tvdb = str(trakt_ids.get('tvdb', '')) if trakt_ids.get('tvdb') else '' if not tmdb and (imdb or tvdb): try: result = cache.get(tmdb_indexer.TVshows().IdLookup, 96, imdb, tvdb) tmdb = str(result.get('id', '')) if result.get('id') else '' except: tmdb = '' if not imdb or not tmdb or not tvdb: try: results = trakt.SearchTVShow(quote_plus(self.list[i]['title']), self.list[i]['year'], full=False) if results[0]['show']['title'].lower() != self.list[i]['title'].lower() or int(results[0]['show']['year']) != int(self.list[i]['year']): return # Trakt has "THEM" and "Them" twice for same show, use .lower() ids = results[0].get('show', {}).get('ids', {}) if not imdb: imdb = str(ids.get('imdb', '')) if ids.get('imdb') else '' if not tmdb: tmdb = str(ids.get('tmdb', '')) if ids.get('tmdb') else '' if not tvdb: tvdb = str(ids.get('tvdb', '')) if ids.get('tvdb') else '' except: pass ################################# if not tmdb: if control.setting('debug.level') != '1': return from resources.lib.modules import log_utils log_utils.log('tvshowtitle: (%s) missing tmdb_id' % self.list[i]['title'], __name__, log_utils.LOGDEBUG) # log TMDb shows that they do not have showSeasons = cache.get(tmdb_indexer.TVshows().get_showSeasons_meta, 96, tmdb) if not showSeasons: return values = {} values.update(showSeasons) if not tvdb: tvdb = values.get('tvdb', '') if not values.get('imdb'): values['imdb'] = imdb if not values.get('tmdb'): values['tmdb'] = tmdb if not values.get('tvdb'): values['tvdb'] = tvdb if self.lang != 'en': try: # if self.lang == 'en' or self.lang not in values.get('available_translations', [self.lang]): raise Exception() trans_item = trakt.getTVShowTranslation(imdb, lang=self.lang, full=True) if trans_item: if trans_item.get('title'): values['tvshowtitle'] = trans_item.get('title') values['title'] = trans_item.get('title') if trans_item.get('overview'): values['plot'] =trans_item.get('overview') except: from resources.lib.modules import log_utils log_utils.error() if not self.disable_fanarttv: extended_art = cache.get(fanarttv.get_tvshow_art, 168, tvdb) if extended_art: values.update(extended_art) values = dict((k, v) for k, v in iter(values.items()) if v is not None and v != '') # remove empty keys so .update() doesn't over-write good meta with empty values. self.list[i].update(values) meta = {'imdb': imdb, 'tmdb': tmdb, 'tvdb': tvdb, 'lang': self.lang, 'user': self.user, 'item': values} self.meta.append(meta) except: from resources.lib.modules import log_utils log_utils.error()
def download(name, image, url): if url == None: return from resources.lib.modules import control from resources.lib.modules import trakt try: headers = dict(urlparse.parse_qsl(url.rsplit('|', 1)[1])) except: headers = dict('') url = url.split('|')[0] content = re.compile('(.+?)\sS(\d*)E\d*$').findall(name) if control.setting('Download.auf.Deutsch') != 'false': if len(content) == 0: title = name[:-7] transyear = name.replace("(", "").replace(")", "") year = transyear[-4:] imdb = trakt.SearchMovie(title, year, full=False)[0] imdb = imdb.get('movie', '0') imdb = imdb.get('ids', {}).get('imdb', '0') imdb = 'tt' + re.sub('[^0-9]', '', str(imdb)) lang = 'de' germantitle = trakt.getMovieTranslation(imdb, lang) transname = germantitle.translate( None, '\/:*?"<>|').strip('.') + ' ' + '(' + str(year) + ')' else: title = name[:-7] transyear = name.replace("(", "").replace(")", "") year = transyear[-4:] imdb = trakt.SearchTVShow(title, year, full=False)[0] imdb = imdb.get('show', '0') imdb = imdb.get('ids', {}).get('imdb', '0') imdb = 'tt' + re.sub('[^0-9]', '', str(imdb)) lang = 'de' germantitle = trakt.getTVShowTranslation(imdb, lang) #transname = germantitle.translate(None, '\/:*?"<>|').strip('.') ### Warum nicht möglich? transname = name.translate(None, '\/:*?"<>|').strip('.') transtvshowtitle = content[0][0].translate(None, '\/:*?"<>|').strip('.') else: if len(content) == 0: transname = name.translate(None, '\/:*?"<>|').strip('.') else: transname = name.translate(None, '\/:*?"<>|').strip('.') transtvshowtitle = content[0][0].translate(None, '\/:*?"<>|').strip('.') levels = ['../../../..', '../../..', '../..', '..'] if len(content) == 0: dest = control.setting('movie.download.path') dest = control.transPath(dest) for level in levels: try: control.makeFile(os.path.abspath(os.path.join(dest, level))) except: pass control.makeFile(dest) dest = os.path.join(dest, transname) control.makeFile(dest) else: dest = control.setting('tv.download.path') dest = control.transPath(dest) for level in levels: try: control.makeFile(os.path.abspath(os.path.join(dest, level))) except: pass control.makeFile(dest) dest = os.path.join(dest, transtvshowtitle) control.makeFile(dest) dest = os.path.join(dest, 'Season %01d' % int(content[0][1])) control.makeFile(dest) ext = os.path.splitext(urlparse.urlparse(url).path)[1][1:] if not ext in ['mp4', 'mkv', 'flv', 'avi', 'mpg']: ext = 'mp4' dest = os.path.join(dest, transname + '.' + ext) sysheaders = urllib.quote_plus(json.dumps(headers)) sysurl = urllib.quote_plus(url) systitle = urllib.quote_plus(name) sysimage = urllib.quote_plus(image) sysdest = urllib.quote_plus(dest) script = inspect.getfile(inspect.currentframe()) cmd = 'RunScript(%s, %s, %s, %s, %s, %s)' % ( script, sysurl, sysdest, systitle, sysimage, sysheaders) xbmc.executebuiltin(cmd)