aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar D0rs4n <[email protected]>2021-08-08 00:45:08 +0200
committerGravatar D0rs4n <[email protected]>2021-08-08 00:45:08 +0200
commita412cfe18ecb7845dafae8cedfdd6558a1b4dae4 (patch)
treebce1f9e1c2fa24c616a49bf4ea8e189d079ad89e
parentFine tune indenting in GithubInfo cog (diff)
Update Stackoverflow, Wolfram, movie_generator cogs to use aiohttp get params
-rw-r--r--bot/exts/evergreen/githubinfo.py2
-rw-r--r--bot/exts/evergreen/stackoverflow.py13
-rw-r--r--bot/exts/evergreen/wolfram.py34
-rw-r--r--bot/exts/valentines/movie_generator.py5
4 files changed, 29 insertions, 25 deletions
diff --git a/bot/exts/evergreen/githubinfo.py b/bot/exts/evergreen/githubinfo.py
index 012cc274..15f6154c 100644
--- a/bot/exts/evergreen/githubinfo.py
+++ b/bot/exts/evergreen/githubinfo.py
@@ -93,7 +93,7 @@ class GithubInfo(commands.Cog):
if user_data["type"] == "User":
embed.add_field(
name="Gists",
- value=f"[{gists}](https://gist.github.com/"f"{quote_plus(username, safe='')}"f")"
+ value=f"[{gists}](https://gist.github.com/{quote_plus(username, safe='')})"
)
embed.add_field(
diff --git a/bot/exts/evergreen/stackoverflow.py b/bot/exts/evergreen/stackoverflow.py
index a53cecf7..14d20e79 100644
--- a/bot/exts/evergreen/stackoverflow.py
+++ b/bot/exts/evergreen/stackoverflow.py
@@ -10,7 +10,12 @@ from bot.constants import Colours, Emojis
logger = logging.getLogger(__name__)
-BASE_URL = "https://api.stackexchange.com/2.2/search/advanced?order=desc&sort=activity&site=stackoverflow&q={query}"
+BASE_URL = "https://api.stackexchange.com/2.2/search/advanced"
+STACKOW_PARAMS = {
+ "order": "desc",
+ "sort": "activity",
+ "site": "stackoverflow"
+}
SEARCH_URL = "https://stackoverflow.com/search?q={query}"
ERR_EMBED = Embed(
title="Error in fetching results from Stackoverflow",
@@ -32,9 +37,8 @@ class Stackoverflow(commands.Cog):
@commands.cooldown(1, 15, commands.cooldowns.BucketType.user)
async def stackoverflow(self, ctx: commands.Context, *, search_query: str) -> None:
"""Sends the top 5 results of a search query from stackoverflow."""
- encoded_search_query = quote_plus(search_query)
-
- async with self.bot.http_session.get(BASE_URL.format(query=encoded_search_query)) as response:
+ params = STACKOW_PARAMS | {"q": search_query}
+ async with self.bot.http_session.get(url=BASE_URL, params=params) as response:
if response.status == 200:
data = await response.json()
else:
@@ -50,6 +54,7 @@ class Stackoverflow(commands.Cog):
return
top5 = data["items"][:5]
+ encoded_search_query = quote_plus(search_query)
embed = Embed(
title="Search results - Stackoverflow",
url=SEARCH_URL.format(query=encoded_search_query),
diff --git a/bot/exts/evergreen/wolfram.py b/bot/exts/evergreen/wolfram.py
index d23afd6f..26674d37 100644
--- a/bot/exts/evergreen/wolfram.py
+++ b/bot/exts/evergreen/wolfram.py
@@ -1,7 +1,7 @@
import logging
from io import BytesIO
from typing import Callable, List, Optional, Tuple
-from urllib import parse
+from urllib.parse import urlencode
import arrow
import discord
@@ -17,7 +17,7 @@ log = logging.getLogger(__name__)
APPID = Wolfram.key
DEFAULT_OUTPUT_FORMAT = "JSON"
-QUERY = "http://api.wolframalpha.com/v2/{request}?{data}"
+QUERY = "http://api.wolframalpha.com/v2/{request}"
WOLF_IMAGE = "https://www.symbols.com/gi.php?type=1&id=2886&i=1"
MAX_PODS = 20
@@ -108,7 +108,7 @@ def custom_cooldown(*ignore: List[int]) -> Callable:
async def get_pod_pages(ctx: Context, bot: Bot, query: str) -> Optional[List[Tuple]]:
"""Get the Wolfram API pod pages for the provided query."""
async with ctx.typing():
- url_str = parse.urlencode({
+ params = {
"input": query,
"appid": APPID,
"output": DEFAULT_OUTPUT_FORMAT,
@@ -116,27 +116,27 @@ async def get_pod_pages(ctx: Context, bot: Bot, query: str) -> Optional[List[Tup
"location": "the moon",
"latlong": "0.0,0.0",
"ip": "1.1.1.1"
- })
- request_url = QUERY.format(request="query", data=url_str)
+ }
+ request_url = QUERY.format(request="query")
- async with bot.http_session.get(request_url) as response:
+ async with bot.http_session.get(url=request_url, params=params) as response:
json = await response.json(content_type="text/plain")
result = json["queryresult"]
-
+ log_full_url = f"{request_url}?{urlencode(params)}"
if result["error"]:
# API key not set up correctly
if result["error"]["msg"] == "Invalid appid":
message = "Wolfram API key is invalid or missing."
log.warning(
"API key seems to be missing, or invalid when "
- f"processing a wolfram request: {url_str}, Response: {json}"
+ f"processing a wolfram request: {log_full_url}, Response: {json}"
)
await send_embed(ctx, message)
return
message = "Something went wrong internally with your request, please notify staff!"
- log.warning(f"Something went wrong getting a response from wolfram: {url_str}, Response: {json}")
+ log.warning(f"Something went wrong getting a response from wolfram: {log_full_url}, Response: {json}")
await send_embed(ctx, message)
return
@@ -172,18 +172,18 @@ class Wolfram(Cog):
@custom_cooldown(*STAFF_ROLES)
async def wolfram_command(self, ctx: Context, *, query: str) -> None:
"""Requests all answers on a single image, sends an image of all related pods."""
- url_str = parse.urlencode({
+ params = {
"i": query,
"appid": APPID,
"location": "the moon",
"latlong": "0.0,0.0",
"ip": "1.1.1.1"
- })
- query = QUERY.format(request="simple", data=url_str)
+ }
+ request_url = QUERY.format(request="simple")
# Give feedback that the bot is working.
async with ctx.typing():
- async with self.bot.http_session.get(query) as response:
+ async with self.bot.http_session.get(url=request_url, params=params) as response:
status = response.status
image_bytes = await response.read()
@@ -257,18 +257,18 @@ class Wolfram(Cog):
@custom_cooldown(*STAFF_ROLES)
async def wolfram_short_command(self, ctx: Context, *, query: str) -> None:
"""Requests an answer to a simple question."""
- url_str = parse.urlencode({
+ params = {
"i": query,
"appid": APPID,
"location": "the moon",
"latlong": "0.0,0.0",
"ip": "1.1.1.1"
- })
- query = QUERY.format(request="result", data=url_str)
+ }
+ request_url = QUERY.format(request="result")
# Give feedback that the bot is working.
async with ctx.typing():
- async with self.bot.http_session.get(query) as response:
+ async with self.bot.http_session.get(url=request_url, params=params) as response:
status = response.status
response_text = await response.text()
diff --git a/bot/exts/valentines/movie_generator.py b/bot/exts/valentines/movie_generator.py
index 0fc5edb4..d2dc8213 100644
--- a/bot/exts/valentines/movie_generator.py
+++ b/bot/exts/valentines/movie_generator.py
@@ -1,7 +1,6 @@
import logging
import random
from os import environ
-from urllib import parse
import discord
from discord.ext import commands
@@ -35,8 +34,8 @@ class RomanceMovieFinder(commands.Cog):
"with_genres": "10749"
}
# The api request url
- request_url = "https://api.themoviedb.org/3/discover/movie?" + parse.urlencode(params)
- async with self.bot.http_session.get(request_url) as resp:
+ request_url = "https://api.themoviedb.org/3/discover/movie"
+ async with self.bot.http_session.get(request_url, params=params) as resp:
# Trying to load the json file returned from the api
try:
data = await resp.json()