From 27a404eac97a714da437b5917695d78b6376e4ed Mon Sep 17 00:00:00 2001 From: cinnaboot Date: Sat, 11 Apr 2020 14:51:16 -0400 Subject: [PATCH] more reliably parse guess result dictionary --- video_metadata/views/tmdb.py | 39 +++++++++++++++++++----------------- 1 file changed, 21 insertions(+), 18 deletions(-) diff --git a/video_metadata/views/tmdb.py b/video_metadata/views/tmdb.py index ca98c10..0353ab3 100644 --- a/video_metadata/views/tmdb.py +++ b/video_metadata/views/tmdb.py @@ -50,7 +50,7 @@ class media_type(IntEnum): @dataclass class query_data: errors: List[str] = field(default_factory=list) - is_valid:bool = True + is_valid:bool = False raw_query_str:str = '' parsed_query_str:str = '' title:str = '' @@ -163,8 +163,6 @@ def manual_query(): view_results = [] errors = [] - flash('boo') - if 'query' in request.form: query.raw_query_str = request.form['query'] q_res = doQueryAlgorithm(query) @@ -364,7 +362,10 @@ def doQueryAlgorithm(query:query_data) -> dict: vr.title = r.title vr.movie_id = r.id vr.tmdb_link = TMDB_MOVIE_LINK_URL + str(r.id) - vr.release_date = r.release_date + + if 'release_date' in r.__dict__: + vr.release_date = r.release_date + elif query.media_type == media_type.TV_SHOW: vr.title = r.name vr.tv_id = r.id @@ -386,20 +387,22 @@ def guessMedia(query:query_data) -> query_data: guess = guessit(query.raw_query_str) logging.disable(logging.NOTSET) - query.title = guess['title'] - query.parsed_query_str = guess['title'].lower() - - try: - if guess['type'] == 'movie': - query.media_type = media_type.MOVIE - query.movie_year = guess['year'] - else: # NOTE: 'type' has to be 'episode' here. guessit has no 'unknown' equivalent - query.media_type = media_type.TV_SHOW - query.tv_season = guess['season'] - query.tv_episode = guess['episode'] - except KeyError as e: - query.is_valid = False - current_app.logger.error(f'invalid key: {e}, for query: {query.raw_query_str}') + for k, v in guess.items(): + if k == 'type': + if v == 'movie': query.media_type = media_type.MOVIE + elif v == 'episode': query.media_type = media_type.TV_SHOW + elif k == 'title': + query.title = v + query.parsed_query_str = v.lower() + elif k == 'year': + query.movie_year = v + elif k == 'season': + query.tv_season = v + elif k == 'episode': + query.tv_episode = v + + if query.title != '' and query.media_type != media_type.UNKNOWN: + query.is_valid = True return query