コード例 #1
0
def make_tvshow_item(info):
    from resources.lib.TheMovieDB import TV, Find
    try:
        tvdb_id = info['tvdb']
    except:
        tvdb_id = ''
    if tvdb_id == '':
        try:
            tvdb_id = info['tvdb_id']
        except:
            tvdb_id = ''
    try:
        tmdb_id = info['tmdb']
    except:
        tmdb_id = ''
    if tmdb_id == '':
        try:
            tmdb_id = info['id']
        except:
            tmdb_id = ''
    try:
        imdb_id = info['imdb_id']
    except:
        imdb_id = ''
    if imdb_id == '':
        try:
            imdb_id = info['imdb']
        except:
            imdb_id = ''
    if not info['poster']:
        info['poster'] = None
    if not info['fanart']:
        info['fanart'] = None
    if info['poster'] == None or info['poster'] == '':
        if tmdb_id != None and tmdb_id != '':
            show = TV(tmdb_id).info()
            if show['poster_path'] != None and show['poster_path'] != '':
                info['poster'] = u'https://image.tmdb.org/t/p/w500' + show[
                    'poster_path']
            if info['fanart'] == None or info['fanart'] == '':
                if show['backdrop_path'] != None and show[
                        'backdrop_path'] != '':
                    info[
                        'fanart'] = u'https://image.tmdb.org/t/p/original' + show[
                            'backdrop_path']
    if info['poster'] == None or info['poster'] == '':
        if tvdb_id != None and tvdb_id != '':
            show = TVDB.get_show(int(tvdb_id), full=False)
            if show != None:
                if show['seriesname'] != None and show['seriesname'] != '':
                    if show.get('poster', '') != None and show.get(
                            'poster', '') != '':
                        info['poster'] = show.get('poster', '')
                    if info['fanart'] == None or info['fanart'] == '':
                        if show.get('fanart', '') != None and show.get(
                                'fanart', '') != '':
                            info['fanart'] = show.get('fanart', '')
    if info['poster'] == None or info['poster'] == '':
        if imdb_id != None and imdb_id != '':
            preshow = Find(imdb_id).info(external_source='imdb_id')
            proshow = preshow['tv_results']
            if proshow != []:
                show = proshow[0]
            else:
                show = []
            if show != []:
                if show['poster_path'] != None and show['poster_path'] != '':
                    info['poster'] = u'https://image.tmdb.org/t/p/w500' + show[
                        'poster_path']
                if info['fanart'] == None or info['fanart'] == '':
                    if show['backdrop_path'] != None and show[
                            'backdrop_path'] != '':
                        info[
                            'fanart'] = u'https://image.tmdb.org/t/p/original' + show[
                                'backdrop_path']
    if info['fanart'] == None or info['fanart'] == '':
        info['fanart'] = plugin.get_addon_fanart()
    if xbmc.getCondVisibility('system.hasaddon(script.extendedinfo)'):
        context_menu = [
            ('OpenInfo',
             'RunScript(script.extendedinfo,info=extendedtvinfo,tvdb_id=%s)' %
             tvdb_id),
            ('TV trailer',
             'RunScript(script.extendedinfo,info=playtvtrailer,tvdb_id=%s)' %
             tvdb_id),
            ('Add to library',
             'RunPlugin(%s)' % plugin.url_for('tv_add_to_library', id=tvdb_id))
        ]
    else:
        context_menu = [
            ('Add to library',
             'RunPlugin(%s)' % plugin.url_for('tv_add_to_library', id=tvdb_id))
        ]
    return {
        'label': text.to_utf8(info['title']),
        'path': plugin.url_for('tv_tvshow', id=tvdb_id),
        'context_menu': context_menu,
        'thumbnail': info['poster'],
        'poster': info['poster'],
        'fanart': info['fanart'],
        'info_type': 'video',
        'stream_info': {
            'video': {}
        },
        'info': info
    }
