diff options
Diffstat (limited to 'bot/exts/evergreen/movie.py')
| -rw-r--r-- | bot/exts/evergreen/movie.py | 43 | 
1 files changed, 23 insertions, 20 deletions
| diff --git a/bot/exts/evergreen/movie.py b/bot/exts/evergreen/movie.py index 340a5724..10638aea 100644 --- a/bot/exts/evergreen/movie.py +++ b/bot/exts/evergreen/movie.py @@ -6,9 +6,11 @@ from urllib.parse import urlencode  from aiohttp import ClientSession  from discord import Embed -from discord.ext.commands import Bot, Cog, Context, group +from discord.ext.commands import Cog, Context, group +from bot.bot import Bot  from bot.constants import Tokens +from bot.utils.extensions import invoke_help_command  from bot.utils.pagination import ImagePaginator  # Define base URL of TMDB @@ -49,10 +51,9 @@ class Movie(Cog):      """Movie Cog contains movies command that grab random movies from TMDB."""      def __init__(self, bot: Bot): -        self.bot = bot          self.http_session: ClientSession = bot.http_session -    @group(name='movies', aliases=['movie'], invoke_without_command=True) +    @group(name="movies", aliases=("movie",), invoke_without_command=True)      async def movies(self, ctx: Context, genre: str = "", amount: int = 5) -> None:          """          Get random movies by specifying genre. Also support amount parameter, that define how much movies will be shown. @@ -71,15 +72,17 @@ class Movie(Cog):          # Capitalize genre for getting data from Enum, get random page, send help when genre don't exist.          genre = genre.capitalize()          try: -            result = await self.get_movies_list(self.http_session, MovieGenres[genre].value, 1) +            result = await self.get_movies_data(self.http_session, MovieGenres[genre].value, 1)          except KeyError: -            await ctx.send_help('movies') +            await invoke_help_command(ctx)              return          # Check if "results" is in result. If not, throw error. -        if "results" not in result.keys(): -            err_msg = f"There is problem while making TMDB API request. Response Code: {result['status_code']}, " \ -                      f"{result['status_message']}." +        if "results" not in result: +            err_msg = ( +                f"There is problem while making TMDB API request. Response Code: {result['status_code']}, " +                f"{result['status_message']}." +            )              await ctx.send(err_msg)              logger.warning(err_msg) @@ -87,8 +90,8 @@ class Movie(Cog):          page = random.randint(1, result["total_pages"])          # Get movies list from TMDB, check if results key in result. When not, raise error. -        movies = await self.get_movies_list(self.http_session, MovieGenres[genre].value, page) -        if 'results' not in movies.keys(): +        movies = await self.get_movies_data(self.http_session, MovieGenres[genre].value, page) +        if "results" not in movies:              err_msg = f"There is problem while making TMDB API request. Response Code: {result['status_code']}, " \                        f"{result['status_message']}."              await ctx.send(err_msg) @@ -100,12 +103,12 @@ class Movie(Cog):          await ImagePaginator.paginate(pages, ctx, embed) -    @movies.command(name='genres', aliases=['genre', 'g']) +    @movies.command(name="genres", aliases=("genre", "g"))      async def genres(self, ctx: Context) -> None:          """Show all currently available genres for .movies command."""          await ctx.send(f"Current available genres: {', '.join('`' + genre.name + '`' for genre in MovieGenres)}") -    async def get_movies_list(self, client: ClientSession, genre_id: str, page: int) -> Dict[str, Any]: +    async def get_movies_data(self, client: ClientSession, genre_id: str, page: int) -> List[Dict[str, Any]]:          """Return JSON of TMDB discover request."""          # Define params of request          params = { @@ -129,7 +132,7 @@ class Movie(Cog):          pages = []          for i in range(amount): -            movie_id = movies['results'][i]['id'] +            movie_id = movies["results"][i]["id"]              movie = await self.get_movie(client, movie_id)              page, img = await self.create_page(movie) @@ -150,7 +153,7 @@ class Movie(Cog):          # 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" @@ -161,8 +164,8 @@ class Movie(Cog):          text += "__**Production Information**__\n" -        companies = movie['production_companies'] -        countries = movie['production_countries'] +        companies = movie["production_companies"] +        countries = movie["production_countries"]          text += f"**Made by:** {', '.join(company['name'] for company in companies)}\n"          text += f"**Made in:** {', '.join(country['name'] for country in countries)}\n\n" @@ -172,8 +175,8 @@ class Movie(Cog):          budget = f"{movie['budget']:,d}" if movie['budget'] else "?"          revenue = f"{movie['revenue']:,d}" if movie['revenue'] else "?" -        if movie['runtime'] is not None: -            duration = divmod(movie['runtime'], 60) +        if movie["runtime"] is not None: +            duration = divmod(movie["runtime"], 60)          else:              duration = ("?", "?") @@ -181,7 +184,7 @@ class Movie(Cog):          text += f"**Revenue:** ${revenue}\n"          text += f"**Duration:** {f'{duration[0]} hour(s) {duration[1]} minute(s)'}\n\n" -        text += movie['overview'] +        text += movie["overview"]          img = f"http://image.tmdb.org/t/p/w200{movie['poster_path']}" @@ -197,5 +200,5 @@ class Movie(Cog):  def setup(bot: Bot) -> None: -    """Load Movie Cog.""" +    """Load the Movie Cog."""      bot.add_cog(Movie(bot)) | 
