diff options
| author | Fuwn <[email protected]> | 2024-01-06 06:05:28 -0800 |
|---|---|---|
| committer | Fuwn <[email protected]> | 2024-01-06 06:05:28 -0800 |
| commit | 9dfde0448a1da2597f8709e9d1455e4cdf98c0d1 (patch) | |
| tree | a8a79329afce98526741c913900a3131e1cec45d /src/lib | |
| parent | refactor(tools): input template (diff) | |
| download | due.moe-9dfde0448a1da2597f8709e9d1455e4cdf98c0d1.tar.xz due.moe-9dfde0448a1da2597f8709e9d1455e4cdf98c0d1.zip | |
feat(tools): dump profile tool
Diffstat (limited to 'src/lib')
| -rw-r--r-- | src/lib/AniList/user.ts | 44 | ||||
| -rw-r--r-- | src/lib/Tools/DumpProfile.svelte | 18 | ||||
| -rw-r--r-- | src/lib/Tools/InputTemplate.svelte | 4 | ||||
| -rw-r--r-- | src/lib/Tools/RandomFollower.svelte | 8 |
4 files changed, 67 insertions, 7 deletions
diff --git a/src/lib/AniList/user.ts b/src/lib/AniList/user.ts index adc00c56..93799480 100644 --- a/src/lib/AniList/user.ts +++ b/src/lib/AniList/user.ts @@ -20,6 +20,28 @@ export interface User { }; } +export interface FullUser { + id: number; + name: string; + avatar: { + large: string; + medium: string; + }; + bans: JSON; + bannerImage: string; + siteUrl: string; + donatorTier: number; + donatorBadge: string; + moderatorRoles: string[]; + createAt: number; + updatedAt: number; + previousNames: { + name: string; + createdAt: number; + updatedAt: string; + }[]; +} + export const user = async (username: string): Promise<User> => ( await ( @@ -44,3 +66,25 @@ export const user = async (username: string): Promise<User> => }) ).json() )['data']['User']; + +export const dumpUser = async (username: string): Promise<User> => + ( + await ( + await fetch('https://graphql.anilist.co', { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + Accept: 'application/json' + }, + body: JSON.stringify({ + query: `{ User(name: "${username}") { + id name + avatar { large medium } + bannerImage bans siteUrl donatorTier donatorBadge moderatorRoles + createdAt updatedAt + previousNames { name createdAt updatedAt } + } }` + }) + }) + ).json() + )['data']['User']; diff --git a/src/lib/Tools/DumpProfile.svelte b/src/lib/Tools/DumpProfile.svelte new file mode 100644 index 00000000..f01814e6 --- /dev/null +++ b/src/lib/Tools/DumpProfile.svelte @@ -0,0 +1,18 @@ +<script lang="ts"> + import { dumpUser } from '$lib/AniList/user'; + import RateLimited from '$lib/Error/RateLimited.svelte'; + import InputTemplate from './InputTemplate.svelte'; + + let submission = ''; +</script> + +<!-- svelte-ignore missing-declaration --> +<InputTemplate field="Username" bind:submission event="Dump User" submitText="Dump"> + {#await dumpUser(submission)} + Loading user ... 50% + {:then dump} + <pre style="margin: 0;">{JSON.stringify(dump, null, 2)}</pre> + {:catch} + <RateLimited type="User" list={false} /> + {/await} +</InputTemplate> diff --git a/src/lib/Tools/InputTemplate.svelte b/src/lib/Tools/InputTemplate.svelte index 16b4ec8f..1b677546 100644 --- a/src/lib/Tools/InputTemplate.svelte +++ b/src/lib/Tools/InputTemplate.svelte @@ -19,6 +19,7 @@ <div class="card"> <p> + <!-- svelte-ignore missing-declaration --> <input type="text" placeholder={field} @@ -28,6 +29,9 @@ submission = input; onSubmit(); + + // eslint-disable-next-line no-undef + umami.track(event); } }} /> diff --git a/src/lib/Tools/RandomFollower.svelte b/src/lib/Tools/RandomFollower.svelte index f47a4441..d50cd7d4 100644 --- a/src/lib/Tools/RandomFollower.svelte +++ b/src/lib/Tools/RandomFollower.svelte @@ -7,18 +7,12 @@ let randomSeed = 0; </script> -<!-- svelte-ignore missing-declaration --> <InputTemplate field="Username" bind:submission event="Random Follower" submitText="Generate" - onSubmit={() => { - randomSeed = Math.random(); - - // eslint-disable-next-line no-undef - umami.track('Random Follower'); - }} + onSubmit={() => (randomSeed = Math.random())} > {#await followers(submission)} Loading followers ... 50% |