コード例 #2
0
ファイル: lists.py プロジェクト: andromeda420/andromeda420
def _lists_trakt_show_list(list_items):
	from resources.lib.TheMovieDB import People
	genres_dict = Trakt.get_genres('tv')
	items = []
	for list_item in list_items:
		item = None
		item_type = list_item['type']
		if item_type == 'show':
			tvdb_id = list_item['show']['ids']['tvdb']
			if tvdb_id != '' and tvdb_id != None:
				show = list_item['show']
				info = meta_info.get_tvshow_metadata_trakt(show, genres_dict)
				item = nav_tvshows.make_tvshow_item(info)
			else:
				item = None
		elif item_type == 'season':
			tvdb_id = list_item['show']['ids']['tvdb']
			season = list_item['season']
			show = list_item['show']
			show_info = meta_info.get_tvshow_metadata_trakt(show, genres_dict)
			season_info = meta_info.get_season_metadata_trakt(show_info,season, genres_dict)
			label = '%s - Season %s' % (show['title'], season['number'])
			item = (
				{
					'label': label,
					'path': plugin.url_for('tv_season', id=tvdb_id, season_num=list_item['season']['number']),
					'info': season_info,
					'thumbnail': season_info['poster'],
					'poster': season_info['poster'],
					'properties': {'fanart_image': season_info['fanart']}
				})
		elif item_type == 'episode':
			tvdb_id = list_item['show']['ids']['tvdb']
			episode = list_item['episode']
			show = list_item['show']
			season_number = episode['season']
			episode_number = episode['number']
			show_info = meta_info.get_tvshow_metadata_trakt(show, genres_dict)
			episode_info = meta_info.get_episode_metadata_trakt(show_info, episode)
			label = '%s - S%sE%s - %s' % (show_info['title'], season_number, episode_number, episode_info['title'])
			item = (
				{
					'label': label,
					'path': plugin.url_for('tv_play', id=tvdb_id, season=season_number, episode=episode_number),
					'info': episode_info,
					'is_playable': True,
					'info_type': 'video',
					'stream_info': {'video': {}},
					'thumbnail': episode_info['poster'],
					'poster': episode_info['poster'],
					'properties': {'fanart_image': episode_info['fanart']}
				})
		elif item_type == 'movie':
			movie = list_item['movie']
			movie_info = meta_info.get_trakt_movie_metadata(movie)
			try:
				tmdb_id = movie_info['tmdb']
			except:
				tmdb_id = ''
			try:
				imdb_id = movie_info['imdb']
			except:
				imdb_id = ''
			if tmdb_id != None and tmdb_id != '':
				src = 'tmdb'
				id = tmdb_id
			elif imdb_id != None and mdb_id != '':
				src = 'imdb'
				id = imdb_id
			else:
				src = ''
				id = ''
			if src == '':
				item = None
			item = nav_movies.make_movie_item(movie_info)
		elif item_type == 'person':
			person_id = list_item['person']['ids']['trakt']
			person_tmdb_id = list_item['person']['ids']['tmdb']
			try:
				person_images = People(person_tmdb_id).images()['profiles']
				person_image = 'https://image.tmdb.org/t/p/w640' + person_images[0]['file_path']
			except:
				person_image = ''
			person_name = text.to_utf8(list_item['person']['name'])
			item = (
				{
					'label': person_name,
					'path': plugin.url_for('trakt_movies_person', person_id=person_id),
					'thumbnail': person_image,
					'poster': person_image,
					'properties': {'fanart_image': person_image}
				})
		if item is not None:
			items.append(item)
	for item in items:
		item['properties'] = {'fanart_image': plugin.get_addon_fanart()}
	return items
