From 173bf5851e9c97262d3643ea44104063b5db55fc Mon Sep 17 00:00:00 2001 From: Dmytro Meleshko Date: Thu, 18 Mar 2021 20:25:15 +0200 Subject: [PATCH] [scripts] rewrite Python scripts to not use the requests module --- scripts/copy-crosscode-emoji-url | 7 +++---- scripts/discord-whois | 29 ++++++++++++++++++----------- 2 files changed, 21 insertions(+), 15 deletions(-) diff --git a/scripts/copy-crosscode-emoji-url b/scripts/copy-crosscode-emoji-url index 2e22b6c..520b8e1 100755 --- a/scripts/copy-crosscode-emoji-url +++ b/scripts/copy-crosscode-emoji-url @@ -3,9 +3,9 @@ import sys import os from configparser import ConfigParser -import requests import json import urllib.parse +import urllib.request sys.path.insert(1, os.path.join(os.path.dirname(__file__), "..", "script-resources")) @@ -48,9 +48,8 @@ def emote_downloader_and_iterator(): with open(registry_dump_file, "r") as f: emote_registry_data = json.load(f) except FileNotFoundError: - response = requests.get(registry_dump_url, timeout=10) - response.raise_for_status() - emote_registry_data = response.json() + with urllib.request.urlopen(registry_dump_url, timeout=10) as response: + emote_registry_data = json.load(response) assert emote_registry_data["version"] == 1 diff --git a/scripts/discord-whois b/scripts/discord-whois index 4dd5ca5..91fd346 100755 --- a/scripts/discord-whois +++ b/scripts/discord-whois @@ -6,10 +6,13 @@ import sys import os -import requests +import urllib.request +import urllib.error import colorama import time import argparse +import json +import typing DISCORD_EPOCH = 1420070400000 # milliseconds @@ -52,19 +55,23 @@ if not (image_size is None or (image_size > 0 and image_size & (image_size - 1)) parser.error("image_size must be greater than zero and a power of two") -# no timeout here, sadly, due to this genius: -response = requests.get( - "https://discordapp.com/api/users/{}".format(user_snowflake), - headers={"Authorization": "Bot {}".format(bot_token)}, - timeout=3, -) try: - response.raise_for_status() -except requests.HTTPError as err: - print(response.json(), file=sys.stderr) + opener = urllib.request.build_opener() + # Don't send the User-Agent header, Discord blocks the default one + opener.addheaders = [] + with opener.open( + urllib.request.Request( + "http://discord.com/api/users/{}".format(user_snowflake), + headers={"Authorization": "Bot {}".format(bot_token)}, + ), + timeout=10, + ) as response: + raw_data = json.load(response) +except urllib.error.HTTPError as err: + print(err, file=sys.stderr) + print(err.read(), file=sys.stderr) raise err -raw_data = response.json() data = {} data["ID"] = raw_data["id"]