diff options
| author | 2020-10-05 14:14:01 -0400 | |
|---|---|---|
| committer | 2020-10-05 14:14:01 -0400 | |
| commit | 17b4703748d6e0b8f92e8679b7b6799c20097d11 (patch) | |
| tree | 74a830a71e53449dbaff95a8aabb568c608b9667 /bot/exts | |
| parent | Merge pull request #457 from algo-1/minesweeper-contribution (diff) | |
Replace OMDB with TMDB
Closes: #136
Diffstat (limited to 'bot/exts')
| -rw-r--r-- | bot/exts/evergreen/snakes/_snakes_cog.py | 94 | 
1 files changed, 43 insertions, 51 deletions
| diff --git a/bot/exts/evergreen/snakes/_snakes_cog.py b/bot/exts/evergreen/snakes/_snakes_cog.py index a846274b..9216c054 100644 --- a/bot/exts/evergreen/snakes/_snakes_cog.py +++ b/bot/exts/evergreen/snakes/_snakes_cog.py @@ -15,6 +15,7 @@ import aiohttp  import async_timeout  from PIL import Image, ImageDraw, ImageFont  from discord import Colour, Embed, File, Member, Message, Reaction +from discord.errors import HTTPException  from discord.ext.commands import BadArgument, Bot, Cog, CommandError, Context, bot_has_permissions, group  from bot.constants import ERROR_REPLIES, Tokens @@ -739,71 +740,62 @@ class Snakes(Cog):      @snakes_group.command(name='movie')      async def movie_command(self, ctx: Context) -> None:          """ -        Gets a random snake-related movie from OMDB. +        Gets a random snake-related movie from TMDB.          Written by Samuel.          Modified by gdude. +        Modified by Will Da Silva.          """ -        url = "http://www.omdbapi.com/" -        page = random.randint(1, 27) +        page = random.randint(1, 16) -        response = await self.bot.http_session.get( -            url, -            params={ -                "s": "snake", -                "page": page, -                "type": "movie", -                "apikey": Tokens.omdb -            } -        ) -        data = await response.json() -        movie = random.choice(data["Search"])["imdbID"] - -        response = await self.bot.http_session.get( -            url, -            params={ -                "i": movie, -                "apikey": Tokens.omdb -            } -        ) -        data = await response.json() - -        embed = Embed( -            title=data["Title"], -            color=SNAKE_COLOR -        ) - -        del data["Response"], data["imdbID"], data["Title"] - -        for key, value in data.items(): -            if not value or value == "N/A" or key in ("Response", "imdbID", "Title", "Type"): -                continue +        async with ctx.typing(): +            response = await self.bot.http_session.get( +                "https://api.themoviedb.org/3/search/movie", +                params={ +                    "query": "snake", +                    "page": page, +                    "language": "en-US", +                    "api_key": Tokens.tmdb, +                } +            ) +            data = await response.json() +            movie = random.choice(data["results"])["id"] + +            response = await self.bot.http_session.get( +                f"https://api.themoviedb.org/3/movie/{movie}", +                params={ +                    "language": "en-US", +                    "api_key": Tokens.tmdb, +                } +            ) +            data = await response.json() -            if key == "Ratings":  # [{'Source': 'Internet Movie Database', 'Value': '7.6/10'}] -                rating = random.choice(value) +        embed = Embed(title=data["title"], color=SNAKE_COLOR) -                if rating["Source"] != "Internet Movie Database": -                    embed.add_field(name=f"Rating: {rating['Source']}", value=rating["Value"]) +        if data["poster_path"] is not None: +            embed.set_image(url=f"https://images.tmdb.org/t/p/original{data['poster_path']}?api_key={Tokens.tmdb}") -                continue +        embed.add_field(name="Overview", value=data["overview"]) -            if key == "Poster": -                embed.set_image(url=value) -                continue +        embed.add_field(name="Release Date", value=data["release_date"]) -            elif key == "imdbRating": -                key = "IMDB Rating" +        if data["genres"]: +            embed.add_field(name="Genres", value=", ".join([x["name"] for x in data["genres"]])) -            elif key == "imdbVotes": -                key = "IMDB Votes" +        if data["vote_count"]: +            embed.add_field(name="Rating", value=f"{data['vote_average']}/10 ({data['vote_count']} votes)", inline=True) -            embed.add_field(name=key, value=value, inline=True) +        if data["budget"] and data["revenue"]: +            embed.add_field(name="Budget", value=data["budget"], inline=True) +            embed.add_field(name="Revenue", value=data["revenue"], inline=True) -        embed.set_footer(text="Data provided by the OMDB API") +        embed.set_footer(text="Data provided by the TMDB") -        await ctx.channel.send( -            embed=embed -        ) +        try: +            await ctx.channel.send(embed=embed) +        except HTTPException as err: +            await ctx.channel.send("An error occurred while fetching a snake-related movie!") +            raise err from None      @snakes_group.command(name='quiz')      @locked() | 