コード例 #3
0
def get_movie_parameters(movie):
    parameters = {}
    parameters['date'] = movie['release_date']
    parameters['premiered'] = movie['release_date']
    parameters['year'] = text.parse_year(movie['release_date'])
    parameters['released'] = movie['release_date']
    parameters['id'] = movie['id']
    parameters['imdb'] = movie['imdb_id']
    parameters['title'] = text.escape(movie['title'])
    parameters['striptitle'] = ' '.join(
        re.compile('[\W_]+').sub(' ', movie['title']).split())
    parameters['urltitle'] = urllib.quote(text.to_utf8(parameters['title']))
    parameters['sorttitle'] = text.to_utf8(parameters['title'])
    articles = ['a ', 'A ', 'An ', 'an ', 'The ', 'the ']
    for article in articles:
        if text.to_utf8(parameters['title']).startswith(article):
            parameters['sorttitle'] = text.to_utf8(
                parameters['title']).replace(article, '')
    parameters['shorttitle'] = text.to_utf8(parameters['title'][1:-1])
    if 'movie' in str(parameters['sorttitle']).lower():
        parameters['sortesttitle'] = str(
            parameters['sorttitle']).lower().replace(' movie', '')
    elif 'movi' in str(parameters['sorttitle']).lower():
        parameters['sortesttitle'] = str(
            parameters['sorttitle']).lower().replace(' movi', '')
    else:
        parameters['sortesttitle'] = parameters['sorttitle']
    parameters['original_title'] = text.escape(movie['original_title'])
    parameters['name'] = u'%s (%s)' % (parameters['title'], parameters['year'])
    parameters['urlname'] = urllib.quote(text.to_utf8(parameters['name']))
    parameters['released'] = movie['release_date']
    parameters['rating'] = movie['vote_average']
    studios = [x['name'] for x in movie['production_companies'] if not x == '']
    parameters['studios'] = ' / '.join(studios)
    genre = [x['name'] for x in movie['genres'] if not x == '']
    parameters['genres'] = ' / '.join(genre)
    if movie['runtime'] and movie['runtime'] != '' and movie['runtime'] != None:
        parameters['runtime'] = movie['runtime']
    else:
        parameters['runtime'] = '0'
    if movie['vote_count'] and movie['vote_count'] != '' and movie[
            'vote_count'] != None and movie['vote_count'] != 0:
        parameters['votes'] = movie['vote_count']
    else:
        parameters['votes'] = '0'
    if movie['vote_average'] and movie['vote_average'] != '' and movie[
            'vote_average'] != None and movie['vote_average'] != 0:
        parameters['rating'] = movie['vote_average']
    else:
        parameters['rating'] = '0'
    if movie['credits']['crew']:
        prewriters = [
            i['name'] for i in movie['credits']['crew']
            if i['department'] == 'Writing'
        ]
        writers = []
        for item in prewriters:
            if item not in writers:
                writers.append(item)
        parameters['writers'] = ', '.join(writers)
    else:
        parameters['writers'] = ''
    if movie['credits']['crew']:
        predirectors = [
            i['name'] for i in movie['credits']['crew']
            if i['department'] == 'Directing'
        ]
        directors = []
        for item in predirectors:
            if item not in directors:
                directors.append(item)
        parameters['directors'] = ', '.join(directors)
    else:
        parameters['directors'] = ''
    if movie['credits']['cast']:
        preactors = [i['name'] for i in movie['credits']['cast']]
        actors = []
        for item in preactors:
            if item not in actors:
                actors.append(item)
        parameters['actors'] = actors
    else:
        parameters['actors'] = ''
    if movie['releases']['countries'][0]['certification']:
        parameters['mpaa'] = movie['releases']['countries'][0]['certification']
    else:
        parameters['mpaa'] = ''
    parameters['duration'] = int(parameters['runtime']) * 60
    parameters['plot'] = text.escape(movie['overview'])
    parameters['tagline'] = text.escape(movie['tagline'])
    if 'https://image.tmdb.org/t/p/w300%s' % str(movie['poster_path']):
        parameters['poster'] = 'https://image.tmdb.org/t/p/w300%s' % str(
            movie['poster_path'])
    else:
        parameters['poster'] = 'https://image.tmdb.org/t/p/original%s' % str(
            movie['poster_path'])
    if 'https://image.tmdb.org/t/p/w1280%s' % str(movie['backdrop_path']):
        parameters['fanart'] = 'https://image.tmdb.org/t/p/w1280%s' % str(
            movie['backdrop_path'])
    else:
        parameters['fanart'] = 'https://image.tmdb.org/t/p/original%s' % str(
            movie['backdrop_path'])
    parameters['now'] = datetime.datetime.now().strftime('%Y%m%d%H%M%S%f')
    trakt_ids = play_base.get_trakt_ids('tmdb', movie['id'],
                                        parameters['title'], 'movie',
                                        parameters['year'])
    if 'slug' in trakt_ids and trakt_ids['slug'] != '' and trakt_ids[
            'slug'] != None:
        try:
            parameters['slug'] = trakt_ids['slug']
        except:
            pass
    else:
        parameters['slug'] = text.clean_title(parameters['title'].lower())
    return parameters
