aboutsummaryrefslogtreecommitdiff
path: root/src/lib
diff options
context:
space:
mode:
authorFuwn <[email protected]>2024-01-06 06:05:28 -0800
committerFuwn <[email protected]>2024-01-06 06:05:28 -0800
commit9dfde0448a1da2597f8709e9d1455e4cdf98c0d1 (patch)
treea8a79329afce98526741c913900a3131e1cec45d /src/lib
parentrefactor(tools): input template (diff)
downloaddue.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.ts44
-rw-r--r--src/lib/Tools/DumpProfile.svelte18
-rw-r--r--src/lib/Tools/InputTemplate.svelte4
-rw-r--r--src/lib/Tools/RandomFollower.svelte8
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%