From b2cd85ceddb1d39924b858cb198a9784954fd4c5 Mon Sep 17 00:00:00 2001 From: Fuwn Date: Wed, 7 Feb 2024 01:07:34 -0800 Subject: feat(hololive): hololive schedule --- bun.lockb | Bin 169570 -> 180933 bytes package.json | 1 + src/app.html | 2 + src/lib/Loading/Message.svelte | 2 +- src/lib/Locale/english.ts | 3 +- src/lib/Locale/japanese.ts | 3 +- src/lib/Locale/layout.ts | 1 + src/routes/+layout.svelte | 5 +- src/routes/api/hololive/+server.ts | 10 +++ src/routes/hololive/+page.svelte | 127 +++++++++++++++++++++++++++++++++++++ 10 files changed, 149 insertions(+), 5 deletions(-) create mode 100644 src/routes/api/hololive/+server.ts create mode 100644 src/routes/hololive/+page.svelte diff --git a/bun.lockb b/bun.lockb index e9cc5084..f9154f2d 100755 Binary files a/bun.lockb and b/bun.lockb differ diff --git a/package.json b/package.json index a7287a13..3f0173be 100644 --- a/package.json +++ b/package.json @@ -39,6 +39,7 @@ "@vercel/postgres": "^0.5.1", "@vercel/speed-insights": "^1.0.9", "dexie": "^4.0.1-alpha.25", + "holo-schedule": "^0.5.4", "jsdom": "^23.0.1", "lz-string": "^1.5.0", "modern-screenshot": "^4.4.33", diff --git a/src/app.html b/src/app.html index 293aa41b..5a221a19 100644 --- a/src/app.html +++ b/src/app.html @@ -79,6 +79,8 @@ > + +{#await schedulePromise} + + + +{:then scheduleResponse} + {#if scheduleResponse} + {#await scheduleResponse.json()} + + + + {:then untypedSchedule} + {@const schedule = typeSchedule(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 Preview + +
+ {/each} +
+ {:catch} + + {/await} + {:else} + + + + {/if} +{:catch} + +{/await} + + -- cgit v1.2.3