1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
|
import type { CommandPaletteAction } from '$lib/CommandPalette/actions';
import locale from '$stores/locale';
import { get } from 'svelte/store';
export const toolsAsCommandPaletteActions = (): CommandPaletteAction[] =>
Object.entries(tools)
.filter(([id, tool]) => id !== 'default' && !tool.hidden)
.map(([id, tool]) => ({
name: tool.name(),
url: `/tools/${id}`
}));
export const tools: {
[key: string]: {
name: () => string;
short?: string;
description?: () => string;
id: string;
hidden?: boolean;
};
} = {
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',
short: 'AniList Wrapped',
description: () =>
'Instantly generate an AniList themed Wrapped for your profile, doubling as a statistics panel for your bio',
id: 'wrapped'
},
birthdays: {
name: () => {
return get(locale)().tools.tool.characterBirthdays.long;
},
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',
description: () =>
"Find media with prequels you haven't seen yet for any given simulcast season",
id: 'sequel_spy'
},
tracker: {
name: () => 'Tracker',
description: () =>
"Track your anime and manga progress with ease, intended for media that doesn't qualify for an AniList entry",
id: 'tracker',
hidden: true
},
uma_musume_birthdays: {
name: () => {
return 'Uma Musume: Pretty Derby Character Birthdays';
},
description: () =>
'Find and display the birthdays of all Uma Musume characters for today, or any other day of the year',
id: 'uma_musume_birthdays'
},
hololive_birthdays: {
name: () => 'hololive Birthdays',
description: () =>
'Find and display the birthdays of all hololive talents for today, or any other day of the year',
id: 'hololive_birthdays'
},
nijisanji_birthdays: {
name: () => 'NIJISANJI Birthdays',
description: () =>
'Find and display the birthdays of all NIJISANJI talents for today, or any other day of the year',
id: 'nijisanji_birthdays'
},
hayai: {
name: () => '早い',
description: () => 'Read light novels at 1.5x speed!',
id: 'hayai'
},
discussions: {
name: () => 'Episode Discussion Collector',
description: () => 'Find and display all episode discussions created by a given user',
id: 'discussions'
},
random_follower: {
name: () => 'Random Follower Finder',
description: () => "Generate random followers from any user's following list",
id: 'random_follower'
},
// dump_profile: {
// name: () => 'Dump Profile',
// description: () => "Dump a user's profile to JSON",
// id: 'dump_profile'
// },
likes: {
name: () => 'Likes',
description: () => 'Get all likes of an activity or forum thread',
id: 'likes'
},
activity_history: {
name: () => 'Activity History Analyser',
id: 'activity_history',
description: () => 'Activity history utilities & image exporter'
},
girls: {
name: () => 'Anime Girls Holding Programming Books',
id: 'girls',
description: () => 'Find anime girls holding programming books by language'
},
sequel_catcher: {
name: () => 'Sequel Catcher',
description: () =>
'Check if any completed anime on your lists have sequels you have not yet seen',
id: 'sequel_catcher'
}
};
|