diff options
author | metamuffin <metamuffin@disroot.org> | 2025-02-07 00:35:29 +0100 |
---|---|---|
committer | metamuffin <metamuffin@disroot.org> | 2025-02-07 00:35:29 +0100 |
commit | 976bdd8e2d14049c766a654a7575f9f5109c7395 (patch) | |
tree | 2ca8f5c71b6acfcdf22b620bae29f4c267c9624d /web | |
parent | a09c817514913abbf54013cc340a45eb3e31ddd9 (diff) | |
download | jellything-976bdd8e2d14049c766a654a7575f9f5109c7395.tar jellything-976bdd8e2d14049c766a654a7575f9f5109c7395.tar.bz2 jellything-976bdd8e2d14049c766a654a7575f9f5109c7395.tar.zst |
fix player for new api
Diffstat (limited to 'web')
-rw-r--r-- | web/script/player/player.ts | 29 |
1 files changed, 10 insertions, 19 deletions
diff --git a/web/script/player/player.ts b/web/script/player/player.ts index 4eb01d5..e0a6ddf 100644 --- a/web/script/player/player.ts +++ b/web/script/player/player.ts @@ -36,7 +36,7 @@ export class Player { } constructor(public node_id: string, public logger?: Logger<string>) { - this.video.poster = `/n/${encodeURIComponent(node_id)}/asset?role=poster` + this.video.poster = `/n/${encodeURIComponent(node_id)}/poster` this.volume.value = this.video.volume let skip_change = false; this.volume.onchange(v => { @@ -101,28 +101,19 @@ export class Player { async fetch_meta() { this.set_pers("Loading metadata...") - const [res, udres] = await Promise.all([ - fetch(`/n/${encodeURIComponent(this.node_id)}`, { headers: { "Accept": "application/json" } }), - fetch(`/n/${encodeURIComponent(this.node_id)}/userdata`, { headers: { "Accept": "application/json" } }) - ]) + const res = await fetch(`/n/${encodeURIComponent(this.node_id)}`, { headers: { "Accept": "application/json" } }) + if (!res.ok) return this.error.value = "Cannot download node." - if (!res.ok || !udres.ok) return this.error.value = "Cannot download node." - - let metadata!: NodePublic & { error: string } - try { metadata = await res.json() } + let ndata!: { node: NodePublic, userdata: NodeUserData } & { error: string } + try { ndata = await res.json() } catch (_) { this.set_pers("Error: Node data invalid") } - if (metadata.error) return this.set_pers("server error: " + metadata.error) - - let userdata!: NodeUserData & { error: string } - try { userdata = await udres.json() } - catch (_) { this.set_pers("Error: Node user data invalid") } - if (userdata.error) return this.set_pers("server error: " + metadata.error) + if (ndata.error) return this.set_pers("server error: " + ndata.error) this.set_pers() //! bad code: assignment order is important because chapter callbacks use duration - this.duration.value = metadata.media!.duration - this.chapters.value = metadata.media!.chapters - this.tracks = metadata.media!.tracks + this.duration.value = ndata.node.media!.duration + this.chapters.value = ndata.node.media!.chapters + this.tracks = ndata.node.media!.tracks this.video.src = URL.createObjectURL(this.media_source) this.media_source.addEventListener("sourceopen", async () => { @@ -139,7 +130,7 @@ export class Player { } this.set_pers("Buffering initial stream fragments...") - const start_time = get_query_start_time() ?? get_continue_time(userdata.watched); + const start_time = get_query_start_time() ?? get_continue_time(ndata.userdata.watched); this.update(start_time) this.video.currentTime = start_time |