Minor fixes causing some post live DVR not to load

This commit is contained in:
ward
2025-06-14 01:09:47 +12:00
parent 15f1df3cf7
commit efa9f7bdf3
3 changed files with 38 additions and 30 deletions
+2 -2
View File
@@ -1,12 +1,12 @@
{
"name": "Materialious",
"version": "1.9.5",
"version": "1.9.6",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "Materialious",
"version": "1.9.5",
"version": "1.9.6",
"license": "MIT",
"dependencies": {
"@capacitor-community/electron": "^5.0.0",
+12 -2
View File
@@ -129,7 +129,7 @@ export function injectSABR(
type === shaka.net.NetworkingEngine.RequestType.SEGMENT &&
url.pathname.includes('videoplayback')
) {
if (!video.liveNow) {
if (!video.liveNow && !video.ytjs?.video.basic_info.is_post_live_dvr) {
const currentFormat = formatList.find(
(format) =>
fromFormat(format) === (new URL(request.uris[0]).searchParams.get('___key') || '')
@@ -283,7 +283,17 @@ export function injectSABR(
request.headers['X-Streaming-Context'] = btoa(JSON.stringify(sabrStreamingContext));
delete headers.Range;
} else {
url.pathname += `/ump/1/srfvp/1/pot/${get(poTokenCacheStore)}`;
if (!video.liveNow && !video.ytjs?.video.basic_info.is_post_live_dvr) {
url.searchParams.set('ump', '1');
url.searchParams.set('srfvp', '1');
if (headers.Range) {
url.searchParams.set('range', headers.Range?.split('=')[1]);
delete headers.Range;
}
} else {
url.pathname += '/ump/1';
url.pathname += '/srfvp/1';
}
request.headers['X-Streaming-Context'] = btoa(
JSON.stringify({
+24 -26
View File
@@ -112,33 +112,31 @@ export class SabrUmpParser {
}
private handlePart(part: Part): shaka.extern.Response | undefined {
switch (part.type) {
case PART.FORMAT_INITIALIZATION_METADATA:
this.handleFormatInitMetadata(part);
break;
case PART.NEXT_REQUEST_POLICY:
this.handleNextRequestPolicy(part);
break;
case PART.MEDIA_HEADER:
try {
try {
switch (part.type) {
case PART.FORMAT_INITIALIZATION_METADATA:
this.handleFormatInitMetadata(part);
break;
case PART.NEXT_REQUEST_POLICY:
this.handleNextRequestPolicy(part);
break;
case PART.MEDIA_HEADER:
this.handleMediaHeader(part);
} catch (error) {
console.error(error);
}
break;
case PART.MEDIA:
this.handleMedia(part);
break;
case PART.MEDIA_END:
return this.handleMediaEnd(part);
case PART.SABR_ERROR:
return this.handleSabrError(part);
case PART.STREAM_PROTECTION_STATUS:
return this.handleStreamProtectionStatus(part);
case PART.SABR_REDIRECT:
return this.handleSabrRedirect(part);
default:
}
break;
case PART.MEDIA:
this.handleMedia(part);
break;
case PART.MEDIA_END:
return this.handleMediaEnd(part);
case PART.SABR_ERROR:
return this.handleSabrError(part);
case PART.STREAM_PROTECTION_STATUS:
return this.handleStreamProtectionStatus(part);
case PART.SABR_REDIRECT:
return this.handleSabrRedirect(part);
default:
}
} catch {}
}
private handleFormatInitMetadata(part: Part) {