aboutsummaryrefslogtreecommitdiff
path: root/src/lib
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib')
-rw-r--r--src/lib/List/Anime/CleanAnimeList.svelte2
-rw-r--r--src/lib/List/Anime/DueAnimeList.svelte2
-rw-r--r--src/lib/Media/Anime/Airing/subtitled.ts (renamed from src/lib/Media/Anime/airing.ts)83
-rw-r--r--src/lib/Media/Anime/Airing/time.ts83
-rw-r--r--src/lib/Tools/SequelSpy.svelte2
5 files changed, 88 insertions, 84 deletions
diff --git a/src/lib/List/Anime/CleanAnimeList.svelte b/src/lib/List/Anime/CleanAnimeList.svelte
index 3da3556e..64af9ddd 100644
--- a/src/lib/List/Anime/CleanAnimeList.svelte
+++ b/src/lib/List/Anime/CleanAnimeList.svelte
@@ -5,7 +5,7 @@
import type { Media } from '$lib/AniList/media';
import { cleanCache, updateMedia } from '$lib/Media/Anime/cache';
import { totalEpisodes } from '$lib/Media/Anime/episodes';
- import { airingTime } from '$lib/Media/Anime/airing';
+ import { airingTime } from '$lib/Media/Anime/Airing/time';
import type { AniListAuthorisation, UserIdentity } from '$lib/AniList/identity';
import ListTitle from '../ListTitle.svelte';
import MediaTitle from '../MediaTitleDisplay.svelte';
diff --git a/src/lib/List/Anime/DueAnimeList.svelte b/src/lib/List/Anime/DueAnimeList.svelte
index ac370892..98cc43c0 100644
--- a/src/lib/List/Anime/DueAnimeList.svelte
+++ b/src/lib/List/Anime/DueAnimeList.svelte
@@ -7,7 +7,7 @@
import lastPruneTimes from '../../../stores/lastPruneTimes';
import AnimeList from './AnimeListTemplate.svelte';
import type { SubsPlease } from '$lib/subsPlease';
- import { injectAiringTime } from '$lib/Media/Anime/airing';
+ import { injectAiringTime } from '$lib/Media/Anime/Airing/subtitled';
export let user: AniListAuthorisation;
export let identity: UserIdentity;
diff --git a/src/lib/Media/Anime/airing.ts b/src/lib/Media/Anime/Airing/subtitled.ts
index 5d51386b..73e4bddd 100644
--- a/src/lib/Media/Anime/airing.ts
+++ b/src/lib/Media/Anime/Airing/subtitled.ts
@@ -1,10 +1,8 @@
import { get } from 'svelte/store';
-import type { Media } from '../../AniList/media';
-import settings from '../../../stores/settings';
-import type { MediaPrequel } from '$lib/AniList/prequels';
+import type { Media } from '../../../AniList/media';
+import settings from '../../../../stores/settings';
import type { SubsPlease } from '$lib/subsPlease';
import levenshtein from 'fast-levenshtein';
-import { totalEpisodes } from './episodes';
export interface Time {
title: string;
@@ -156,80 +154,3 @@ export const injectAiringTime = (anime: Media, subsPlease: SubsPlease | null) =>
}
} as Media;
};
-
-export const airingTime = (
- originalAnime: Media,
- subsPlease: SubsPlease | null,
- upcoming = false
-) => {
- const anime = injectAiringTime(originalAnime, subsPlease);
- const airingAt = anime.nextAiringEpisode?.airingAt;
- const untilAiring = airingAt ? Math.round((airingAt - Date.now() / 1000) * 100) / 100 : undefined;
- const time = new Date(airingAt ? airingAt * 1000 : 0).toLocaleTimeString([], {
- hour12: !settings.get().display24HourTime,
- hour: 'numeric',
- minute: '2-digit'
- });
- let timeFrame;
- let hours = null;
-
- if (
- (anime as unknown as MediaPrequel).startDate &&
- new Date(
- anime.startDate.year,
- (anime as unknown as MediaPrequel).startDate.month,
- (anime as unknown as MediaPrequel).startDate.day
- ) < new Date()
- )
- return `<span style="opacity: 50%">on ${new Date(
- anime.startDate.year,
- (anime as unknown as MediaPrequel).startDate.month,
- (anime as unknown as MediaPrequel).startDate.day
- ).toLocaleDateString()}</span>`;
-
- if (untilAiring !== undefined) {
- let minutes = untilAiring / 60;
- let few = true;
-
- if (minutes > 60) {
- hours = minutes / 60;
-
- if (hours >= 24) {
- // let weeks = Math.floor(Math.floor(hours / 24) / 7);
-
- few = false;
-
- // if (weeks >= 1) {
- // weeks = Math.round(weeks);
-
- // timeFrame = `${weeks} week${weeks === 1 ? '' : 's'}`;
- // } else {
- const days = Math.round(Math.floor(hours / 24));
-
- timeFrame = `${days.toFixed(0)} day${days === 1 ? '' : 's'}`;
- // }
- } else timeFrame = `${hours.toFixed(1)} hour${hours === 1 ? '' : 's'}`;
- } else {
- minutes = Math.round(minutes);
-
- timeFrame = `${minutes} minute${minutes === 1 ? '' : 's'}`;
- }
-
- const opacity = Math.max(50, 100 - (untilAiring / 60 / 60 / 24 / 7) * 50);
-
- if (upcoming)
- return `<span title="${
- hours ? `${hours.toFixed(3)} hours` : ''
- }" style="opacity: ${opacity}%;">${anime.nextAiringEpisode?.episode}${totalEpisodes(
- anime
- )} in ${timeFrame} <span style="opacity: 50%">${few ? `(${time})` : ''}</span></span>`;
- else
- return `<span title="${
- hours ? `${hours.toFixed(3)} hours` : ''
- }" style="opacity: ${opacity}%;">${anime.nextAiringEpisode?.episode} in ${
- few ? '<b>' : ''
- }${timeFrame}${few ? '</b>' : ''} ${few ? `(${time})` : ''}</span>`;
- }
-
- return '';
-};
diff --git a/src/lib/Media/Anime/Airing/time.ts b/src/lib/Media/Anime/Airing/time.ts
new file mode 100644
index 00000000..59e9e073
--- /dev/null
+++ b/src/lib/Media/Anime/Airing/time.ts
@@ -0,0 +1,83 @@
+import type { Media } from '$lib/AniList/media';
+import type { MediaPrequel } from '$lib/AniList/prequels';
+import type { SubsPlease } from '$lib/subsPlease';
+import settings from '../../../../stores/settings';
+import { injectAiringTime } from './subtitled';
+import { totalEpisodes } from '../episodes';
+
+export const airingTime = (
+ originalAnime: Media,
+ subsPlease: SubsPlease | null,
+ upcoming = false
+) => {
+ const anime = injectAiringTime(originalAnime, subsPlease);
+ const airingAt = anime.nextAiringEpisode?.airingAt;
+ const untilAiring = airingAt ? Math.round((airingAt - Date.now() / 1000) * 100) / 100 : undefined;
+ const time = new Date(airingAt ? airingAt * 1000 : 0).toLocaleTimeString([], {
+ hour12: !settings.get().display24HourTime,
+ hour: 'numeric',
+ minute: '2-digit'
+ });
+ let timeFrame;
+ let hours = null;
+
+ if (
+ (anime as unknown as MediaPrequel).startDate &&
+ new Date(
+ anime.startDate.year,
+ (anime as unknown as MediaPrequel).startDate.month,
+ (anime as unknown as MediaPrequel).startDate.day
+ ) < new Date()
+ )
+ return `<span style="opacity: 50%">on ${new Date(
+ anime.startDate.year,
+ (anime as unknown as MediaPrequel).startDate.month,
+ (anime as unknown as MediaPrequel).startDate.day
+ ).toLocaleDateString()}</span>`;
+
+ if (untilAiring !== undefined) {
+ let minutes = untilAiring / 60;
+ let few = true;
+
+ if (minutes > 60) {
+ hours = minutes / 60;
+
+ if (hours >= 24) {
+ // let weeks = Math.floor(Math.floor(hours / 24) / 7);
+
+ few = false;
+
+ // if (weeks >= 1) {
+ // weeks = Math.round(weeks);
+
+ // timeFrame = `${weeks} week${weeks === 1 ? '' : 's'}`;
+ // } else {
+ const days = Math.round(Math.floor(hours / 24));
+
+ timeFrame = `${days.toFixed(0)} day${days === 1 ? '' : 's'}`;
+ // }
+ } else timeFrame = `${hours.toFixed(1)} hour${hours === 1 ? '' : 's'}`;
+ } else {
+ minutes = Math.round(minutes);
+
+ timeFrame = `${minutes} minute${minutes === 1 ? '' : 's'}`;
+ }
+
+ const opacity = Math.max(50, 100 - (untilAiring / 60 / 60 / 24 / 7) * 50);
+
+ if (upcoming)
+ return `<span title="${
+ hours ? `${hours.toFixed(3)} hours` : ''
+ }" style="opacity: ${opacity}%;">${anime.nextAiringEpisode?.episode}${totalEpisodes(
+ anime
+ )} in ${timeFrame} <span style="opacity: 50%">${few ? `(${time})` : ''}</span></span>`;
+ else
+ return `<span title="${
+ hours ? `${hours.toFixed(3)} hours` : ''
+ }" style="opacity: ${opacity}%;">${anime.nextAiringEpisode?.episode} in ${
+ few ? '<b>' : ''
+ }${timeFrame}${few ? '</b>' : ''} ${few ? `(${time})` : ''}</span>`;
+ }
+
+ return '';
+};
diff --git a/src/lib/Tools/SequelSpy.svelte b/src/lib/Tools/SequelSpy.svelte
index 2ff7832b..44e453fe 100644
--- a/src/lib/Tools/SequelSpy.svelte
+++ b/src/lib/Tools/SequelSpy.svelte
@@ -4,7 +4,7 @@
import MediaTitle from '$lib/List/MediaTitleDisplay.svelte';
import { onMount } from 'svelte';
import { clearAllParameters, parseOrDefault } from './tool';
- import { airingTime } from '$lib/Media/Anime/airing';
+ import { airingTime } from '$lib/Media/Anime/Airing/time';
import type { Media } from '$lib/AniList/media';
import { page } from '$app/stores';
import { browser } from '$app/environment';