aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFuwn <[email protected]>2024-02-06 22:44:38 -0800
committerFuwn <[email protected]>2024-02-06 22:44:38 -0800
commit945a4fc0ac4be8763666edbd0f407c9b6377121c (patch)
treee1d6b30397785f46ee7851bb30cdf6552d6d4171
parentfeat(title): only show furigana if unique (diff)
downloaddue.moe-945a4fc0ac4be8763666edbd0f407c9b6377121c.tar.xz
due.moe-945a4fc0ac4be8763666edbd0f407c9b6377121c.zip
feat(schedule): use global subsplease and modify
-rw-r--r--src/lib/Data/subtitles.json10
-rw-r--r--src/routes/+layout.svelte20
-rw-r--r--src/routes/schedule/+page.svelte72
3 files changed, 56 insertions, 46 deletions
diff --git a/src/lib/Data/subtitles.json b/src/lib/Data/subtitles.json
new file mode 100644
index 00000000..8bb27612
--- /dev/null
+++ b/src/lib/Data/subtitles.json
@@ -0,0 +1,10 @@
+{
+ "Friday": [
+ {
+ "title": "Undead Unluck",
+ "image_url": null,
+ "page": null,
+ "time": "11:00"
+ }
+ ]
+}
diff --git a/src/routes/+layout.svelte b/src/routes/+layout.svelte
index dd9533fe..e8fb9f9b 100644
--- a/src/routes/+layout.svelte
+++ b/src/routes/+layout.svelte
@@ -22,6 +22,7 @@
import subsPlease from '$stores/subsPlease';
import Dropdown from '$lib/Dropdown.svelte';
import { injectSpeedInsights } from '@vercel/speed-insights/sveltekit';
+ import subtitles from '$lib/Data/subtitles.json';
injectSpeedInsights();
@@ -76,10 +77,25 @@
});
$: {
- if ((data.url === '/' || data.url === '/completed') && !$subsPlease)
+ if ((data.url === '/' || data.url === '/completed' || data.url === '/schedule') && !$subsPlease)
fetch(root(`/api/subsplease?tz=${Intl.DateTimeFormat().resolvedOptions().timeZone}`))
.then((r) => r.json())
- .then((r) => subsPlease.set(r));
+ .then((r) => {
+ for (const day in subtitles) {
+ if (!r.schedule[day]) r.schedule[day] = [];
+
+ subtitles[day as keyof typeof subtitles].forEach((episode: any) => {
+ r.schedule[day].push({
+ title: episode.title,
+ page: episode.page || '',
+ image_url: episode.image_url || '',
+ time: episode.time
+ });
+ });
+ }
+
+ subsPlease.set(r);
+ });
}
</script>
diff --git a/src/routes/schedule/+page.svelte b/src/routes/schedule/+page.svelte
index edc82261..f057751a 100644
--- a/src/routes/schedule/+page.svelte
+++ b/src/routes/schedule/+page.svelte
@@ -1,6 +1,5 @@
<script lang="ts">
import Error from '$lib/Error/RateLimited.svelte';
- import type { SubsPlease } from '$lib/Media/Anime/Airing/Subtitled/subsPlease';
import { onMount } from 'svelte';
import { parseOrDefault } from '$lib/Utility/parameters';
import { browser } from '$app/environment';
@@ -12,30 +11,23 @@
import '$lib/Schedule/container.css';
import Days from '$lib/Schedule/Days.svelte';
import settings from '$stores/settings';
- import root from '$lib/Utility/root';
import Skeleton from '$lib/Loading/Skeleton.svelte';
import Message from '$lib/Loading/Message.svelte';
+ import subsPlease from '$stores/subsPlease';
- let subsPleasePromise: Promise<SubsPlease>;
let scheduledMediaPromise: Promise<Partial<Media[]>>;
const urlParameters = browser ? new URLSearchParams(window.location.search) : null;
- let timeZone = parseOrDefault(
- urlParameters,
- 'tz',
- Intl.DateTimeFormat().resolvedOptions().timeZone
- );
let crunchyrollExpanded = false;
let forceListMode = parseOrDefault(urlParameters, 'list', false);
onMount(async () => {
- subsPleasePromise = fetch(root(`/api/subsplease?tz=${timeZone}`)).then((r) => r.json());
scheduledMediaPromise = scheduleMediaListCollection(new Date().getFullYear(), season(), true);
});
</script>
<HeadTitle route="Schedule" path="/schedule" />
-<blockquote>
+<!-- <blockquote>
<select
bind:value={timeZone}
on:change={() =>
@@ -47,7 +39,7 @@
</option>
{/each}
</select>
-</blockquote>
+</blockquote> -->
<details bind:open={crunchyrollExpanded}>
<summary>
@@ -61,42 +53,34 @@
<p />
-{#await subsPleasePromise}
+{#if !$subsPlease}
<Message message="Loading subtitle schedule ..." />
<Skeleton grid={true} count={7} height="15em" width="49.5%" />
-{:then subsPlease}
- {#if subsPlease}
- {#await scheduledMediaPromise}
- <Message message="Loading schedule ..." />
-
- <Skeleton grid={true} count={7} height="15em" width="49.5%" />
- {:then scheduledMedia}
- {#if scheduledMedia}
- {@const columnCount = Math.ceil(Object.keys(subsPlease.schedule).length / 2)}
+{:else}
+ {#await scheduledMediaPromise}
+ <Message message="Loading schedule ..." />
- <div
- class="list-container"
- id="schedule"
- style={`column-count: ${
- columnCount / ($settings.displayScheduleListMode || forceListMode ? 1 : 2)
- }`}
- >
- <Days {subsPlease} {scheduledMedia} {forceListMode} />
- </div>
- {:else}
- <Message message="Loading schedule ..." />
+ <Skeleton grid={true} count={7} height="15em" width="49.5%" />
+ {:then scheduledMedia}
+ {#if scheduledMedia}
+ {@const columnCount = Math.ceil(Object.keys($subsPlease.schedule).length / 2)}
- <Skeleton grid={true} count={7} height="15em" width="49.5%" />
- {/if}
- {:catch}
- <Error type="Media" loginSessionError={false} card list={false} />
- {/await}
- {:else}
- <Message message="Loading subtitle schedule ..." />
+ <div
+ class="list-container"
+ id="schedule"
+ style={`column-count: ${
+ columnCount / ($settings.displayScheduleListMode || forceListMode ? 1 : 2)
+ }`}
+ >
+ <Days subsPlease={$subsPlease} {scheduledMedia} {forceListMode} />
+ </div>
+ {:else}
+ <Message message="Loading schedule ..." />
- <Skeleton grid={true} count={7} height="15em" width="49.5%" />
- {/if}
-{:catch}
- <Error type="Schedule" loginSessionError={false} card list={false} />
-{/await}
+ <Skeleton grid={true} count={7} height="15em" width="49.5%" />
+ {/if}
+ {:catch}
+ <Error type="Media" loginSessionError={false} card list={false} />
+ {/await}
+{/if}