Skip to content

Commit

Permalink
[metadata.tvshows.themoviedb.org.python] v1.7.1
Browse files Browse the repository at this point in the history
- fix for crash when getting config from TMDb website
- fix for TMDb config never getting updated from website without restart
  • Loading branch information
pkscout committed Nov 7, 2024
1 parent edecf04 commit c6ff5ae
Show file tree
Hide file tree
Showing 4 changed files with 65 additions and 57 deletions.
7 changes: 4 additions & 3 deletions metadata.tvshows.themoviedb.org.python/addon.xml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<addon id="metadata.tvshows.themoviedb.org.python"
name="TMDb TV Shows"
version="1.7.0"
version="1.7.1"
provider-name="Team Kodi">
<requires>
<import addon="xbmc.python" version="3.0.0"/>
Expand All @@ -10,8 +10,9 @@
<extension point="xbmc.metadata.scraper.tvshows" library="main.py" cachepersistence="00:15"/>
<extension point="xbmc.addon.metadata">
<reuselanguageinvoker>true</reuselanguageinvoker>
<news>1.7.0
change method for getting source settings
<news>1.7.1
fix for crash when getting config from TMDb website
fix for TMDb config never getting updated from website without restart
</news>
<platform>all</platform>
<license>GPL-3.0-or-later</license>
Expand Down
4 changes: 4 additions & 0 deletions metadata.tvshows.themoviedb.org.python/changelog.txt
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
1.7.1
fix for crash when getting config from TMDb website
fix for TMDb config never getting updated from website without restart

1.7.0
change method for getting source settings to account for different sources
in one run having different settings
Expand Down
18 changes: 10 additions & 8 deletions metadata.tvshows.themoviedb.org.python/libs/data_utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -38,8 +38,6 @@


SOURCE_SETTINGS = settings.getSourceSettings()
TMDB_PARAMS = {'api_key': settings.TMDB_CLOWNCAR,
'language': SOURCE_SETTINGS["LANG_DETAILS"]}
BASE_URL = 'https://api.themoviedb.org/3/{}'
FIND_URL = BASE_URL.format('find/{}')
TAG_RE = re.compile(r'<[^>]+>')
Expand Down Expand Up @@ -87,6 +85,7 @@ def _clean_plot(plot):
def _set_cast(cast_info, vtag):
# type: (InfoType, ListItem) -> ListItem
"""Save cast info to list item"""
imagerooturl, previewrooturl = settings.loadBaseUrls()
cast = []
for item in cast_info:
actor = {
Expand All @@ -96,7 +95,7 @@ def _set_cast(cast_info, vtag):
}
thumb = None
if safe_get(item, 'profile_path') is not None:
thumb = settings.IMAGEROOTURL + item['profile_path']
thumb = imagerooturl + item['profile_path']
cast.append(Actor(actor['name'], actor['role'], actor['order'], thumb))
vtag.setCast(cast)

Expand Down Expand Up @@ -192,15 +191,16 @@ def _get_names(item_list):
def get_image_urls(image):
# type: (Dict) -> Tuple[Text, Text]
"""Get image URLs from image information"""
imagerooturl, previewrooturl = settings.loadBaseUrls()
if image.get('file_path', '').endswith('.svg'):
return None, None
if image.get('type') == 'fanarttv':
theurl = image['file_path']
previewurl = theurl.replace(
'.fanart.tv/fanart/', '.fanart.tv/preview/')
else:
theurl = settings.IMAGEROOTURL + image['file_path']
previewurl = settings.PREVIEWROOTURL + image['file_path']
theurl = imagerooturl + image['file_path']
previewurl = previewrooturl + image['file_path']
return theurl, previewurl


