From 9cd59d67f5eea951bc2f4dccf890cd4ca42ff779 Mon Sep 17 00:00:00 2001 From: cinnaboot Date: Thu, 26 Mar 2020 17:26:11 -0400 Subject: [PATCH] add logging and error handling for tmdb:makeTMDBQuery() --- video_metadata/util.py | 4 ++++ video_metadata/views/tmdb.py | 23 +++++++++++++++-------- 2 files changed, 19 insertions(+), 8 deletions(-) diff --git a/video_metadata/util.py b/video_metadata/util.py index 63afc20..86f609b 100644 --- a/video_metadata/util.py +++ b/video_metadata/util.py @@ -35,6 +35,10 @@ def dumpObject(obj): return yaml.dump(obj) +def getCurrentFileName() -> str: + from inspect import currentframe, getframeinfo + return currentframe().f_back.f_code.co_filename + def getLineNum() -> int: from inspect import currentframe, getframeinfo return currentframe().f_back.f_lineno diff --git a/video_metadata/views/tmdb.py b/video_metadata/views/tmdb.py index ab7e477..14ebf16 100644 --- a/video_metadata/views/tmdb.py +++ b/video_metadata/views/tmdb.py @@ -122,7 +122,7 @@ def list_movie_test(sorting = 'title'): md.*, pc.path FROM query_details md - JOIN path_cache pc ON pc.detail_id=md.detail_id + JOIN path_cache pc ON pc.detail_id=md._id ORDER BY {orderby}''' @@ -288,16 +288,18 @@ def doQueryAlgorithm(query:query_data) -> dict: if isQueryCached(query.parsed_query_str): view_results = makeLocalQuery(query) current_app.logger.debug(f'view_results length: {len(view_results)}') - else: - makeTMDBQuery(query, response) - + elif makeTMDBQuery(query, response): try: response.parsed_response = json.loads(response.response_body) except json.JSONDecodeError as e: - errors.append(e) + errors.append(str(e)) - if response.parsed_response and 'total_results' in response.parsed_response: + #if response.parsed_response and 'total_results' in response.parsed_response: + # response.result_count = response.parsed_response['total_results'] + try: response.result_count = response.parsed_response['total_results'] + except TypeError as e: + errors.append(str(e)) # TODO: it's possible for the query results to span multiple 'pages' # see) https://developers.themoviedb.org/3/search/search-movies @@ -423,6 +425,11 @@ def makeTMDBQuery(query_obj, response_obj): query_obj.errors.append('query type is not set') return False + if query_obj.parsed_query_str == '': + query_obj.errors.append(f'{util.getCurrentFileName()}:{util.getLineNum()},' + f'{util.getFunctionName()}, empty query string') + return False + current_app.logger.info( f'making remote query to TMDB API: ' f'{query_obj.media_type.name}, "{query_obj.parsed_query_str}"' @@ -444,10 +451,10 @@ def makeTMDBQuery(query_obj, response_obj): try: response = urllib.request.urlopen(req, context=context) except HTTPError as e: - query_obj.errors.append(e) + query_obj.errors.append(str(e)) return False except URLError as e: - query_obj.errors.append(e) + query_obj.errors.append(str(e)) return False for k, v in response.info().items():