aboutsummaryrefslogtreecommitdiff
path: root/src/lib/Media/links.ts
blob: 1e65f82f61f500f27e6ab8961d1430e7e6c5beff (plain) (blame)
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
import type { Media } from '$lib/AniList/media';

export const outboundLink = (
	media: Media | null,
	type: 'anime' | 'manga',
	setting: 'anilist' | 'livechartme' | 'animeschedule' | 'myanimelist',
	search = false,
	title: string | null = null
) => {
	media = media as Media;

	if (type === 'manga')
		switch (setting) {
			case 'livechartme':
			case 'animeschedule':
				return `https://anilist.co/${type}/${media.id}`;
			case 'myanimelist':
				return media.idMal
					? `https://myanimelist.net/manga/${media.idMal}`
					: `https://myanimelist.net/manga.php?q=${
							media.title.native || media.title.english || media.title.romaji
					  }&cat=manga`;
			default:
				return `https://anilist.co/${type}/${media.id}`;
		}
	else
		switch (setting) {
			case 'anilist':
				return search
					? `https://anilist.co/search?search=${encodeURIComponent(title || '')}`
					: `https://anilist.co/${type}/${media.id}`;
			case 'livechartme':
				return `https://www.livechart.me/search?q=${(
					title ||
					media.title.native ||
					media.title.english ||
					media.title.romaji
				).replace(/ /g, '+')}`;
			case 'animeschedule':
				return `https://animeschedule.net/shows?q=${(
					title ||
					media.title.native ||
					media.title.english ||
					media.title.romaji
				).replace(/ /g, '+')}`;
			case 'myanimelist': {
				return search
					? `https://myanimelist.net/anime.php?q=${title}&cat=anime`
					: media.idMal
					? `https://myanimelist.net/anime/${media.idMal}`
					: `https://myanimelist.net/anime.php?q=${
							media.title.native || media.title.english || media.title.romaji
					  }&cat=anime`;
			}
		}
};