コード例 #4
0
def add_tvshow_to_library(library_folder, show):
    clean_needed = False
    id = show['id']
    showname = text.to_utf8(show['seriesname'])
    if showname == 'None' or showname == None:
        show_folder = os.path.join(library_folder, str(id) + '/')
        if os.path.isdir(show_folder):
            return shutil.rmtree(show_folder)
    enc_show = showname.translate(None, '\/:*?"<>|').strip('.')
    show_folder = os.path.join(library_folder, str(id) + '/')
    if not xbmcvfs.exists(show_folder):
        try:
            xbmcvfs.mkdir(show_folder)
        except:
            pass
        nfo_filepath = os.path.join(show_folder, 'tvshow.nfo')
        if not xbmcvfs.exists(nfo_filepath):
            nfo_file = xbmcvfs.File(nfo_filepath, 'w')
            content = 'http://thetvdb.com/?tab=series&id=%s' % str(id)
            nfo_file.write(content)
            nfo_file.close()
    ids = [id, show.get('imdb_id', None)]
    ids = [x for x in ids if x]
    try:
        libshows = RPC.VideoLibrary.GetTVShows(
            properties=['imdbnumber', 'title', 'year'])['tvshows']
        libshows = [
            i for i in libshows if str(i['imdbnumber']) in ids or (
                str(i['year']) == str(show.get('year', 0))
                and text.equals(show['seriesname'], i['title']))
        ]
        libshow = libshows[0]
        libepisodes = RPC.VideoLibrary.GetEpisodes(
            filter={
                'and': [{
                    'field': 'tvshow',
                    'operator': 'is',
                    'value': text.to_utf8(libshow['title'])
                }]
            },
            properties=['season', 'episode', 'file'])['episodes']
        libepisodes = [(int(i['season']), int(i['episode']))
                       for i in libepisodes if not i['file'].endswith('.strm')]
    except:
        libepisodes = []
    for (season_num, season) in show.items():
        if season_num == 0:
            continue
        for (episode_num, episode) in season.items():
            if episode_num == 0:
                continue
            delete = False
            if not episode.has_aired(flexible=False):
                delete = True
            if delete or (season_num, episode_num) in libepisodes:
                if library_tv_remove_strm(show, show_folder, id, season_num,
                                          episode_num):
                    clean_needed = True
            else:
                library_tv_strm(show, show_folder, id, season_num, episode_num)
    files, dirs = xbmcvfs.listdir(show_folder)
    if not dirs:
        shutil.rmtree(show_folder)
        clean_needed = True
    return clean_needed
コード例 #5
0
def make_tvshow_item(info):
	from resources.lib.TheMovieDB import TV, Find
	try:
		tvdb_id = info['tvdb']
	except:
		tvdb_id = ''
	if tvdb_id == '': 
		try:
			tvdb_id = info['tvdb_id']
		except:
			tvdb_id = ''
	try:
		tmdb_id = info['tmdb']
	except:
		tmdb_id = ''
	if tmdb_id == '': 
		try:
			tmdb_id = info['id']
		except:
			tmdb_id = ''
	try:
		imdb_id = info['imdb_id']
	except:
		imdb_id = ''
	if imdb_id == '': 
		try:
			imdb_id = info['imdb']
		except:
			imdb_id = ''
	if not info['poster']:
		info['poster'] = None
	if not info['fanart']:
		info['fanart'] = None
	if info['poster'] == None or info['poster'] == '':
		if tmdb_id != None and tmdb_id != '':
			show = TV(tmdb_id).info()
			if show['poster_path'] != None and show['poster_path'] != '':
				info['poster'] = u'https://image.tmdb.org/t/p/w500' + show['poster_path']
			if info['fanart'] == None or info['fanart'] == '':
				if show['backdrop_path'] != None and show['backdrop_path'] != '':
					info['fanart'] = u'https://image.tmdb.org/t/p/original' + show['backdrop_path']
	if info['poster'] == None or info['poster'] == '':
		if tvdb_id != None and tvdb_id != '':
			show = TVDB.get_show(int(tvdb_id), full=False)
			if show != None:
				if show['seriesname'] != None and show['seriesname'] != '':
					if show.get('poster', '') != None and show.get('poster', '') != '':
						info['poster'] = show.get('poster', '')
					if info['fanart'] == None or info['fanart'] == '':
						if show.get('fanart', '') != None and show.get('fanart', '') != '':
							info['fanart'] = show.get('fanart', '')
	if info['poster'] == None or info['poster'] == '':
		if imdb_id != None and imdb_id != '':
			preshow = Find(imdb_id).info(external_source='imdb_id')
			proshow = preshow['tv_results']
			if proshow != []:
				show = proshow[0]
			else:
				show = []
			if show != []:
				if show['poster_path'] != None and show['poster_path'] != '':
					info['poster'] = u'https://image.tmdb.org/t/p/w500' + show['poster_path']
				if info['fanart'] == None or info['fanart'] == '':
					if show['backdrop_path'] != None and show['backdrop_path'] != '':
						info['fanart'] = u'https://image.tmdb.org/t/p/original' + show['backdrop_path']
	if info['fanart'] == None or info['fanart'] == '':
		info['fanart'] = plugin.get_addon_fanart()
	if xbmc.getCondVisibility('system.hasaddon(script.extendedinfo)'):
		context_menu = [
			('OpenInfo', 'RunScript(script.extendedinfo,info=extendedtvinfo,tvdb_id=%s)' % tvdb_id),
			('TV trailer', 'RunScript(script.extendedinfo,info=playtvtrailer,tvdb_id=%s)' % tvdb_id),
			('Add to library', 'RunPlugin(%s)' % plugin.url_for('tv_add_to_library', id=tvdb_id))]
	else:
		context_menu = [
			('Add to library', 'RunPlugin(%s)' % plugin.url_for('tv_add_to_library', id=tvdb_id))]
	properties = {}
	try:
		if traktenabled and countenabled:
			if 'trakt_id' in info.keys() and info['trakt_id'] != '':
				id = info['trakt_id']
			else:
				id = Trakt.find_trakt_ids('tvdb', tvdb_id, 'show')['trakt']
			playdata = get_show_play_count(id)
			properties = {'TotalSeasons': len(playdata['seasons']),
							'TotalEpisodes': playdata['aired'],
							'WatchedEpisodes': playdata['completed'],
							'UnWatchedEpisodes': playdata['aired'] - playdata['completed']}
			if properties['UnWatchedEpisodes'] == 0:
				info.update({'playcount': 1})
	except:
		pass
	showitem = {
		'label': text.to_utf8(info['title']),
		'path': plugin.url_for('tv_tvshow', id=tvdb_id),
		'context_menu': context_menu,
		'thumbnail': info['poster'],
		'poster': info['poster'],
		'fanart': info['fanart'],
		'info_type': 'video',
		'stream_info': {'video': {}},
		'properties': properties,
		'info': info
		}
	if enablefanart:
		try:
			art = get_fanarttv_art(tvdb_id, query='show')
			art = checkart(art)
			showitem.update(art)
		except:
			pass
	return showitem