Expand Down Expand Up @@ -238,6 +238,7 @@ def set_show_artwork(show_info, list_item):
def add_main_show_info(list_item, show_info, full_info=True):
# type: (ListItem, InfoType, bool) -> ListItem
"""Add main show info to a list item"""
imagerooturl, previewrooturl = settings.loadBaseUrls()
vtag = list_item.getVideoInfoTag()
original_name = show_info.get('original_name')
if SOURCE_SETTINGS["KEEPTITLE"] and original_name:
Expand Down Expand Up @@ -305,8 +306,8 @@ def add_main_show_info(list_item, show_info, full_info=True):
else:
image = show_info.get('poster_path', '')
if image and not image.endswith('.svg'):
theurl = settings.IMAGEROOTURL + image
previewurl = settings.PREVIEWROOTURL + image
theurl = imagerooturl + image
previewurl = previewrooturl + image
vtag.addAvailableArtwork(
theurl, arttype='poster', preview=previewurl)
logger.debug('adding tv show information for %s to list item' % showname)
Expand Down Expand Up @@ -393,7 +394,8 @@ def _convert_ext_id(ext_provider, ext_id):
'thetvdb': 'tvdb_id',
'tvdb': 'tvdb_id'}
show_url = FIND_URL.format(ext_id)
params = TMDB_PARAMS.copy()
params = {'api_key': settings.TMDB_CLOWNCAR,
'language': SOURCE_SETTINGS["LANG_DETAILS"]}
provider = providers_dict.get(ext_provider)
if provider:
params['external_source'] = provider
Expand Down
93 changes: 47 additions & 46 deletions metadata.tvshows.themoviedb.org.python/libs/settings.py
Original file line number Diff line number Diff line change
Expand Up @@ -25,33 +25,55 @@
from datetime import datetime, timedelta


TMDB_CLOWNCAR = 'af3a53eb387d57fc935e9128468b1899'
FANARTTV_CLOWNCAR = 'b018086af0e1478479adfc55634db97d'
TRAKT_CLOWNCAR = '90901c6be3b2de5a4fa0edf9ab5c75e9a5a0fef2b4ee7373d8b63dcf61f95697'
MAXIMAGES = 200
FANARTTV_MAPPING = {'showbackground': 'backdrops',
'tvposter': 'posters',
'tvbanner': 'banner',
'hdtvlogo': 'clearlogo',
'clearlogo': 'clearlogo',
'hdclearart': 'clearart',
'clearart': 'clearart',
'tvthumb': 'landscape',
'characterart': 'characterart',
'seasonposter': 'seasonposters',
'seasonbanner': 'seasonbanner',
'seasonthumb': 'seasonlandscape'
}


def _get_date_numeric(datetime_):
return (datetime_ - datetime(1970, 1, 1)).total_seconds()


def _get_configuration():
addon = Addon()
logger.debug('getting configuration details')
return api_utils.load_info('https://api.themoviedb.org/3/configuration', params={'api_key': TMDB_CLOWNCAR}, verboselog=VERBOSELOG)
return api_utils.load_info('https://api.themoviedb.org/3/configuration', params={'api_key': TMDB_CLOWNCAR}, verboselog=addon.getSettingBool('verboselog'))


