Python: Improved get_rating function

- handle missing responses from OMDB
- aesthetics
- PEP
pull/93/head
desimaniac 6 years ago
parent 7fb3554ec7
commit c1a42c636c

@ -3,28 +3,34 @@ import json
import requests import requests
log = logger.get_logger(__name__) log = logger.get_logger(__name__)
def get_rating(apikey,movie):
imdbID = movie['movie']['ids']['imdb']
if(imdbID): def get_rating(apikey, movie):
log.debug("Requesting ratings from OMDB for %s (%d) | Genres: %s | Country: %s | imdbID: %s",movie['movie']['title'], movie['movie']['year'],
', '.join(movie['movie']['genres']), movie['movie']['country'].upper(),imdbID) imdb_id = movie['movie']['ids']['imdb']
r = requests.get('http://www.omdbapi.com/?i=' + imdbID + '&apikey=' + apikey) if imdb_id:
if(r.status_code == 200): log.debug("Requesting info from OMDB for %s (%d) | Genres: %s | Country: %s | IMDB ID: %s",
log.debug("Successfully requested ratings from OMDB for %s (%d) | Genres: %s | Country: %s | imdbID: %s", movie['movie']['title'], movie['movie']['year'], ', '.join(movie['movie']['genres']),
(movie['movie']['country'] or 'N/A').upper(), imdb_id)
r = requests.get('http://www.omdbapi.com/?i=' + imdb_id + '&apikey=' + apikey)
if r.status_code == 200 and json.loads(r.text)["Response"] == 'True':
log.debug("Successfully requested ratings from OMDB for %s (%d) | Genres: %s | Country: %s | IMDB ID: %s",
movie['movie']['title'], movie['movie']['year'], movie['movie']['title'], movie['movie']['year'],
', '.join(movie['movie']['genres']), movie['movie']['country'].upper(), imdbID) ', '.join(movie['movie']['genres']), (movie['movie']['country'] or 'N/A').upper(), imdb_id)
for source in json.loads(r.text)["Ratings"]: for source in json.loads(r.text)["Ratings"]:
if(source['Source'] == 'Rotten Tomatoes'): if source['Source'] == 'Rotten Tomatoes':
log.debug("Rotten Tomatoes shows rating: %s for %s (%d) | Genres: %s | Country: %s | imdbID: %s ",source['Value'],movie['movie']['title'], movie['movie']['year'], log.debug("Rotten Tomatoes score of %s for %s (%d) | Genres: %s | Country: %s | IMDB ID: %s ",
', '.join(movie['movie']['genres']), movie['movie']['country'].upper(),imdbID) source['Value'], movie['movie']['title'], movie['movie']['year'],
', '.join(movie['movie']['genres']), (movie['movie']['country'] or 'N/A').upper(),
imdb_id)
return int(source['Value'].split('%')[0]) return int(source['Value'].split('%')[0])
else: else:
log.debug("Error encountered when requesting ratings from OMDB for %s (%d) | Genres: %s | Country: %s | imdbID: %s", log.debug("Error encountered when requesting ratings from OMDB for %s (%d) | Genres: %s | Country: %s" +
movie['movie']['title'], movie['movie']['year'], " | IMDB ID: %s", movie['movie']['title'], movie['movie']['year'],
', '.join(movie['movie']['genres']), movie['movie']['country'].upper(), imdbID) ', '.join(movie['movie']['genres']), (movie['movie']['country'] or 'N/A').upper(), imdb_id)
else: else:
log.debug("Skipping %s (%d) | Genres: %s | Country: %s as it does not have an imdbID", log.debug("Skipping %s (%d) | Genres: %s | Country: %s as it does not have an IMDB ID",
movie['movie']['title'], movie['movie']['year'], movie['movie']['title'], movie['movie']['year'], ', '.join(movie['movie']['genres']),
', '.join(movie['movie']['genres']), movie['movie']['country'].upper()) (movie['movie']['country'] or 'N/A').upper())
return -1 return -1

@ -574,7 +574,8 @@ def movies(list_type, add_limit=0, add_delay=2.5, sort='votes', rating=None, gen
log.error("FAILED adding %s (%d)", sorted_movie['movie']['title'], log.error("FAILED adding %s (%d)", sorted_movie['movie']['title'],
sorted_movie['movie']['year']) sorted_movie['movie']['year'])
else: else:
log.info("SKIPPING: %s (%d) | Genres: %s | Country: %s", sorted_movie['movie']['title'], log.info("Minimum Rotten Tomatoes score was not met. " +
"Skipping: %s (%d) | Genres: %s | Country: %s", sorted_movie['movie']['title'],
sorted_movie['movie']['year'], ', '.join(sorted_movie['movie']['genres']), sorted_movie['movie']['year'], ', '.join(sorted_movie['movie']['genres']),
(sorted_movie['movie']['country'] or 'N/A').upper()) (sorted_movie['movie']['country'] or 'N/A').upper())
# stop adding movies, if added_movies >= add_limit # stop adding movies, if added_movies >= add_limit

Loading…
Cancel
Save