diff options
Diffstat (limited to 'src/lib/Media/links.ts')
| -rw-r--r-- | src/lib/Media/links.ts | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/src/lib/Media/links.ts b/src/lib/Media/links.ts new file mode 100644 index 00000000..4385d348 --- /dev/null +++ b/src/lib/Media/links.ts @@ -0,0 +1,45 @@ +import type { Media } from '$lib/AniList/media'; + +export const outboundLink = ( + media: Media, + type: 'anime' | 'manga', + setting: 'anilist' | 'livechartme' | 'animeschedule' | 'myanimelist' +) => { + 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 `https://anilist.co/${type}/${media.id}`; + case 'livechartme': + return `https://www.livechart.me/search?q=${( + media.title.native || + media.title.english || + media.title.romaji + ).replace(/ /g, '+')}`; + case 'animeschedule': + return `https://animeschedule.net/shows?q=${( + media.title.native || + media.title.english || + media.title.romaji + ).replace(/ /g, '+')}`; + case 'myanimelist': + return 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`; + } +}; |