def _load_base_urls():
image_root_url = ADDON.getSettingString('originalUrl')
preview_root_url = ADDON.getSettingString('previewUrl')
last_updated = ADDON.getSettingString('lastUpdated')
def loadBaseUrls():
addon = Addon()
image_root_url = addon.getSettingString('originalUrl')
preview_root_url = addon.getSettingString('previewUrl')
last_updated = addon.getSettingString('lastUpdated')
if not image_root_url or not preview_root_url or not last_updated or \
float(last_updated) < _get_date_numeric(datetime.now() - timedelta(days=30)):
conf = _get_configuration()
if conf:
image_root_url = conf['images']['secure_base_url'] + 'original'
preview_root_url = conf['images']['secure_base_url'] + 'w780'
ADDON.setSetting('originalUrl', image_root_url)
ADDON.setSetting('previewUrl', preview_root_url)
ADDON.setSetting('lastUpdated', str(
addon.setSetting('originalUrl', image_root_url)
addon.setSetting('previewUrl', preview_root_url)
addon.setSetting('lastUpdated', str(
_get_date_numeric(datetime.now())))
return image_root_url, preview_root_url


def getSourceSettings():
addon = Addon()
settings = {}
logger.debug('Got settings of: {}'.format(sys.argv[2]))
try:
Expand All @@ -60,65 +82,44 @@ def getSourceSettings():
source_params = {}
source_settings = json.loads(source_params.get('pathSettings', '{}'))
settings["KEEPTITLE"] = source_settings.get(
'keeporiginaltitle', ADDON.getSettingBool('keeporiginaltitle'))
'keeporiginaltitle', addon.getSettingBool('keeporiginaltitle'))
settings["CATLANDSCAPE"] = source_settings.get('cat_landscape', True)
settings["STUDIOCOUNTRY"] = source_settings.get('studio_country', False)
settings["ENABTRAILER"] = source_settings.get(
'enab_trailer', ADDON.getSettingBool('enab_trailer'))
'enab_trailer', addon.getSettingBool('enab_trailer'))
settings["PLAYERSOPT"] = source_settings.get(
'players_opt', ADDON.getSettingString('players_opt')).lower()
'players_opt', addon.getSettingString('players_opt')).lower()
settings["VERBOSELOG"] = source_settings.get(
'verboselog', ADDON.getSettingBool('verboselog'))
'verboselog', addon.getSettingBool('verboselog'))
settings["CERT_COUNTRY"] = source_settings.get(
'tmdbcertcountry', ADDON.getSettingString('tmdbcertcountry')).lower()
'tmdbcertcountry', addon.getSettingString('tmdbcertcountry')).lower()
settings["SAVETAGS"] = source_settings.get(
'keywordsastags', ADDON.getSettingBool('keywordsastags'))
'keywordsastags', addon.getSettingBool('keywordsastags'))
settings["LANG_DETAILS"] = source_settings.get(
'languageDetails', ADDON.getSettingString('languageDetails'))
if source_settings.get('usedifferentlangforimages', ADDON.getSettingBool('usedifferentlangforimages')):
'languageDetails', addon.getSettingString('languageDetails'))
if source_settings.get('usedifferentlangforimages', addon.getSettingBool('usedifferentlangforimages')):
settings["LANG_IMAGES"] = source_settings.get(
'languageImages', ADDON.getSettingString('languageImages'))
'languageImages', addon.getSettingString('languageImages'))
else:
settings["LANG_IMAGES"] = settings["LANG_DETAILS"]
if source_settings.get('usecertprefix', ADDON.getSettingBool('usecertprefix')):
if source_settings.get('usecertprefix', addon.getSettingBool('usecertprefix')):
settings["CERT_PREFIX"] = source_settings.get(
'certprefix', ADDON.getSettingString('certprefix'))
'certprefix', addon.getSettingString('certprefix'))
else:
settings["CERT_PREFIX"] = ''
primary_rating = source_settings.get(
'ratings', ADDON.getSettingString('ratings')).lower()
'ratings', addon.getSettingString('ratings')).lower()
RATING_TYPES = [primary_rating]
if source_settings.get('imdbanyway', ADDON.getSettingBool('imdbanyway')) and primary_rating != 'imdb':
if source_settings.get('imdbanyway', addon.getSettingBool('imdbanyway')) and primary_rating != 'imdb':
RATING_TYPES.append('imdb')
if source_settings.get('traktanyway', ADDON.getSettingBool('traktanyway')) and primary_rating != 'trakt':
if source_settings.get('traktanyway', addon.getSettingBool('traktanyway')) and primary_rating != 'trakt':
RATING_TYPES.append('trakt')
if source_settings.get('tmdbanyway', ADDON.getSettingBool('tmdbanyway')) and primary_rating != 'tmdb':
if source_settings.get('tmdbanyway', addon.getSettingBool('tmdbanyway')) and primary_rating != 'tmdb':
RATING_TYPES.append('tmdb')
settings["RATING_TYPES"] = RATING_TYPES
settings["FANARTTV_ENABLE"] = source_settings.get(
'enable_fanarttv', ADDON.getSettingBool('enable_fanarttv'))
'enable_fanarttv', addon.getSettingBool('enable_fanarttv'))
settings["FANARTTV_CLIENTKEY"] = source_settings.get(
'fanarttv_clientkey', ADDON.getSettingString('fanarttv_clientkey'))
'fanarttv_clientkey', addon.getSettingString('fanarttv_clientkey'))
logger.debug('Sending back settings of: {}'.format(settings))
return settings


ADDON = Addon()
IMAGEROOTURL, PREVIEWROOTURL = _load_base_urls()
TMDB_CLOWNCAR = 'af3a53eb387d57fc935e9128468b1899'
FANARTTV_CLOWNCAR = 'b018086af0e1478479adfc55634db97d'
TRAKT_CLOWNCAR = '90901c6be3b2de5a4fa0edf9ab5c75e9a5a0fef2b4ee7373d8b63dcf61f95697'
MAXIMAGES = 200
FANARTTV_MAPPING = {'showbackground': 'backdrops',
'tvposter': 'posters',
'tvbanner': 'banner',
'hdtvlogo': 'clearlogo',
'clearlogo': 'clearlogo',
'hdclearart': 'clearart',
'clearart': 'clearart',
'tvthumb': 'landscape',
'characterart': 'characterart',
'seasonposter': 'seasonposters',
'seasonbanner': 'seasonbanner',
'seasonthumb': 'seasonlandscape'
}

0 comments on commit c6ff5ae

Please sign in to comment.