|
1 | 1 | import json
|
2 | 2 | from pprint import pprint
|
3 | 3 | import requests
|
| 4 | +import logbook |
| 5 | +from log_book import init_logger |
4 | 6 |
|
5 |
| -user_input = input('Movie name: ') |
| 7 | +logger = logbook.Logger(__file__) |
6 | 8 |
|
7 |
| -request = requests.get('http://www.omdbapi.com/?apikey=3e6f7dd7&t={}'.format(user_input)) |
8 |
| -json_result = json.loads(request.text) |
9 | 9 |
|
10 |
| -print("{}'s Awards: {}".format(user_input, json_result['Awards'])) |
| 10 | +def main(): |
| 11 | + init_logger('movie-app.log') |
| 12 | + logbook.info("Starting the omdb search app...") |
11 | 13 |
|
| 14 | + logbook.debug("Getting user's input...") |
| 15 | + movie_name = get_user_input() |
| 16 | + |
| 17 | + logbook.debug("Loading '{0}' data...".format(movie_name)) |
| 18 | + movie_data = load_movie_data(movie_name) |
| 19 | + |
| 20 | + |
| 21 | + logbook.debug("Displaying Awards...".format(movie_name)) |
| 22 | + display_awards(movie_data, movie_name) |
| 23 | + |
| 24 | + logbook.debug("Displaying Ratings...".format(movie_name)) |
| 25 | + displays_ratings(movie_data) |
| 26 | + |
| 27 | +def get_user_input(): |
| 28 | + user_input = input('Movie name: ') |
| 29 | + return user_input |
| 30 | + |
| 31 | +def load_movie_data(movie_name): |
| 32 | + request = requests.get('http://www.omdbapi.com/?apikey=3e6f7dd7&t={}'.format(movie_name)) |
| 33 | + json_result = json.loads(request.text) |
| 34 | + return json_result |
| 35 | + |
| 36 | +def display_awards(movie_data, movie_name): |
| 37 | + print("{}'s Awards: {}".format(movie_name, movie_data['Awards'])) |
| 38 | + |
| 39 | +def displays_ratings(movie_data): |
| 40 | + for rating in movie_data['Ratings']: |
| 41 | + display_rating(rating) |
| 42 | + |
| 43 | +def display_rating(rating): |
| 44 | + value = rating['Value'] |
| 45 | + value = parse_value(value) |
| 46 | + print(f"{rating['Source']} - {value}") |
12 | 47 |
|
13 | 48 | def parse_value(value: str):
|
| 49 | + logbook.debug("Parsing value '{0}'...".format(value)) |
14 | 50 | if value.endswith('%'):
|
15 | 51 | value = value.replace('%','')
|
16 | 52 | return '{}/10'.format(int(value) / 10)
|
17 | 53 | elif value.endswith('100'):
|
18 | 54 | (value, _) = value.split('/')
|
19 | 55 | return '{}/10'.format(int(value) / 10)
|
20 |
| - return value |
21 |
| - |
| 56 | + else: |
| 57 | + (value, _) = value.split('/') |
| 58 | + return '{}/10'.format(float(value) * 1.0) |
22 | 59 |
|
23 |
| -def display_rating(rating): |
24 |
| - value = rating['Value'] |
25 |
| - value = parse_value(value) |
26 |
| - print(f"{rating['Source']} - {value}") |
27 | 60 |
|
28 | 61 |
|
29 |
| -for rating in json_result['Ratings']: |
30 |
| - display_rating(rating) |
| 62 | +if __name__ == '__main__': |
| 63 | + main() |
0 commit comments