aboutsummaryrefslogtreecommitdiff
path: root/src/lib/Media/links.ts
blob: bc9dde5bb031d7e4cf6fd6e54cc9f739741131dd (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
57
import type { Media } from "$lib/Data/AniList/media";
import type { PrequelRelationNode } from "$lib/Data/AniList/prequels";

export const outboundLink = (
	media: Media | PrequelRelationNode | 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=${encodeURIComponent(
							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=${encodeURIComponent(
					title ||
						media.title.native ||
						media.title.english ||
						media.title.romaji,
				)}`;
			case "animeschedule":
				return `https://animeschedule.net/shows?q=${encodeURIComponent(
					title ||
						media.title.native ||
						media.title.english ||
						media.title.romaji,
				)}`;
			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=${encodeURIComponent(
								media.title.native || media.title.english || media.title.romaji,
							)}&cat=anime`;
			}
		}
};