Example #1
0
 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
Example #2
0
    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
Example #3
0
	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()
Example #4
0
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)