From 4b56194ee6807acb56abf0949394efadabf830d4 Mon Sep 17 00:00:00 2001 From: Fuwn Date: Fri, 5 Jun 2026 11:10:22 +0000 Subject: feat(airing): replace SubsPlease with AnimeSchedule (sub+dub) Source both subbed and dubbed episode schedules from AnimeSchedule.net v3 (absolute timestamps, episode numbers, delay windows, streams), keyed to AniList shows by title. Removes SubsPlease and its ~650-line fuzzy matcher. Countdown source is now a setting (native|sub|dub) with a dub->sub->native fallback. Requires ANIMESCHEDULE_CLIENT_TOKEN. --- src/lib/List/Anime/AnimeListTemplate.svelte | 10 +++++----- src/lib/List/Anime/DueAnimeList.svelte | 8 ++++---- src/lib/List/Anime/UpcomingAnimeList.svelte | 8 ++++---- 3 files changed, 13 insertions(+), 13 deletions(-) (limited to 'src/lib/List/Anime') diff --git a/src/lib/List/Anime/AnimeListTemplate.svelte b/src/lib/List/Anime/AnimeListTemplate.svelte index 5d769640..86bf2077 100644 --- a/src/lib/List/Anime/AnimeListTemplate.svelte +++ b/src/lib/List/Anime/AnimeListTemplate.svelte @@ -5,10 +5,10 @@ import { browser } from "$app/environment"; import type { AniListAuthorisation } from "$lib/Data/AniList/identity"; import type { Media } from "$lib/Data/AniList/media"; import RateLimitedError from "$lib/Error/RateLimited.svelte"; -import type { SubsPlease } from "$lib/Media/Anime/Airing/Subtitled/subsPlease"; +import type { AiringSchedule } from "$lib/Media/Anime/Airing/animeSchedule"; +import airingSchedule from "$stores/airingSchedule"; import identity from "$stores/identity"; import settings from "$stores/settings"; -import subsPlease from "$stores/subsPlease"; import ListTitle from "../ListTitle.svelte"; import type { Title } from "../mediaTitle"; import CleanAnimeList from "./CleanAnimeList.svelte"; @@ -18,7 +18,7 @@ export let endTime: number; export let cleanMedia: ( media: Media[], displayUnresolved: boolean, - subsPlease: SubsPlease | null, + schedule: AiringSchedule | null, plannedOnly?: boolean, ) => Media[]; export let animeLists: Promise; @@ -57,7 +57,7 @@ onMount(async () => { }); -{#if !$subsPlease && !dummy} +{#if !$airingSchedule && !dummy} {:else if !animeLists} @@ -89,7 +89,7 @@ onMount(async () => { {:else} { const cleanMedia = ( anime: Media[], displayUnresolved: boolean, - subsPlease: SubsPlease | null, + schedule: AiringSchedule | null, ) => { if (anime === undefined) return []; let dueAnime = anime - .map((media) => injectAiringTime(media, subsPlease)) + .map((media) => injectAiringTime(media, schedule)) .filter( // Releasing media (media: Media) => diff --git a/src/lib/List/Anime/UpcomingAnimeList.svelte b/src/lib/List/Anime/UpcomingAnimeList.svelte index b88937e9..2e128d8f 100644 --- a/src/lib/List/Anime/UpcomingAnimeList.svelte +++ b/src/lib/List/Anime/UpcomingAnimeList.svelte @@ -4,12 +4,12 @@ import { hydrateMediaListCache } from "$lib/Data/AniList/cacheHydration"; import type { AniListAuthorisation } from "$lib/Data/AniList/identity"; import { type Media, mediaListCollection, Type } from "$lib/Data/AniList/media"; import Spacer from "$lib/Layout/Spacer.svelte"; +import type { AiringSchedule } from "$lib/Media/Anime/Airing/animeSchedule"; import { hasDueEpisodes, hasNoAiredEpisodes, } from "$lib/Media/Anime/Airing/classify"; -import { injectAiringTime } from "$lib/Media/Anime/Airing/Subtitled/match"; -import type { SubsPlease } from "$lib/Media/Anime/Airing/Subtitled/subsPlease"; +import { injectAiringTime } from "$lib/Media/Anime/Airing/match"; import { addNotification } from "$lib/Notification/store"; import anime from "$stores/anime"; import identity from "$stores/identity"; @@ -44,7 +44,7 @@ onMount(async () => { const cleanMedia = ( anime: Media[], displayUnresolved: boolean, - subsPlease: SubsPlease | null, + schedule: AiringSchedule | null, plannedOnly = true, ) => { if (anime === undefined) return []; @@ -55,7 +55,7 @@ const cleanMedia = ( (media: Media) => media.status === status && media.nextAiringEpisode !== null, ) - .map((media) => injectAiringTime(media, subsPlease)) + .map((media) => injectAiringTime(media, schedule)) .filter( (media: Media) => // Outdated media -- cgit v1.2.3