Browse Source

more reliably parse guess result dictionary

master
cinnaboot 6 years ago
parent
commit
27a404eac9
  1. 37
      video_metadata/views/tmdb.py

37
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)
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

Loading…
Cancel
Save