コード例 #6
0
ファイル: play_tvshows.py プロジェクト: 17Q/modules4all
def get_trakt_episode_parameters(show, preason, prepisode):
	if 'status_code' in str(prepisode):
		return None
	parameters = {'id': show['external_ids']['tvdb_id'], 'season': preason['season_number'], 'episode': prepisode['episode_number']}
	network = show['networks'][0]['name']
	parameters['network'] = network
	if network:
		parameters['network_clean'] = re.sub('(\(.*?\))', '', network).strip()
	else:
		parameters['network_clean'] = network
	parameters['imdb'] = show['external_ids']['imdb_id']
	parameters['tmdb'] = show['id']
	parameters['showname'] = text.escape(show['seriesname'])
	parameters['clearname'] = text.escape(show['seriesname'])
	parameters['urlname'] = urllib.quote(text.to_utf8(parameters['clearname']))
	articles = ['a ', 'A ', 'An ', 'an ', 'The ', 'the ']
	parameters['sortname'] = text.to_utf8(parameters['clearname'])
	for article in articles:
		if text.to_utf8(parameters['clearname']).startswith(article):
			parameters['sortname'] = text.to_utf8(parameters['clearname']).replace(article,'')
	parameters['shortname'] = text.to_utf8(parameters['clearname'][1:-1])
	parameters['absolute_number'] = 'na'
	parameters['title'] = prepisode['name']
	parameters['urltitle'] = urllib.quote(text.to_utf8(parameters['title']))
	parameters['sorttitle'] = text.to_utf8(parameters['title'])
	articles = ['a ', 'A ', 'An ', 'an ', 'The ', 'the ']
	for article in articles:
		if text.to_utf8(parameters['title']).startswith(article):
			parameters['sorttitle'] = text.to_utf8(parameters['title']).replace(article,'')
	parameters['shorttitle'] = text.to_utf8(parameters['title'][1:-1])
	parameters['firstaired'] = prepisode['air_date']
	parameters['year'] = int(show['first_air_date'].split('-')[0].strip())
	if parameters['firstaired']:
		parameters['epyear'] = int(parameters['firstaired'].split('-')[0].strip())
		parameters['epmonth'] = int(parameters['firstaired'].split('-')[1].strip())
		parameters['epday'] = int(parameters['firstaired'].split('-')[2].strip())
	else:
		parameters['epyear'] = 1900
		parameters['epmonth'] = 0
		parameters['epday'] = 0
	parameters['epid'] = prepisode['id']
	if preason['episodes'][0] != None and preason['episodes'][0] != '' and preason['episodes'][0] != []:
		parameters['poster'] = u'https://image.tmdb.org/t/p/w500%s' % preason['episodes'][0]['still_path']
	elif show['poster_path'] != None and show['poster_path'] != '' and show['poster_path'] != []:
		parameters['poster'] = u'https://image.tmdb.org/t/p/w500%s' % show['poster_path']
	if show['backdrop_path'] != None and show['backdrop_path'] != '' and show['backdrop_path'] != []:
		parameters['fanart'] = u'https://image.tmdb.org/t/p/original%s' % show['backdrop_path']
	else:
		parameters['fanart'] = ''
	parameters['thumbnail'] = parameters['poster']
	try:
		genre = [x for x in show['genre'].split('|') if not x == '']
	except:
		genre = ''
	parameters['genre'] = ' / '.join(genre)
	if 'JP' in show['origin_country']:
		is_anime = True
	else:
		is_anime = False
	if is_anime:
		parameters['name'] = u'%s %s' % (parameters['showname'], parameters['absolute_number'])
	else:
		parameters['name'] = u'%s S%02dE%02d' % (parameters['showname'], parameters['season'], parameters['episode'])
	parameters['now'] = datetime.datetime.now().strftime('%Y%m%d%H%M%S%f')
	return parameters
