diff options
| author | Fuwn <[email protected]> | 2024-01-01 16:49:04 -0800 |
|---|---|---|
| committer | Fuwn <[email protected]> | 2024-01-01 16:49:04 -0800 |
| commit | 60253beb9bad111c02ffa94cb64427cbe9c3ff17 (patch) | |
| tree | f7cce19ecf8635062a1c4b30504e608321a632b9 /src/lib/Tools | |
| parent | fix(schedule): null episodes (diff) | |
| download | due.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.svelte | 54 |
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> |