From 25b78c025491a00379fd7f79aa84c1cdd81fedf0 Mon Sep 17 00:00:00 2001 From: Fuwn Date: Wed, 7 Feb 2024 02:07:54 -0800 Subject: refactor(hololive): move to client-side evaluation --- src/routes/hololive/+page.svelte | 137 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 137 insertions(+) create mode 100644 src/routes/hololive/+page.svelte (limited to 'src/routes/hololive/+page.svelte') diff --git a/src/routes/hololive/+page.svelte b/src/routes/hololive/+page.svelte new file mode 100644 index 00000000..42e01075 --- /dev/null +++ b/src/routes/hololive/+page.svelte @@ -0,0 +1,137 @@ + + + + +{#await schedulePromise} + + + +{:then scheduleResponse} + {#if scheduleResponse} + {#await scheduleResponse.text()} + + + + {:then untypedSchedule} + {@const schedule = typeSchedule(parseScheduleHtml(untypedSchedule))} + + {#if schedule.lives.length === 0} + + {/if} + +
+ {#each schedule.lives + .filter((live) => { + const time = new Date(live.time); + + return time.getTime() > Date.now() - 12 * 60 * 60 * 1000 || time.getTime() > Date.now() || live.streaming; + }) + .sort((a, b) => { + if (a.streaming && !b.streaming) return -1; + + if (!a.streaming && b.streaming) return 1; + + return new Date(a.time).getTime() - new Date(b.time).getTime(); + }) as live} +
+

+ [{#if live.streaming} + LIVE{:else} + Upcoming{/if}] + {live.streamer} | + {new Date(live.time).toLocaleString()} + {#if live.guests.length > 0} +
+ + With {live.guests.join(', ').replace(/, ([^,]+)$/, ', & $1')} + + {/if} +

+ + + Stream Thumbnail + +
+ {/each} +
+ {:catch} + + {/await} + {:else} + + + + {/if} +{:catch} + +{/await} + + -- cgit v1.2.3