コード例 #7
0
ファイル: play_tvshows.py プロジェクト: 17Q/modules4all
def get_episode_parameters(show, season, episode):
	from resources.lib.TheMovieDB import Find
	if season in show and episode in show[season]:
		season_obj = show[season]
		episode_obj = show[season][episode]
	else:
		return
	episodes = 0
	count = 0
	for i in show.items():
		episodes += len(i[1].items())
		if i[0] != 0 and i[0] < (season -1):
			count += len(i[1].items())
	parameters = {'id': show['id'], 'season': season, 'episode': episode}
	if season in NTH:
		parameters['season_ordinal'] = NTH[season]
	else:
		try:
			if text.number_to_text(season) in (season, ''):
				if int(str(season)[-1]) in NTH:
					parameters['season_ordinal'] = '%s%s' % (DCS[int(str(season)[-2])], NTH[int(str(season)[-1])])
				else:
					parameters['season_ordinal'] = '%s%sth' % (DCS[int(str(season)[-2])], text.number_to_text(int(str(season)[-1])))
			else:
				parameters['season_ordinal'] = '%sth' % text.number_to_text(season)
		except:
			pass
	parameters['episodes'] = episodes
	parameters['seasons'] = len(show.items())
	parameters['seasons_no_specials'] = len([season_num for (season_num, season) in show.items() if season_num != 0])
	show_info = meta_info.get_tvshow_metadata_tvdb(show, banners=True)
	network = show.get('network', '')
	parameters['network'] = network
	if network:
		parameters['network_clean'] = re.sub('(\(.*?\))', '', network).strip()
	else:
		parameters['network_clean'] = network
	try:
		parameters['absolute_number'] = int(episode_obj.get('absolute_number'))
	except:
		parameters['absolute_number'] = count + episode
	parameters['realname'] = re.sub('\(\d{4}\)', '', show['seriesname']).strip()
	parameters['showname'] = text.escape(show['seriesname'])
	parameters['clearname'] = text.escape(show['seriesname'])
	parameters['stripname'] = ' '.join(re.compile('[\W_]+').sub(' ', show['seriesname']).split())
	parameters['sortname'] = text.to_utf8(parameters['clearname'])
	parameters['urlname'] = urllib.quote(text.to_utf8(parameters['clearname']))
	parameters['shortname'] = text.to_utf8(parameters['clearname'][1:-1])
	parameters['title'] = text.escape(episode_obj.get('episodename', str(episode)))
	parameters['urltitle'] = urllib.quote(text.to_utf8(parameters['title']))
	parameters['sorttitle'] = text.to_utf8(parameters['title'])
	parameters['shorttitle'] = text.to_utf8(parameters['title'][1:-1])
	articles = ['a ', 'A ', 'An ', 'an ', 'The ', 'the ']
	for article in articles:
		if text.to_utf8(parameters['clearname']).startswith(article):
			parameters['sortname'] = text.to_utf8(parameters['clearname']).replace(article,'')
		if text.to_utf8(parameters['title']).startswith(article):
			parameters['sorttitle'] = text.to_utf8(parameters['title']).replace(article,'')
	parameters['firstaired'] = episode_obj.get('firstaired')
	parameters['series_firstaired'] = show.get('firstaired')
	parameters['year'] = show.get('year', 0)
	if parameters['firstaired']:
		parameters['epyear'] = int(parameters['firstaired'].split('-')[0].strip())
		parameters['epmonth'] = int(parameters['firstaired'].split('-')[1].strip())
		parameters['epday'] = int(parameters['firstaired'].split('-')[2].strip())
	else:
		parameters['epyear'] = 1980
		parameters['epmonth'] = 0
		parameters['epday'] = 0
	parameters['imdb'] = show.get('imdb_id', '')
	parameters['tvrage'] = 0
	parameters['epimdb'] = episode_obj.get('imdb_id', '')
	parameters['eptmdb'] = 0
	parameters['eptrakt'] = 0
	parameters['eptvrage'] = 0
	parameters['epid'] = episode_obj.get('id')
	if episode_obj.get('id') != '':
		parameters['plot'] = text.escape(episode_obj.get('overview'))
	else:
		parameters['plot'] = text.escape(show['overview'])
	parameters['series_plot'] = text.escape(show['overview'])
	if episode_obj.get('rating') not in (None, ''):
		parameters['rating'] = episode_obj.get('rating')
	elif show.get('rating') not in (None, ''):
		parameters['rating'] = show.get('rating')
	else:
		parameters['rating'] = 0.0
	if show.get('rating') not in (None, ''):
		parameters['series_rating'] = show.get('rating')
	else:
		parameters['series_rating'] = 0
	if episode_obj.get('ratingcount') != '':
		parameters['votes'] = episode_obj.get('ratingcount')
	else:
		parameters['votes'] = show['ratingcount']
	parameters['mpaa'] = show.get('contentrating')
	parameters['writers'] = episode_obj.get('writer')
	parameters['directors'] = episode_obj.get('director')
	parameters['status'] = show.get('status')
	if show.get('actors') != None and show.get('actors') != '':
		parameters['actors'] = re.sub(r'\<[^)].*?\>', '', show.get('actors'))
	if show.get('genre') != None and '|' in show.get('genre'):
		parameters['genres'] = show.get('genre').replace('|',' / ')[3:-3]
	else:
		parameters['genres'] = show.get('genre')
	parameters['runtime'] = show['runtime']
	parameters['duration'] = int(show['runtime']) * 60
	tvdb_base = 'https://thetvdb.com/banners/'
	if episode_obj.get('filename') != '':
		parameters['thumbnail'] = tvdb_base + str(episode_obj.get('filename'))
	elif show.get('poster') != '':
		parameters['thumbnail'] = show.get('poster')
	if show.get('poster') != '' and show.get('poster') is not None:
		parameters['poster'] = show.get('poster')
	parameters['thumbnail'] = '%sepisodes/%s/%s.jpg' % (tvdb_base, str(show['id']), str(parameters['epid']))
	parameters['banner'] = show.get('banner')
	if show.get('fanart') != None and show.get('fanart') != '':
		parameters['fanart'] = show.get('fanart')
	else:
		parameters['fanart'] = ''
	is_anime = False
	if parameters['genres'] != None and parameters['absolute_number'] and parameters['absolute_number'] != '0' and 'animation' in parameters['genres'].lower():
		tmdb_results = Find(show['id']).info(external_source='tvdb_id')
		for tmdb_show in tmdb_results.get('tv_results', []):
			if 'JP' in tmdb_show['origin_country']:
				is_anime = True
	if is_anime:
		parameters['name'] = u'%s %s' % (parameters['showname'], parameters['absolute_number'])
	else:
		parameters['name'] = u'%s S%02dE%02d' % (parameters['showname'], parameters['season'], parameters['episode'])
	parameters['now'] = datetime.datetime.now().strftime('%Y%m%d%H%M%S%f')
	trakt_ids = play_base.get_trakt_ids(id_type='tvdb', id=show['id'], type='show')
	if 'slug' in trakt_ids:
		if trakt_ids['slug'] != '' and trakt_ids['slug'] != None:
			parameters['slug'] = trakt_ids['slug']
		else:
			parameters['slug'] = text.clean_title(parameters['clearname'].lower())
	return parameters
