initial commit

This commit is contained in:
2026-02-14 19:11:17 -05:00
commit 7e845ace53
3 changed files with 61 additions and 0 deletions

54
scrapist.py Normal file
View File

@@ -0,0 +1,54 @@
import discord
import os
import argparse
from pathlib import Path
parser = argparse.ArgumentParser(
prog="Scrapist",
description="Simple emoji extractor for Discord."
)
parser.add_argument('-t', '--discord_token', help="user or bot token that has access to the Discord server you'll be exporting emoji from. can also be provided via the `$DISCORD_TOKEN` env variable")
parser.add_argument('-g', '--guild_id', help="ID of the Discord server you wish to extract emoji from", required=True)
parser.add_argument('-o', '--out_dir', help="path where emojis will be downloaded to", required=True)
args = parser.parse_args()
discord_token = os.getenv("DISCORD_TOKEN")
if args.discord_token is not None:
discord_token = args.discord_token
if discord_token is None:
exit("No Discord token provided")
guild_id = args.guild_id
out_dir = args.out_dir
class Scrapist(discord.Client):
async def on_ready(self):
print('Logged in as', self.user)
guild = self.get_guild(int(guild_id))
guild_name = guild.name
# Create output directories if they don't exist
Path(f'{out_dir}/{guild_name}/emoji').mkdir(parents=True, exist_ok=True)
Path(f'{out_dir}/{guild_name}/animated').mkdir(parents=True, exist_ok=True)
Path(f'{out_dir}/{guild_name}/sticker').mkdir(parents=True, exist_ok=True)
emotes = await guild.fetch_emojis()
for emote in emotes:
if emote.animated:
filename = f"{emote.name}.webp"
await emote.save(f'{out_dir}/{guild_name}/animated/{filename}')
else:
filename = f"{emote.name}.png"
await emote.save(f'{out_dir}/{guild_name}/emoji/{filename}')
print(f"downloaded {filename}")
stickers = await guild.fetch_stickers()
for sticker in stickers:
filename = f"{sticker.name}.png"
await sticker.save(f'{out_dir}/{guild_name}/sticker/{filename}')
print(f"downloaded {sticker.name}")
await self.close()
client = Scrapist()
client.run(discord_token)