diff options
| author | Fuwn <[email protected]> | 2024-01-08 15:27:28 -0800 |
|---|---|---|
| committer | Fuwn <[email protected]> | 2024-01-08 15:27:28 -0800 |
| commit | 6620bc00fdf5173ffb20a9057a4580b59410dbd7 (patch) | |
| tree | 57f149d20ce28960909bda1bba1d6fcbbd0ef515 /src/lib | |
| parent | fix(badges): loading order (diff) | |
| download | due.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.ts | 4 | ||||
| -rw-r--r-- | src/lib/Birthday/aniSearch.ts | 4 | ||||
| -rw-r--r-- | src/lib/Error/path.ts | 18 | ||||
| -rw-r--r-- | src/lib/Tools/Picker.svelte | 24 | ||||
| -rw-r--r-- | src/lib/Tools/tools.ts | 43 | ||||
| -rw-r--r-- | src/lib/Utility/proxy.ts | 4 | ||||
| -rw-r--r-- | src/lib/Utility/root.ts | 8 |
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; |