From 9f990ac956c9c4a2e677ec9c88e9e95337a85d59 Mon Sep 17 00:00:00 2001 From: WardPearce Date: Thu, 17 Oct 2024 12:39:56 +1300 Subject: [PATCH 1/6] Bump version --- materialious/android/app/build.gradle | 4 ++-- materialious/electron/package.json | 2 +- materialious/package.json | 2 +- update_versions.py | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/materialious/android/app/build.gradle b/materialious/android/app/build.gradle index 5b7a66e8..108f1f0d 100644 --- a/materialious/android/app/build.gradle +++ b/materialious/android/app/build.gradle @@ -7,8 +7,8 @@ android { applicationId "us.materialio.app" minSdkVersion rootProject.ext.minSdkVersion targetSdkVersion rootProject.ext.targetSdkVersion - versionCode 60 - versionName "1.6.9" + versionCode 61 + versionName "1.6.10" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" aaptOptions { // Files and dirs to omit from the packaged assets dir, modified to accommodate modern web apps. diff --git a/materialious/electron/package.json b/materialious/electron/package.json index 14d6e078..25837734 100644 --- a/materialious/electron/package.json +++ b/materialious/electron/package.json @@ -1,6 +1,6 @@ { "name": "Materialious", - "version": "1.6.9", + "version": "1.6.10", "description": "Modern material design for Invidious.", "author": { "name": "Ward Pearce", diff --git a/materialious/package.json b/materialious/package.json index 78c19ba6..841d84ce 100644 --- a/materialious/package.json +++ b/materialious/package.json @@ -1,6 +1,6 @@ { "name": "materialious", - "version": "1.6.9", + "version": "1.6.10", "private": true, "scripts": { "dev": "vite dev", diff --git a/update_versions.py b/update_versions.py index 76625964..ca9d36b6 100644 --- a/update_versions.py +++ b/update_versions.py @@ -5,7 +5,7 @@ import json import os import re -LATEST_VERSION = "1.6.9" +LATEST_VERSION = "1.6.10" WORKING_DIR = os.path.join(os.path.dirname(os.path.realpath(__file__)), "materialious") ROOT_PACKAGE = os.path.join(WORKING_DIR, "package.json") From b90dba70a1bbef25cc4cf7592f49122baedfba55 Mon Sep 17 00:00:00 2001 From: WardPearce Date: Thu, 17 Oct 2024 13:21:47 +1300 Subject: [PATCH 2/6] Added adaptive formats to youtubejs patch --- .../android/app/capacitor.build.gradle | 1 + .../android/capacitor.settings.gradle | 3 ++ materialious/package-lock.json | 54 ++++++++++++------- materialious/package.json | 3 +- materialious/src/lib/Player.svelte | 2 +- materialious/src/lib/patches/youtubejs.ts | 36 +++++++++++-- .../routes/(app)/channel/[slug]/+page.svelte | 10 +--- 7 files changed, 76 insertions(+), 33 deletions(-) diff --git a/materialious/android/app/capacitor.build.gradle b/materialious/android/app/capacitor.build.gradle index 8a82c063..675b2a5b 100644 --- a/materialious/android/app/capacitor.build.gradle +++ b/materialious/android/app/capacitor.build.gradle @@ -12,6 +12,7 @@ dependencies { implementation project(':capacitor-app') implementation project(':capacitor-browser') implementation project(':capacitor-clipboard') + implementation project(':capacitor-screen-orientation') implementation project(':capgo-inappbrowser') implementation project(':mediagrid-capacitor-native-audio') implementation project(':capacitor-nodejs') diff --git a/materialious/android/capacitor.settings.gradle b/materialious/android/capacitor.settings.gradle index ef657a94..eb22a4ad 100644 --- a/materialious/android/capacitor.settings.gradle +++ b/materialious/android/capacitor.settings.gradle @@ -11,6 +11,9 @@ project(':capacitor-browser').projectDir = new File('../node_modules/@capacitor/ include ':capacitor-clipboard' project(':capacitor-clipboard').projectDir = new File('../node_modules/@capacitor/clipboard/android') +include ':capacitor-screen-orientation' +project(':capacitor-screen-orientation').projectDir = new File('../node_modules/@capacitor/screen-orientation/android') + include ':capgo-inappbrowser' project(':capgo-inappbrowser').projectDir = new File('../node_modules/@capgo/inappbrowser/android') diff --git a/materialious/package-lock.json b/materialious/package-lock.json index 63ba7c70..364f1a23 100644 --- a/materialious/package-lock.json +++ b/materialious/package-lock.json @@ -1,12 +1,12 @@ { "name": "materialious", - "version": "1.6.9", + "version": "1.6.10", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "materialious", - "version": "1.6.9", + "version": "1.6.10", "dependencies": { "@capacitor-community/electron": "^5.0.1", "@capacitor/android": "6.1.2", @@ -15,6 +15,7 @@ "@capacitor/cli": "6.1.2", "@capacitor/clipboard": "^6.0.1", "@capacitor/core": "^6.1.2", + "@capacitor/screen-orientation": "^6.0.2", "@capgo/inappbrowser": "^6.6.8", "@ffmpeg/ffmpeg": "^0.12.10", "@mediagrid/capacitor-native-audio": "^1.0.0", @@ -2190,6 +2191,15 @@ "tslib": "^2.1.0" } }, + "node_modules/@capacitor/screen-orientation": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/@capacitor/screen-orientation/-/screen-orientation-6.0.2.tgz", + "integrity": "sha512-CF+RFUIUYrvztlX+voHwvONdAbf/F9xuJWfMDnxjiGliu+oPTNLLTWxAFPmoyi3sVJcNoeQ+qwWzUfXa7ag59Q==", + "license": "MIT", + "peerDependencies": { + "@capacitor/core": "^6.0.0" + } + }, "node_modules/@capgo/inappbrowser": { "version": "6.6.8", "resolved": "https://registry.npmjs.org/@capgo/inappbrowser/-/inappbrowser-6.6.8.tgz", @@ -2794,10 +2804,11 @@ } }, "node_modules/@polka/url": { - "version": "1.0.0-next.25", - "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.25.tgz", - "integrity": "sha512-j7P6Rgr3mmtdkeDGTe0E/aYyWEWVtc5yFXtHCRHs28/jptDEWfaVOc5T7cblqy1XKPPfCxJc/8DwQ5YgLOZOVQ==", - "dev": true + "version": "1.0.0-next.28", + "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.28.tgz", + "integrity": "sha512-8LduaNlMZGwdZ6qWrKlfa+2M4gahzFkprZiAt2TF8uS0qQgBizKXpXURqvTJ4WtmupWxaLqjRb2UCTe72mu+Aw==", + "dev": true, + "license": "MIT" }, "node_modules/@prettier/plugin-xml": { "version": "2.2.0", @@ -3141,15 +3152,16 @@ } }, "node_modules/@sveltejs/kit": { - "version": "2.5.27", - "resolved": "https://registry.npmjs.org/@sveltejs/kit/-/kit-2.5.27.tgz", - "integrity": "sha512-CcbRTzl+65oWljAASL6UlxM4x3NWwd0fjq5fQOfP243vs50myFQ8lil0fr3Im6HeeQqYUCtnv8HjO8REWVPjTw==", + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/@sveltejs/kit/-/kit-2.7.1.tgz", + "integrity": "sha512-TBVnkwgYQT3EafGQK6Eyh5FlLEBlRhCmqPTwcdOs+QdnyUc3eCAxRWtXlFxIWtmk6pqv11zdng8qTpThdTogew==", "dev": true, "hasInstallScript": true, + "license": "MIT", "dependencies": { "@types/cookie": "^0.6.0", "cookie": "^0.6.0", - "devalue": "^5.0.0", + "devalue": "^5.1.0", "esm-env": "^1.0.0", "import-meta-resolve": "^4.1.0", "kleur": "^4.1.5", @@ -3157,7 +3169,7 @@ "mrmime": "^2.0.0", "sade": "^1.8.1", "set-cookie-parser": "^2.6.0", - "sirv": "^2.0.4", + "sirv": "^3.0.0", "tiny-glob": "^0.2.9" }, "bin": { @@ -5614,10 +5626,11 @@ } }, "node_modules/devalue": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/devalue/-/devalue-5.0.0.tgz", - "integrity": "sha512-gO+/OMXF7488D+u3ue+G7Y4AA3ZmUnB3eHJXmBTgNHvr4ZNzl36A0ZtG+XCRNYCkYx/bFmw4qtkoFLa+wSrwAA==", - "dev": true + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/devalue/-/devalue-5.1.1.tgz", + "integrity": "sha512-maua5KUiapvEwiEAe+XnlZ3Rh0GD+qI1J/nb9vrJc3muPXvcF/8gXYTWF76+5DAqHyDUtOIImEuo0YKE9mshVw==", + "dev": true, + "license": "MIT" }, "node_modules/dezalgo": { "version": "1.0.4", @@ -8866,6 +8879,7 @@ "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-2.0.0.tgz", "integrity": "sha512-eu38+hdgojoyq63s+yTpN4XMBdt5l8HhMhc4VKLO9KM5caLIBvUm4thi7fFaxyTmCKeNnXZ5pAlBwCUnhA09uw==", "dev": true, + "license": "MIT", "engines": { "node": ">=10" } @@ -13569,17 +13583,18 @@ } }, "node_modules/sirv": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/sirv/-/sirv-2.0.4.tgz", - "integrity": "sha512-94Bdh3cC2PKrbgSOUqTiGPWVZeSiXfKOVZNJniWoqrWrRkB1CJzBU3NEbiTsPcYy1lDsANA/THzS+9WBiy5nfQ==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/sirv/-/sirv-3.0.0.tgz", + "integrity": "sha512-BPwJGUeDaDCHihkORDchNyyTvWFhcusy1XMmhEVTQTwGeybFbp8YEmB+njbPnth1FibULBSBVwCQni25XlCUDg==", "dev": true, + "license": "MIT", "dependencies": { "@polka/url": "^1.0.0-next.24", "mrmime": "^2.0.0", "totalist": "^3.0.0" }, "engines": { - "node": ">= 10" + "node": ">=18" } }, "node_modules/sisteransi": { @@ -14807,6 +14822,7 @@ "resolved": "https://registry.npmjs.org/totalist/-/totalist-3.0.1.tgz", "integrity": "sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } diff --git a/materialious/package.json b/materialious/package.json index 841d84ce..8a6f85cc 100644 --- a/materialious/package.json +++ b/materialious/package.json @@ -50,6 +50,7 @@ "@capacitor/cli": "6.1.2", "@capacitor/clipboard": "^6.0.1", "@capacitor/core": "^6.1.2", + "@capacitor/screen-orientation": "^6.0.2", "@capgo/inappbrowser": "^6.6.8", "@ffmpeg/ffmpeg": "^0.12.10", "@mediagrid/capacitor-native-audio": "^1.0.0", @@ -74,4 +75,4 @@ "vidstack": "^1.12.9", "youtubei.js": "^10.5.0" } -} \ No newline at end of file +} diff --git a/materialious/src/lib/Player.svelte b/materialious/src/lib/Player.svelte index b098f1d8..b4d1c17f 100644 --- a/materialious/src/lib/Player.svelte +++ b/materialious/src/lib/Player.svelte @@ -195,7 +195,7 @@ kind: 'captions', language: caption.language_code, // Need if captions are generated when youtube.js is being used. - src: caption.url.startsWith('blob:') + src: caption.url.startsWith('http') ? caption.url : `${get(instanceStore)}${caption.url}` }); diff --git a/materialious/src/lib/patches/youtubejs.ts b/materialious/src/lib/patches/youtubejs.ts index 174db96b..eedfb662 100644 --- a/materialious/src/lib/patches/youtubejs.ts +++ b/materialious/src/lib/patches/youtubejs.ts @@ -1,4 +1,4 @@ -import type { Image, Thumbnail, VideoBase, VideoPlay } from '$lib/Api/model'; +import type { AdaptiveFormats, Captions, Image, Thumbnail, VideoBase, VideoPlay } from '$lib/Api/model'; import { numberWithCommas } from '$lib/misc'; import { interfaceRegionStore, poTokenCacheStore } from '$lib/store'; import { Capacitor } from '@capacitor/core'; @@ -85,6 +85,8 @@ export async function patchYoutubeJs(videoId: string): Promise { const video = await youtube.getInfo(videoId); + console.log(video); + if (!video.primary_info || !video.secondary_info) { throw new Error('Unable to pull video info from youtube.js'); } @@ -104,7 +106,8 @@ export async function patchYoutubeJs(videoId: string): Promise { let authorThumbnails: Image[]; if (video.basic_info.channel_id) { - authorThumbnails = (await youtube.getChannel(video.basic_info.channel_id)).metadata.avatar as Image[]; + const channel = await youtube.getChannel(video.basic_info.channel_id); + authorThumbnails = channel.metadata.avatar as Image[]; } else { authorThumbnails = []; } @@ -122,6 +125,31 @@ export async function patchYoutubeJs(videoId: string): Promise { }); }); + let captions: Captions[] = []; + video.captions?.caption_tracks?.forEach(caption => { + captions.push({ + label: caption.name.toString(), + language_code: caption.language_code, + url: caption.base_url + }); + }); + + let adaptiveFormats: AdaptiveFormats[] = []; + video.streaming_data?.adaptive_formats.forEach(format => { + adaptiveFormats.push({ + index: format.index_range?.start.toString() || '', + bitrate: format.bitrate.toString(), + init: format.init_range?.start.toString() || '', + url: format.url || '', + itag: format.itag.toString(), + type: format.mime_type, + clen: '', + lmt: '', + projectionType: 0, + resolution: format.width ? `${format.width}x${format.height}` : undefined + }); + }); + return { type: 'video', title: video.primary_info.title ? video.primary_info.title.toString() : '', @@ -136,11 +164,11 @@ export async function patchYoutubeJs(videoId: string): Promise { genre: video.basic_info.category || '', genreUrl: '', dashUrl: dashUri, - adaptiveFormats: [], + adaptiveFormats: adaptiveFormats, formatStreams: [], recommendedVideos: recommendedVideos, authorThumbnails: authorThumbnails, - captions: [], + captions: captions, authorId: video.basic_info.channel_id || '', authorUrl: `/channel/${video.basic_info.channel_id}`, authorVerified: false, diff --git a/materialious/src/routes/(app)/channel/[slug]/+page.svelte b/materialious/src/routes/(app)/channel/[slug]/+page.svelte index 17cf5471..5fd827ab 100644 --- a/materialious/src/routes/(app)/channel/[slug]/+page.svelte +++ b/materialious/src/routes/(app)/channel/[slug]/+page.svelte @@ -3,7 +3,7 @@ import type { ChannelContentPlaylists, ChannelContentVideos } from '$lib/Api/model'; import PageLoading from '$lib/PageLoading.svelte'; import PlaylistThumbnail from '$lib/PlaylistThumbnail.svelte'; - import Thumbnail from '$lib/Thumbnail.svelte'; + import VideoList from '$lib/VideoList.svelte'; import { cleanNumber, getBestThumbnail, proxyGoogleImage } from '$lib/misc'; import { activePageStore, authStore } from '$lib/store'; import { Clipboard } from '@capacitor/clipboard'; @@ -188,13 +188,7 @@
{#if 'videos' in displayContent} - {#each displayContent.videos as video} -
-
- -
-
- {/each} + {:else} {#each displayContent.playlists as playlist}
From 723ffac1d3ee38bbbbbaa0566a1bcfa3f1399f10 Mon Sep 17 00:00:00 2001 From: WardPearce Date: Thu, 17 Oct 2024 14:23:17 +1300 Subject: [PATCH 3/6] Fix content column breakpoints --- materialious/src/lib/ContentColumn.svelte | 23 +++++++++++++++++++ materialious/src/lib/VideoList.svelte | 20 +++------------- .../routes/(app)/channel/[slug]/+page.svelte | 21 +++++++++-------- .../routes/(app)/search/[slug]/+page.svelte | 5 ++-- 4 files changed, 40 insertions(+), 29 deletions(-) create mode 100644 materialious/src/lib/ContentColumn.svelte diff --git a/materialious/src/lib/ContentColumn.svelte b/materialious/src/lib/ContentColumn.svelte new file mode 100644 index 00000000..e4949525 --- /dev/null +++ b/materialious/src/lib/ContentColumn.svelte @@ -0,0 +1,23 @@ + + +
+ +
diff --git a/materialious/src/lib/VideoList.svelte b/materialious/src/lib/VideoList.svelte index 8581fc1a..5a980293 100644 --- a/materialious/src/lib/VideoList.svelte +++ b/materialious/src/lib/VideoList.svelte @@ -1,9 +1,9 @@
@@ -41,7 +27,7 @@
{#each videos as video} {#if !hiddenVideos.includes(video.videoId)} -
+
(hiddenVideos = [...hiddenVideos, video.videoId])} @@ -60,7 +46,7 @@
{/if} -
+ {/if} {/each}
diff --git a/materialious/src/routes/(app)/channel/[slug]/+page.svelte b/materialious/src/routes/(app)/channel/[slug]/+page.svelte index 5fd827ab..dcbe2cde 100644 --- a/materialious/src/routes/(app)/channel/[slug]/+page.svelte +++ b/materialious/src/routes/(app)/channel/[slug]/+page.svelte @@ -1,6 +1,7 @@