コード例 #8
0
 def prep_search_str(self, text):
     t_text = text.to_unicode(text)
     for chr in t_text:
         if ord(chr) >= 1488 and ord(chr) <= 1514:
             return text.to_utf8(text[::-1])
     return text.to_utf8(text)
コード例 #9
0
 def _has_match(item, pattern, parameters):
     season_infolabel_match = False
     if item.get('season'):
         item_season = str(item.get('season'))
         param_season = str(parameters.get('season', ''))
         if item_season == param_season:
             season_infolabel_match = True
     if pattern == '{season}' and season_infolabel_match:
         return True
     episode_infolabel_match = False
     if item.get('episode'):
         item_episode = str(item.get('episode'))
         param_episode = str(parameters.get('episode', ''))
         if item_episode == param_episode:
             episode_infolabel_match = True
     if pattern == '{episode}' and episode_infolabel_match:
         return True
     if pattern == '{season}x{episode}' and season_infolabel_match and episode_infolabel_match:
         return True
     label = item['label']
     pattern = text.to_unicode(pattern)
     pattern = pattern.replace('$$', r'($|^|\s|\]|\[)')
     first_season = False
     if '{season}' in pattern and '1' == str(parameters.get('season')):
         pattern = pattern.replace('{season}', '(?P<season>\d*)')
         first_season = True
     pattern = text.apply_parameters(pattern, parameters)
     for c in IGNORE_CHARS:
         label = label.replace(c, ' ')
     pattern = text.to_unicode(text.to_utf8(pattern))
     label = text.to_unicode(text.to_utf8(label))
     if '$INFO[' in pattern:
         m = re.search('\\[(.*?)\]', pattern)
         info = m.group(1)
         pattern = pattern.replace('$INFO[%s]' % info,
                                   xbmc.getInfoLabel(info))
     if '$LOCALIZE[' in pattern:
         m = re.search('\[(\d+)\]', pattern)
         id = int(m.group(1))
         pattern = pattern.replace(
             '$LOCALIZE[%s]' % id,
             xbmc.getLocalizedString(id).encode('utf-8'))
     if '$ADDON[' in pattern:
         m = re.search('\[.*\ (\d+)\]', pattern)
         aid = m.group(0).strip('[]').split(' ')[0]
         id = int(m.group(1))
         pattern = pattern.replace(
             '$ADDON[%s %s]' % (aid, id),
             xbmcaddon.Addon(aid).getLocalizedString(id).encode('utf-8'))
     if pattern.startswith('><'):
         label = re.sub(r'\[[^)].*?\]', '', label)
         pattern = pattern.strip('><')
     plugin.log.debug('matching pattern %s to label %s' %
                      (text.to_utf8(pattern), text.to_utf8(label)))
     r = re.compile(pattern, re.I | re.UNICODE)
     match = r.match(label)
     if ', The' in label and match is None:
         label = u'The ' + label.replace(', The', '')
         match = r.match(label)
     if match is not None and match.end() == len(label):
         if first_season and not match.group('season') in ('1', '', '01',
                                                           None):
             return False
         plugin.log.debug('match: ' + text.to_utf8(label))
         return True
     return False
