aboutsummaryrefslogtreecommitdiff
path: root/src/lib/Media/links.ts
blob: 209afb2843291d963fb4b964cc0132c47cd7a5e4 (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
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`;
      }
    }
};