aboutsummaryrefslogtreecommitdiff
path: root/src/lib/Media
diff options
context:
space:
mode:
authorFuwn <[email protected]>2023-12-20 04:46:23 -0800
committerFuwn <[email protected]>2023-12-20 04:46:23 -0800
commit5815ab8cbc367f8ba1d0362c9413c52986f0f708 (patch)
treef96acf68c677f3217f7735436ae7b083e6c911f5 /src/lib/Media
parentfix(airing): smaller release check (diff)
downloaddue.moe-5815ab8cbc367f8ba1d0362c9413c52986f0f708.tar.xz
due.moe-5815ab8cbc367f8ba1d0362c9413c52986f0f708.zip
refactor(airing): move to module
Diffstat (limited to 'src/lib/Media')
-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
2 files changed, 85 insertions, 81 deletions
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 '';
+};