From 2d8831a83ae81c65b9148689a0216ebf764ee95f Mon Sep 17 00:00:00 2001 From: WardPearce Date: Thu, 19 Sep 2024 20:16:52 +1200 Subject: [PATCH] Dash only, gen android potoken on start & fallbackpack patch alert --- materialious/electron/capacitor.config.ts | 2 +- materialious/src/lib/Api/index.ts | 2 +- materialious/src/lib/Api/model.ts | 1 + materialious/src/lib/Player.svelte | 62 +++++++------------ materialious/src/lib/Settings.svelte | 21 +------ materialious/src/lib/externalSettings.ts | 6 -- materialious/src/lib/i18n/locales/en.json | 3 +- materialious/src/lib/patches/youtubejs.ts | 21 ++++++- materialious/src/lib/store.ts | 4 +- materialious/src/routes/(app)/+layout.svelte | 8 +++ .../src/routes/(app)/watch/[slug]/+page.ts | 3 +- 11 files changed, 60 insertions(+), 73 deletions(-) diff --git a/materialious/electron/capacitor.config.ts b/materialious/electron/capacitor.config.ts index 22795755..c77c8dd8 100644 --- a/materialious/electron/capacitor.config.ts +++ b/materialious/electron/capacitor.config.ts @@ -8,7 +8,7 @@ const config: CapacitorConfig = { plugins: { CapacitorHttp: { enabled: true - } + }, }, }; diff --git a/materialious/src/lib/Api/index.ts b/materialious/src/lib/Api/index.ts index d4c05e0f..8373ebe3 100644 --- a/materialious/src/lib/Api/index.ts +++ b/materialious/src/lib/Api/index.ts @@ -72,7 +72,7 @@ export async function getPopular(): Promise { export async function getVideo(videoId: string, local: boolean = false): Promise { const resp = await fetch(setRegion(buildPath(`videos/${videoId}?local=${local}`))); - if (!resp.ok && Capacitor.getPlatform() === 'electron' && get(playerYouTubeJsFallback)) { + if (!resp.ok && Capacitor.isNativePlatform() && get(playerYouTubeJsFallback)) { return await patchYoutubeJs(videoId); } else { await fetchErrorHandle(resp); diff --git a/materialious/src/lib/Api/model.ts b/materialious/src/lib/Api/model.ts index 2e28ac2e..ee0529b0 100644 --- a/materialious/src/lib/Api/model.ts +++ b/materialious/src/lib/Api/model.ts @@ -102,6 +102,7 @@ export interface VideoPlay extends Video { storyboardHeight: number; storyboardCount: number; }[]; + fallbackPatch?: 'youtubejs' | 'piped'; } export interface ReturnYTDislikes { diff --git a/materialious/src/lib/Player.svelte b/materialious/src/lib/Player.svelte index 2a03cd07..a613abce 100644 --- a/materialious/src/lib/Player.svelte +++ b/materialious/src/lib/Player.svelte @@ -8,13 +8,12 @@ import { onDestroy, onMount } from 'svelte'; import { _ } from 'svelte-i18n'; import { get } from 'svelte/store'; - import type { MediaTimeUpdateEvent, PlayerSrc, VideoSrc } from 'vidstack'; + import type { MediaTimeUpdateEvent, PlayerSrc } from 'vidstack'; import type { MediaPlayerElement } from 'vidstack/elements'; import { deleteVideoProgress, getVideoProgress, saveVideoProgress } from './Api'; import type { VideoPlay } from './Api/model'; import { getBestThumbnail, - proxyVideoUrl, pullBitratePreference, videoLength, type PhasedDescription @@ -25,7 +24,6 @@ miniPlayerSrcStore, playerAlwaysLoopStore, playerAutoPlayStore, - playerDashStore, playerProxyVideosStore, playerSavePlaybackPositionStore, silenceSkipperStore, @@ -47,7 +45,7 @@ export let segments: Segment[] = []; let src: PlayerSrc = []; - let categoryBeingSkipped = ''; + let snackBarAlert = ''; let playerIsLive = false; let playerPosSet = false; @@ -312,9 +310,11 @@ if (Math.round(player.currentTime) >= Math.round(player.duration)) { return; } - categoryBeingSkipped = segment.category; player.currentTime = segment.endTime + 1; - ui('#sponsorblock-alert'); + if (!get(sponsorBlockDisplayToastStore)) { + snackBarAlert = `${get(_)('skipping')} ${segment.category}`; + ui('#snackbar-alert'); + } } }); }); @@ -322,38 +322,20 @@ } } - if (get(playerDashStore)) { - src = [{ src: data.video.dashUrl, type: 'application/dash+xml' }]; + src = [{ src: data.video.dashUrl, type: 'application/dash+xml' }]; + if (!data.video.fallbackPatch) { if (Capacitor.getPlatform() !== 'electron' || proxyVideos) { (src[0] as { src: string }).src += '?local=true'; } - - player.addEventListener('dash-can-play', async () => { - if (get(playerAutoPlayStore)) { - player.play(); - } - await loadPlayerPos(); - }); - } else { - let formattedSrc; - src = data.video.formatStreams.map((format) => { - if (proxyVideos) { - formattedSrc = proxyVideoUrl(format.url); - } else { - formattedSrc = format.url; - } - const quality = format.size.split('x'); - return { - src: formattedSrc, - type: format.type.split(';')[0], - height: Number(quality[1]), - width: Number(quality[0]) - }; - }) as VideoSrc[]; - - await loadPlayerPos(); } + + player.addEventListener('dash-can-play', async () => { + if (get(playerAutoPlayStore)) { + player.play(); + } + await loadPlayerPos(); + }); } else { playerIsLive = true; src = [ @@ -368,6 +350,11 @@ const currentTheme = await getDynamicTheme(); + if (data.video.fallbackPatch === 'youtubejs') { + snackBarAlert = get(_)('player.youtubeJsFallBack'); + ui('#snackbar-alert'); + } + document.documentElement.style.setProperty( '--media-slider-track-fill-bg', currentTheme['--primary'] @@ -488,11 +475,8 @@ {/if} -{#if !isEmbed && !$sponsorBlockDisplayToastStore} -
- {$_('skipping')} - {categoryBeingSkipped} +{#if !isEmbed} +
+ {snackBarAlert}
{/if} diff --git a/materialious/src/lib/Settings.svelte b/materialious/src/lib/Settings.svelte index abed3181..92b9116a 100644 --- a/materialious/src/lib/Settings.svelte +++ b/materialious/src/lib/Settings.svelte @@ -1,4 +1,5 @@