aboutsummaryrefslogtreecommitdiff
path: root/src/lib/Tools
diff options
context:
space:
mode:
authorFuwn <[email protected]>2024-01-01 16:49:04 -0800
committerFuwn <[email protected]>2024-01-01 16:49:04 -0800
commit60253beb9bad111c02ffa94cb64427cbe9c3ff17 (patch)
treef7cce19ecf8635062a1c4b30504e608321a632b9 /src/lib/Tools
parentfix(schedule): null episodes (diff)
downloaddue.moe-60253beb9bad111c02ffa94cb64427cbe9c3ff17.tar.xz
due.moe-60253beb9bad111c02ffa94cb64427cbe9c3ff17.zip
feat(schedule): crunchyroll schedule
Diffstat (limited to 'src/lib/Tools')
-rw-r--r--src/lib/Tools/Schedule/Crunchyroll.svelte54
1 files changed, 54 insertions, 0 deletions
diff --git a/src/lib/Tools/Schedule/Crunchyroll.svelte b/src/lib/Tools/Schedule/Crunchyroll.svelte
new file mode 100644
index 00000000..8162beed
--- /dev/null
+++ b/src/lib/Tools/Schedule/Crunchyroll.svelte
@@ -0,0 +1,54 @@
+<script lang="ts">
+ import crunchyroll from '$lib/crunchyroll.json';
+ import { onMount } from 'svelte';
+
+ const days = crunchyroll
+ .filter((media) => media.day !== 'soon' && media.day !== 'continuing')
+ .reduce((acc, media) => {
+ const date = new Date(media.year, media.month - 1, media.day).toLocaleDateString();
+ if (!acc[date]) {
+ acc[date] = [];
+ }
+ acc[date].push(media);
+ return acc;
+ }, {});
+ const continuing = crunchyroll.filter((media) => media.day === 'continuing');
+ const soon = crunchyroll.filter((media) => media.day === 'soon');
+
+ const ordinalSuffix = (i: number) => {
+ const j = i % 10;
+ const k = i % 100;
+
+ if (j === 1 && k !== 11) return i + 'st';
+ if (j === 2 && k !== 12) return i + 'nd';
+ if (j === 3 && k !== 13) return i + 'rd';
+
+ return i + 'th';
+ };
+</script>
+
+{#each Object.values(days) as day}
+ {@const date = new Date(day[0].year, day[0].month - 1, day[0].day)}
+
+ {date.toLocaleString('default', { month: 'long' })}
+ {ordinalSuffix(day[0].day)}, {day[0].year}
+ <ul>
+ {#each day as media}
+ <li>{media.title}</li>
+ {/each}
+ </ul>
+{/each}
+
+Coming soon
+<ul>
+ {#each soon as media}
+ <li>{media.title}</li>
+ {/each}
+</ul>
+
+Continuing from previous season
+<ul>
+ {#each continuing as media}
+ <li>{media.title}</li>
+ {/each}
+</ul>