def tmdbMoviesTitleYear(title, year, tmdb_api=None): try: string = 'tmdbMoviesTitleYear_%s_%s' % (title, year) url = 'https://api.themoviedb.org/3/search/movie?api_key=%s&query=%s&year=%s&page=%s' % ( getTmdbAPI(tmdb_api), title, year) return cache_function(string, url, EXPIRY_1_MONTH)['results'][0] except: return None
def tmdbEnglishTranslation(db_type, tmdb_id, tmdb_api=None): try: string = 'tmdbEnglishTranslation_%s_%s' % (db_type, tmdb_id) url = 'https://api.themoviedb.org/3/%s/%s/translations?api_key=%s' % ( db_type, tmdb_id, getTmdbAPI(tmdb_api)) return cache_function(getTmdb, string, url, EXPIRY_1_YEAR)['translations'] except: return None
def tmdbTVShowsTitleYear(title, year, tmdb_api=None): try: string = 'tmdbTVShowsTitleYear_%s_%s' % (title, year) url = 'https://api.themoviedb.org/3/search/tv?api_key=%s&query=%s&first_air_date_year=%s' % ( getTmdbAPI(tmdb_api), title, year) return cache_function(getTmdb, string, url, EXPIRY_1_MONTH)['results'][0] except: return None
def tmdbTVShowsExternalID(external_source, external_id, tmdb_api=None): try: string = 'tmdbTVShowsExternalID_%s_%s' % (external_source, external_id) url = 'https://api.themoviedb.org/3/find/%s?api_key=%s&external_source=%s' % ( external_id, getTmdbAPI(tmdb_api), external_source) return cache_function(getTmdb, string, url, EXPIRY_1_MONTH)['tv_results'][0] except: return None
def get(db_type, language, remote_id, client_key): def request_art(dummy): try: art = requests.get(query, headers=headers, timeout=20.0) return art.json() except: return None def parse_art(art): if art is None: return '' try: result = [(x['url'], x['likes']) for x in art if x.get('lang') == language] if not result and language != 'en': result = [(x['url'], x['likes']) for x in art if x.get('lang') == 'en'] if not result: result = [(x['url'], x['likes']) for x in art if any( value == x.get('lang') for value in ['00', ''])] if not result: result = [(x['url'], x['likes']) for x in art] result.sort(key=lambda x: int(x[1]), reverse=True) result = [x[0] for x in result][0] except: result = '' if not 'http' in result: result = '' return result if not remote_id: return default_extra_fanart query = base_url % (db_type, remote_id) headers = {'client-key': client_key, 'api-key': api_key} string = 'fanart_%s_%s_%s' % (db_type, language, remote_id) art = cache_function(request_art, string, 'dummy', EXPIRY_6_MONTHS, json=False) if art == None or 'error_message' in art: return default_extra_fanart art_get = art.get if db_type == 'movies': fanart_data = { 'fanarttv_poster': parse_art(art_get('movieposter')), 'fanarttv_fanart': parse_art(art_get('moviebackground')), 'banner': parse_art(art_get('moviebanner')), 'clearart': parse_art( art_get('movieart', []) + art_get('hdmovieclearart', [])), 'clearlogo': parse_art(art_get('movielogo', []) + art_get('hdmovielogo', [])), 'landscape': parse_art(art_get('moviethumb')), 'discart': parse_art(art_get('moviedisc')), 'fanart_added': True } else: fanart_data = { 'fanarttv_poster': parse_art(art_get('tvposter')), 'fanarttv_fanart': parse_art(art_get('showbackground')), 'banner': parse_art(art_get('tvbanner')), 'clearart': parse_art(art_get('clearart', []) + art_get('hdclearart', [])), 'clearlogo': parse_art(art_get('hdtvlogo', []) + art_get('clearlogo', [])), 'landscape': parse_art(art_get('tvthumb')), 'discart': '', 'fanart_added': True } return fanart_data