Fix video length missing on recommended videos
This commit is contained in:
@@ -7,8 +7,8 @@ android {
|
||||
applicationId "us.materialio.app"
|
||||
minSdkVersion rootProject.ext.minSdkVersion
|
||||
targetSdkVersion rootProject.ext.targetSdkVersion
|
||||
versionCode 184
|
||||
versionName "1.13.0"
|
||||
versionCode 185
|
||||
versionName "1.13.1"
|
||||
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
|
||||
aaptOptions {
|
||||
// Files and dirs to omit from the packaged assets dir, modified to accommodate modern web apps.
|
||||
|
||||
@@ -81,7 +81,11 @@
|
||||
|
||||
|
||||
|
||||
<release version="1.13.0" date="2026-1-03">
|
||||
|
||||
<release version="1.13.1" date="2026-1-06">
|
||||
<url>https://github.com/Materialious/Materialious/releases/tag/1.13.1</url>
|
||||
</release>
|
||||
<release version="1.13.0" date="2026-1-03">
|
||||
<url>https://github.com/Materialious/Materialious/releases/tag/1.13.0</url>
|
||||
</release>
|
||||
<release version="1.12.11" date="2026-1-02">
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "Materialious",
|
||||
"version": "1.13.0",
|
||||
"version": "1.13.1",
|
||||
"description": "Modern material design for Invidious.",
|
||||
"author": {
|
||||
"name": "Ward Pearce",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "materialious",
|
||||
"version": "1.13.0",
|
||||
"version": "1.13.1",
|
||||
"private": true,
|
||||
"scripts": {
|
||||
"dev": "npm run patch:github && vite dev",
|
||||
@@ -77,4 +77,4 @@
|
||||
"svelte-infinite-loading": "^1.4.0",
|
||||
"youtubei.js": "^16.0.1"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -8,6 +8,7 @@ import type {
|
||||
VideoBase,
|
||||
VideoPlay
|
||||
} from '$lib/api/model';
|
||||
import { convertToSeconds } from '$lib/numbers';
|
||||
import { interfaceRegionStore, poTokenCacheStore } from '$lib/store';
|
||||
import { Capacitor } from '@capacitor/core';
|
||||
import { USER_AGENT } from 'bgutils-js';
|
||||
@@ -165,30 +166,43 @@ export async function patchYoutubeJs(videoId: string): Promise<VideoPlay> {
|
||||
});
|
||||
|
||||
const recommendedVideos: VideoBase[] = [];
|
||||
video.watch_next_feed?.forEach((recommended: Record<string, any>) => {
|
||||
video.watch_next_feed?.forEach((recommended) => {
|
||||
if (
|
||||
!recommended.metadata?.title?.text ||
|
||||
!recommended.is(YTNodes.LockupView) ||
|
||||
recommended.content_type !== 'VIDEO' ||
|
||||
!recommended.metadata.metadata.metadata_rows ||
|
||||
!recommended.metadata ||
|
||||
!recommended.content_image?.is(YTNodes.ThumbnailView) ||
|
||||
!recommended.metadata.metadata ||
|
||||
recommended.metadata.metadata.metadata_rows.length < 2
|
||||
) {
|
||||
)
|
||||
return;
|
||||
}
|
||||
|
||||
const durationOverlay = recommended.content_image.overlays
|
||||
?.find(
|
||||
(overlay) =>
|
||||
overlay.is(YTNodes.ThumbnailOverlayBadgeView) &&
|
||||
overlay.position === 'THUMBNAIL_OVERLAY_BADGE_POSITION_BOTTOM_END'
|
||||
)
|
||||
?.as(YTNodes.ThumbnailOverlayBadgeView);
|
||||
|
||||
recommendedVideos.push({
|
||||
videoThumbnails: (recommended?.content_image?.image as Thumbnail[]) || [],
|
||||
videoId: recommended?.content_id || '',
|
||||
title: recommended.metadata?.title?.text || '',
|
||||
viewCountText: recommended.metadata.metadata.metadata_rows[1]?.metadata_parts[0]
|
||||
? recommended.metadata.metadata.metadata_rows[1]?.metadata_parts[0]?.text.text?.replace(
|
||||
'views',
|
||||
''
|
||||
)
|
||||
: '',
|
||||
lengthSeconds: recommended?.duration?.seconds || 0,
|
||||
author: recommended.metadata.metadata.metadata_rows[0]?.metadata_parts[0]?.text.text || '',
|
||||
videoThumbnails: (recommended?.content_image.image as Thumbnail[]) || [],
|
||||
videoId: recommended.content_id,
|
||||
title: recommended.metadata.title.toString(),
|
||||
viewCountText:
|
||||
(recommended.metadata.metadata.metadata_rows[1]?.metadata_parts?.[0]?.text ?? '')
|
||||
.toString()
|
||||
.replace('views', '') || '',
|
||||
author:
|
||||
(
|
||||
recommended.metadata.metadata.metadata_rows[0]?.metadata_parts?.[0]?.text ?? ''
|
||||
).toString() || '',
|
||||
|
||||
lengthSeconds: durationOverlay?.badges[0].text
|
||||
? convertToSeconds(durationOverlay?.badges[0].text)
|
||||
: 0,
|
||||
authorId:
|
||||
recommended.metadata?.image?.renderer_context?.command_context?.on_tap.payload?.browseId ||
|
||||
recommended.metadata?.image?.renderer_context?.command_context?.on_tap?.payload?.browseId ||
|
||||
'',
|
||||
type: 'video'
|
||||
});
|
||||
|
||||
File diff suppressed because one or more lines are too long
+1
-1
@@ -3,7 +3,7 @@ import os
|
||||
import re
|
||||
from datetime import datetime
|
||||
|
||||
LATEST_VERSION = "1.13.0"
|
||||
LATEST_VERSION = "1.13.1"
|
||||
RELEASE_DATE = datetime.now().strftime("%Y-%-m-%d") # Format: YYYY-M-D
|
||||
|
||||
WORKING_DIR = os.path.join(os.path.dirname(os.path.realpath(__file__)), "materialious")
|
||||
|
||||
Reference in New Issue
Block a user