コード例 #10
0
ファイル: Trakt.py プロジェクト: henryjfry/fryhenryj
def call_trakt(path,
               params={},
               data=None,
               is_delete=False,
               with_auth=True,
               pagination=False,
               page=1):
    params = dict([(k, text.to_utf8(v)) for k, v in params.items() if v])
    headers = {
        'Content-Type': 'application/json',
        'trakt-api-key': CLIENT_ID,
        'trakt-api-version': '2'
    }

    def send_query():
        if with_auth:
            try:
                expires_at = plugin.get_setting('trakt_expires_at', int)
                if time.time() > expires_at:
                    trakt_refresh_token()
            except:
                pass
            token = plugin.get_setting('trakt_access_token', unicode)
            if token:
                headers['Authorization'] = 'Bearer ' + token
        if data is not None:
            assert not params
            return requests.post('https://api.trakt.tv/' + path,
                                 json=data,
                                 headers=headers)
        elif is_delete:
            return requests.delete('https://api.trakt.tv/' + path,
                                   headers=headers)
        else:
            return requests.get('https://api.trakt.tv/' + path,
                                params,
                                headers=headers)

    def paginated_query(page):
        lists = []
        params['page'] = page
        results = send_query()
        if with_auth and results.status_code == 401 and plugin.yesno(
                title, msg1) and trakt_authenticate():
            response = paginated_query(1)
            return response
        results.raise_for_status()
        results.encoding = 'utf-8'
        lists.extend(results.json())
        return lists, results.headers['X-Pagination-Page-Count']

    if pagination == False:
        response = send_query()
        if with_auth and response.status_code == 401 and plugin.yesno(
                title, msg1) and trakt_authenticate():
            response = send_query()
        response.raise_for_status()
        response.encoding = 'utf-8'
        return response.json()
    else:
        response, numpages = paginated_query(page)
        return response, numpages