Fix TMDB language caching.

This commit is contained in:
Prinz23 2023-02-10 14:57:47 +00:00 committed by JackDandy
parent 6067c00fe2
commit c521792c3d
3 changed files with 26 additions and 19 deletions

View file

@ -1,4 +1,10 @@
### 3.27.0 (2023-02-09 15:00:00 UTC) ### 3.27.1 (2023-02-10 15:25:00 UTC)
* Change display show status in Change show header
* Fix TMDB language caching
### 3.27.0 (2023-02-09 15:00:00 UTC)
* Update Apprise 0.8.5 (55a2edc) to 1.2.1 (3d07004) * Update Apprise 0.8.5 (55a2edc) to 1.2.1 (3d07004)
* Update attr 20.3.0 (f3762ba) to 22.2.0 (a9960de) * Update attr 20.3.0 (f3762ba) to 22.2.0 (a9960de)

View file

@ -76,7 +76,7 @@ def get_tmdb_constants():
# type: (...) -> Dict # type: (...) -> Dict
"""return tmdbsimple Configuration().info() or cached copy""" """return tmdbsimple Configuration().info() or cached copy"""
global _TMDB_CONSTANTS_CACHE global _TMDB_CONSTANTS_CACHE
# only retrieve info data if older then 3 days # only retrieve info data if older than 3 days
if 3 < (datetime.datetime.now() - _TMDB_CONSTANTS_CACHE['date']).days or not _TMDB_CONSTANTS_CACHE['data']: if 3 < (datetime.datetime.now() - _TMDB_CONSTANTS_CACHE['date']).days or not _TMDB_CONSTANTS_CACHE['data']:
try: try:
tv_genres = {g['id']: g['name'] for g in tmdbsimple.Genres().tv_list()['genres']} tv_genres = {g['id']: g['name'] for g in tmdbsimple.Genres().tv_list()['genres']}
@ -520,10 +520,10 @@ class TmdbIndexer(TVInfoBase):
number of votes, genres, the network they aired on and air dates. number of votes, genres, the network they aired on and air dates.
Discover also supports a nice list of sort options. See below for all Discover also supports a nice list of sort options. See below for all
of the available options. the available options.
Also note that a number of filters support being comma (,) or pipe (|) Also note that a number of filters support being comma (,) or pipe (|)
separated. Comma's are treated like an AND and query while pipe's are separated. Commas are treated like an AND query while pipe's are
an OR. an OR.
Some examples of what can be done with discover can be found at Some examples of what can be done with discover can be found at
@ -539,23 +539,23 @@ class TmdbIndexer(TVInfoBase):
popularity.desc, popularity.asc popularity.desc, popularity.asc
Default: popularity.desc Default: popularity.desc
air_date.gte: (optional) Filter and only include TV shows that have air_date.gte: (optional) Filter and only include TV shows that have
a air date (by looking at all episodes) that is greater or an air date (by looking at all episodes) that is greater or
equal to the specified value. equal to the specified value.
air_date.lte: (optional) Filter and only include TV shows that have air_date.lte: (optional) Filter and only include TV shows that have
a air date (by looking at all episodes) that is less than or an air date (by looking at all episodes) that is less than or
equal to the specified value. equal to the specified value.
first_air_date.gte: (optional) Filter and only include TV shows first_air_date.gte: (optional) Filter and only include TV shows
that have a original air date that is greater or equal to the that have an original air date that is greater or equal to the
specified value. Can be used in conjunction with the specified value. Can be used in conjunction with the
"include_null_first_air_dates" filter if you want to include "include_null_first_air_dates" filter if you want to include
items with no air date. items with no air date.
first_air_date.lte: (optional) Filter and only include TV shows first_air_date.lte: (optional) Filter and only include TV shows
that have a original air date that is less than or equal to the that have an original air date that is less than or equal to the
specified value. Can be used in conjunction with the specified value. Can be used in conjunction with the
"include_null_first_air_dates" filter if you want to include "include_null_first_air_dates" filter if you want to include
items with no air date. items with no air date.
first_air_date_year: (optional) Filter and only include TV shows first_air_date_year: (optional) Filter and only include TV shows
that have a original air date year that equal to the specified that have an original air date year that equal to the specified
value. Can be used in conjunction with the value. Can be used in conjunction with the
"include_null_first_air_dates" filter if you want to include "include_null_first_air_dates" filter if you want to include
items with no air date. items with no air date.
@ -760,9 +760,9 @@ class TmdbIndexer(TVInfoBase):
@property @property
def _tmdb_supported_lang_list(self): def _tmdb_supported_lang_list(self):
if None is self._tmdb_lang_list: if not TmdbIndexer._tmdb_lang_list:
self._get_languages() self._get_languages()
return self._tmdb_lang_list return TmdbIndexer._tmdb_lang_list
def _get_languages(self): def _get_languages(self):
# type: (...) -> None # type: (...) -> None
@ -772,10 +772,11 @@ class TmdbIndexer(TVInfoBase):
except (BaseException, Exception): except (BaseException, Exception):
lang_data = None lang_data = None
if lang_data: if lang_data:
self._supported_languages = [{'id': clean_data(a['iso_639_1']), 'name': clean_data(a['english_name']), TmdbIndexer._supported_languages = [{
'nativeName': clean_data(a['name']), 'id': clean_data(a['iso_639_1']), 'name': clean_data(a['english_name']),
'shortCode': None, 'sg_lang': clean_data(a['iso_639_1'])} 'nativeName': clean_data(a['name']), 'shortCode': None, 'sg_lang': clean_data(a['iso_639_1'])
for a in sorted(lang_data, key=lambda b: b['iso_639_1'])] } for a in sorted(lang_data, key=lambda b: b['iso_639_1'])]
self._tmdb_lang_list = [a['id'] for a in self._supported_languages] TmdbIndexer._tmdb_lang_list = [a['id'] for a in self._supported_languages]
else: else:
self._supported_languages = [] TmdbIndexer._supported_languages = []
TmdbIndexer._tmdb_lang_list = []

View file

@ -1347,9 +1347,9 @@ class TVInfoBase(object):
get all supported languages as list of dicts get all supported languages as list of dicts
[{'id': 'lang code', 'name': 'english name', 'nativeName': 'native name', 'sg_lang': 'sg lang code'}] [{'id': 'lang code', 'name': 'english name', 'nativeName': 'native name', 'sg_lang': 'sg lang code'}]
""" """
if None is self._supported_languages: if not self._supported_languages:
self._get_languages() self._get_languages()
return self._supported_languages return self._supported_languages or []
def __str__(self): def __str__(self):
return '<TVInfo(%s) (containing: %s)>' % (self.__class__.__name__, text_type(self.shows)) return '<TVInfo(%s) (containing: %s)>' % (self.__class__.__name__, text_type(self.shows))