diff options
author | 2020-02-16 08:02:36 +0200 | |
---|---|---|
committer | 2020-02-16 08:02:36 +0200 | |
commit | eaaeadc76dd859e5d462d648169559b434f76883 (patch) | |
tree | a91a87b7abb948168ebac20a8382a64691224a58 /bot | |
parent | Moved get_random_movies to Movie cog and made this to smaller functions. (diff) |
Small style fixes: removed unnecessary comments, made ifs easier readable, fixed type hints.
Diffstat (limited to 'bot')
-rw-r--r-- | bot/seasons/evergreen/movie.py | 43 |
1 files changed, 17 insertions, 26 deletions
diff --git a/bot/seasons/evergreen/movie.py b/bot/seasons/evergreen/movie.py index fc0053fd..949da665 100644 --- a/bot/seasons/evergreen/movie.py +++ b/bot/seasons/evergreen/movie.py @@ -2,7 +2,7 @@ import logging import random from enum import Enum from os import environ -from typing import Dict, List, Tuple +from typing import Any, Dict, List, Tuple from urllib.parse import urlencode from aiohttp import ClientSession @@ -17,13 +17,17 @@ TMDB_API_KEY = environ.get('TMDB_API_KEY') # Define base URL of TMDB BASE_URL = "https://api.themoviedb.org/3/" -# Get logger logger = logging.getLogger(__name__) +# Define movie params, that will be used for every movie request +MOVIE_PARAMS = { + "api_key": TMDB_API_KEY, + "language": "en-US" +} + -# Genres with TMDB API IDs class MovieGenres(Enum): - """Genre names and IDs.""" + """Movies Genre names and IDs.""" Action = "28" Adventure = "12" @@ -111,10 +115,9 @@ class Movie(Cog): pages = await self.get_pages(self.http_session, movies, amount) embed = await self.get_embed(genre) - # Send movies, paginate await ImagePaginator.paginate(pages, ctx, embed) - async def get_movies_list(self, client: ClientSession, genre_id: str, page: int) -> Dict: + async def get_movies_list(self, client: ClientSession, genre_id: str, page: int) -> Dict[str, Any]: """Return JSON of TMDB discover request.""" # Define params of request params = { @@ -127,26 +130,20 @@ class Movie(Cog): "with_genres": genre_id } - # Create URL url = BASE_URL + "discover/movie?" + urlencode(params) - # Make discover request to TMDB + # Make discover request to TMDB, return result async with client.get(url) as resp: - data = await resp.json() - - # Return response result - return data + return await resp.json() - async def get_pages(self, client: ClientSession, movies: Dict, amount: int) -> (List[Tuple[str, str]]): + async def get_pages(self, client: ClientSession, movies: Dict[str, Any], amount: int) -> List[Tuple[str, str]]: """Fetch all movie pages from movies dictionary. Return list of pages.""" pages = [] for i in range(amount): - # Get movie ID, fetch movie information movie_id = movies['results'][i]['id'] movie = await self.get_movie(client, movie_id) - # Create page, append it to pages page, img = await self.create_page(movie) pages.append((page, img)) @@ -154,24 +151,18 @@ class Movie(Cog): async def get_movie(self, client: ClientSession, movie: int) -> Dict: """Get Movie by movie ID from TMDB. Return result dictionary.""" - # Define URL params, generate URL - params = { - "api_key": TMDB_API_KEY, - "language": "en-US" - } - url = BASE_URL + f"movie/{movie}?" + urlencode(params) + url = BASE_URL + f"movie/{movie}?" + urlencode(MOVIE_PARAMS) - # Do request, return result async with client.get(url) as resp: return await resp.json() - async def create_page(self, movie: Dict) -> (str, str): + async def create_page(self, movie: Dict[str, Any]) -> Tuple[str, str]: """Create page from TMDB movie request result. Return formatted page + image.""" text = "" # Add title + tagline (if not empty) text += f"**{movie['title']}**\n" - if movie['tagline'] != "": + if movie['tagline']: text += f"{movie['tagline']}\n\n" else: text += "\n" @@ -190,8 +181,8 @@ class Movie(Cog): text += "__**Some Numbers**__\n" - text += f"**Budget:** ${movie['budget'] if movie['budget'] != 0 else '?'}\n" - text += f"**Revenue:** ${movie['revenue'] if movie['revenue'] != 0 else '?'}\n" + text += f"**Budget:** ${movie['budget'] if movie['budget'] else '?'}\n" + text += f"**Revenue:** ${movie['revenue'] if movie['revenue'] else '?'}\n" text += f"**Duration:** {movie['runtime']} minutes\n\n" text += movie['overview'] |