aboutsummaryrefslogtreecommitdiff
path: root/src/lib
diff options
context:
space:
mode:
authorFuwn <[email protected]>2024-01-08 15:27:28 -0800
committerFuwn <[email protected]>2024-01-08 15:27:28 -0800
commit6620bc00fdf5173ffb20a9057a4580b59410dbd7 (patch)
tree57f149d20ce28960909bda1bba1d6fcbbd0ef515 /src/lib
parentfix(badges): loading order (diff)
downloaddue.moe-6620bc00fdf5173ffb20a9057a4580b59410dbd7.tar.xz
due.moe-6620bc00fdf5173ffb20a9057a4580b59410dbd7.zip
feat(tools): new tools url method
Diffstat (limited to 'src/lib')
-rw-r--r--src/lib/Birthday/ACDB.ts4
-rw-r--r--src/lib/Birthday/aniSearch.ts4
-rw-r--r--src/lib/Error/path.ts18
-rw-r--r--src/lib/Tools/Picker.svelte24
-rw-r--r--src/lib/Tools/tools.ts43
-rw-r--r--src/lib/Utility/proxy.ts4
-rw-r--r--src/lib/Utility/root.ts8
7 files changed, 89 insertions, 16 deletions
diff --git a/src/lib/Birthday/ACDB.ts b/src/lib/Birthday/ACDB.ts
index 700b13e1..cb71880d 100644
--- a/src/lib/Birthday/ACDB.ts
+++ b/src/lib/Birthday/ACDB.ts
@@ -1,3 +1,5 @@
+import root from '$lib/Utility/root';
+
export interface ACDBBirthday {
character_image: string;
name: string;
@@ -7,7 +9,7 @@ export interface ACDBBirthday {
export const ACDBBirthdays = async (month: number, day: number): Promise<ACDBBirthday[]> =>
(
await (
- await fetch(`/api/birthdays/acdb?month=${month}&day=${day}`, {
+ await fetch(root(`/api/birthdays/acdb?month=${month}&day=${day}`), {
headers: {
Accept: 'application/json',
'Content-Type': 'application/json',
diff --git a/src/lib/Birthday/aniSearch.ts b/src/lib/Birthday/aniSearch.ts
index a938f7ba..3fa77f61 100644
--- a/src/lib/Birthday/aniSearch.ts
+++ b/src/lib/Birthday/aniSearch.ts
@@ -1,3 +1,5 @@
+import root from '$lib/Utility/root';
+
export interface aniSearchBirthday {
name: string;
image: string;
@@ -7,4 +9,4 @@ export const aniSearchBirthdays = async (
month: number,
day: number
): Promise<aniSearchBirthday[]> =>
- await (await fetch(`/api/birthdays/anisearch?month=${month}&day=${day}`, {})).json();
+ await (await fetch(root(`/api/birthdays/anisearch?month=${month}&day=${day}`), {})).json();
diff --git a/src/lib/Error/path.ts b/src/lib/Error/path.ts
index f493726b..40f50b7c 100644
--- a/src/lib/Error/path.ts
+++ b/src/lib/Error/path.ts
@@ -1,17 +1,11 @@
-import levenshtein from 'fast-levenshtein';
-
export const closest = (path: string, suggestions: string[]) => {
- let closest = '';
- let lowestDistance = Infinity;
+ const partialMatch = suggestions.find((suggestion) => suggestion.includes(path));
- [...suggestions, '...'].forEach((suggestion) => {
- const distance = levenshtein.get(path, suggestion);
+ if (partialMatch) return partialMatch;
- if (distance < lowestDistance) {
- lowestDistance = distance;
- closest = suggestion;
- }
- });
+ const closestMatch = suggestions.reduce((prev, curr) => {
+ return prev.length > curr.length ? prev : curr;
+ }, '');
- return closest;
+ return closestMatch;
};
diff --git a/src/lib/Tools/Picker.svelte b/src/lib/Tools/Picker.svelte
new file mode 100644
index 00000000..6ead9624
--- /dev/null
+++ b/src/lib/Tools/Picker.svelte
@@ -0,0 +1,24 @@
+<script lang="ts">
+ import { browser } from '$app/environment';
+ import { goto } from '$app/navigation';
+
+ export let tool: string;
+</script>
+
+<blockquote>
+ <select
+ bind:value={tool}
+ on:change={() => {
+ if (browser) goto(`/tools/${tool}`);
+ }}
+ >
+ <option value="default" selected disabled hidden>Select a tool to continue</option>
+ <option value="wrapped">AniList Wrapped</option>
+ <option value="birthdays">Today's Character Birthdays</option>
+ <option value="sequel_spy">Sequel Spy</option>
+ <option value="discussions">Episode Discussion Collector</option>
+ <option value="random_follower">Random Follower Finder</option>
+ <option value="dump_profile">Dump Profile</option>
+ <option value="activity_history">Activity History Analyser</option>
+ </select>
+</blockquote>
diff --git a/src/lib/Tools/tools.ts b/src/lib/Tools/tools.ts
new file mode 100644
index 00000000..c0e499b2
--- /dev/null
+++ b/src/lib/Tools/tools.ts
@@ -0,0 +1,43 @@
+export const tools: { [key: string]: { name: string; description?: string; id: string } } = {
+ default: {
+ name: 'Tools',
+ description: 'A collection of tools to help you get the most out of AniList.',
+ id: 'default'
+ },
+ wrapped: {
+ name: 'AniList Wrapped & Statistics Panel',
+ description:
+ 'Instantly generate an AniList themed Wrapped for your profile, doubling as a statistics panel for your bio',
+ id: 'wrapped'
+ },
+ birthdays: {
+ name: "Today's Character Birthdays",
+ description:
+ 'Find and display the birthdays of all characters for today, or any other day of the year',
+ id: 'birthdays'
+ },
+ sequel_spy: {
+ name: 'Sequel Spy (Missing Prequel Finder)',
+ description: "Find media with prequels you haven't seen yet for any given simulcast season",
+ id: 'sequel_spy'
+ },
+ discussions: {
+ name: 'Episode Discussion Collector',
+ description: 'Find and display all episode discussions for a given user',
+ id: 'discussions'
+ },
+ random_follower: {
+ name: 'Random Follower Finder',
+ description: 'Find a random follower of any given user',
+ id: 'random_follower'
+ },
+ dump_profile: {
+ name: 'Dump Profile',
+ description: "Dump a user's profile to JSON",
+ id: 'dump_profile'
+ },
+ activity_history: {
+ name: 'Activity History Analyser',
+ id: 'activity_history'
+ }
+};
diff --git a/src/lib/Utility/proxy.ts b/src/lib/Utility/proxy.ts
index ec9c289b..3337fe29 100644
--- a/src/lib/Utility/proxy.ts
+++ b/src/lib/Utility/proxy.ts
@@ -1,7 +1,7 @@
import { env } from '$env/dynamic/public';
-export const proxy = (url: string, disable = true) =>
- env.PUBLIC_ANILIST_REDIRECT_URI?.includes('192.168') && !disable
+export const proxy = (url: string, enable = false) =>
+ env.PUBLIC_ANILIST_REDIRECT_URI?.includes('localhost') || enable
? url
: `https://proxy.due.moe/?q=${url}`;
diff --git a/src/lib/Utility/root.ts b/src/lib/Utility/root.ts
new file mode 100644
index 00000000..3f9ea07d
--- /dev/null
+++ b/src/lib/Utility/root.ts
@@ -0,0 +1,8 @@
+import { env } from '$env/dynamic/public';
+
+export const root = (path: string, enable = false) =>
+ env.PUBLIC_ANILIST_REDIRECT_URI?.includes('localhost') || enable
+ ? `http://localhost:5173${path}`
+ : `https://due.moe${path}`;
+
+export default root;