diff --git a/src/lib/db/client-db/queries.ts b/src/lib/db/client-db/queries.ts index e0bfc3f..c8b5ec1 100644 --- a/src/lib/db/client-db/queries.ts +++ b/src/lib/db/client-db/queries.ts @@ -30,6 +30,7 @@ export async function getAnimeList(db: ClientDb, limit = DEFAULT_LIST_LIMIT) { year: anime.year, seasonId: anime.seasonId, malId: anime.malId, + aniListId: anime.aniListId, }) .from(anime) .orderBy(desc(anime.year), desc(anime.seasonId), desc(anime.annId)) @@ -60,6 +61,7 @@ export async function searchAnimeByName( year: anime.year, seasonId: anime.seasonId, malId: anime.malId, + aniListId: anime.aniListId, }) .from(anime) .where(like(anime.mainName, pattern)) @@ -84,6 +86,7 @@ export async function getAnimeWithSongsByAnnId(db: ClientDb, annId: number) { year: anime.year, seasonId: anime.seasonId, malId: anime.malId, + aniListId: anime.aniListId, }) .from(anime) .where(eq(anime.annId, annId)) @@ -142,6 +145,7 @@ export async function getSongsForMalAnimeIds( .select({ annId: anime.annId, malId: anime.malId, + aniListId: anime.aniListId, animeName: anime.mainName, year: anime.year, seasonId: anime.seasonId, diff --git a/src/routes/anime/[annId]/+page.svelte b/src/routes/anime/[annId]/+page.svelte index a9acd60..95ae27d 100644 --- a/src/routes/anime/[annId]/+page.svelte +++ b/src/routes/anime/[annId]/+page.svelte @@ -3,6 +3,8 @@ import { invalidate } from "$app/navigation"; import SongEntry from "$lib/components/SongEntry.svelte"; import { db as clientDb } from "$lib/db/client-db"; + import { addAllToQueue, playAllNext } from "$lib/player/player.svelte"; + import { trackFromSongRow } from "$lib/player/types"; import { seasonName } from "$lib/utils/amq"; import type { PageData } from "./$types"; @@ -21,6 +23,31 @@ return; } }); + + function playableTracks() { + const rows = data.animeWithSongs?.songs ?? []; + return rows + .map((s) => + trackFromSongRow({ + annSongId: s.annSongId, + animeName: data.animeWithSongs?.anime.mainName ?? "Unknown Anime", + type: s.type, + number: s.number, + songName: s.songName, + artistName: s.artistName, + fileName: s.fileName ?? null, + }), + ) + .filter((t) => t !== null); + } + + function queueAll() { + addAllToQueue(playableTracks()); + } + + function playAllNextFromAnime() { + playAllNext(playableTracks()); + } {#if !clientDb} @@ -36,18 +63,89 @@ {:else if !data.animeWithSongs}

Loading anime…

{:else} -
+

{data.animeWithSongs.anime.mainName}

+

- {data.animeWithSongs.anime.year}{seasonName( - Number(data.animeWithSongs.anime.seasonId), - )} • ANN {data.animeWithSongs.anime.annId} • MAL {data.animeWithSongs - .anime.malId} + {data.animeWithSongs.anime.year} + {seasonName(Number(data.animeWithSongs.anime.seasonId))}

+ +
+ + ANN + + + {#if data.animeWithSongs.anime.malId != null} + + MAL + + {:else} + + MAL + + {/if} + + {#if data.animeWithSongs.anime.aniListId != null} + + AniList + + {:else} + + AniList + + {/if} +
-

Songs

+
+

Songs

+ +
+ + +
+
{#if data.animeWithSongs.songs.length === 0}