prismcast 1.7.0 → 1.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +6 -6
- package/dist/app.js +24 -13
- package/dist/app.js.map +1 -1
- package/dist/browser/cdp.d.ts +4 -6
- package/dist/browser/cdp.js +13 -17
- package/dist/browser/cdp.js.map +1 -1
- package/dist/browser/index.js +3 -3
- package/dist/browser/index.js.map +1 -1
- package/dist/browser/login.js +11 -8
- package/dist/browser/login.js.map +1 -1
- package/dist/browser/precaching.d.ts +1 -1
- package/dist/browser/precaching.js +23 -23
- package/dist/browser/precaching.js.map +1 -1
- package/dist/browser/tuning/directv.js +4 -7
- package/dist/browser/tuning/directv.js.map +1 -1
- package/dist/browser/tuning/fox.js +1 -1
- package/dist/browser/tuning/fox.js.map +1 -1
- package/dist/browser/tuning/hbo.js +1 -1
- package/dist/browser/tuning/hbo.js.map +1 -1
- package/dist/browser/tuning/hulu.js +3 -3
- package/dist/browser/tuning/hulu.js.map +1 -1
- package/dist/browser/tuning/sling.js +2 -2
- package/dist/browser/tuning/sling.js.map +1 -1
- package/dist/channels/index.d.ts +2 -0
- package/dist/channels/index.js +438 -252
- package/dist/channels/index.js.map +1 -1
- package/dist/config/health.d.ts +3 -3
- package/dist/config/health.js +13 -18
- package/dist/config/health.js.map +1 -1
- package/dist/config/index.js +11 -2
- package/dist/config/index.js.map +1 -1
- package/dist/config/persistence.d.ts +59 -0
- package/dist/config/persistence.js +127 -0
- package/dist/config/persistence.js.map +1 -0
- package/dist/config/profiles.js +10 -10
- package/dist/config/profiles.js.map +1 -1
- package/dist/config/servicePacks.d.ts +46 -0
- package/dist/config/{providerPacks.js → servicePacks.js} +28 -31
- package/dist/config/servicePacks.js.map +1 -0
- package/dist/config/services.d.ts +202 -0
- package/dist/config/services.js +758 -0
- package/dist/config/services.js.map +1 -0
- package/dist/config/sites.js +61 -61
- package/dist/config/sites.js.map +1 -1
- package/dist/config/userChannels.d.ts +89 -27
- package/dist/config/userChannels.js +400 -184
- package/dist/config/userChannels.js.map +1 -1
- package/dist/config/userConfig.d.ts +13 -9
- package/dist/config/userConfig.js +78 -60
- package/dist/config/userConfig.js.map +1 -1
- package/dist/config/userProfiles.d.ts +31 -15
- package/dist/config/userProfiles.js +154 -123
- package/dist/config/userProfiles.js.map +1 -1
- package/dist/hdhr/channelMap.d.ts +1 -1
- package/dist/hdhr/channelMap.js +4 -7
- package/dist/hdhr/channelMap.js.map +1 -1
- package/dist/hdhr/discover.js +7 -15
- package/dist/hdhr/discover.js.map +1 -1
- package/dist/hdhr/index.js +6 -9
- package/dist/hdhr/index.js.map +1 -1
- package/dist/native/index.d.ts +2 -2
- package/dist/native/index.js +17 -27
- package/dist/native/index.js.map +1 -1
- package/dist/native/intercept.js +86 -89
- package/dist/native/intercept.js.map +1 -1
- package/dist/native/probe.js +2 -2
- package/dist/native/probe.js.map +1 -1
- package/dist/native/proxy.d.ts +2 -2
- package/dist/native/proxy.js +4 -4
- package/dist/native/proxy.js.map +1 -1
- package/dist/routes/assets.js +29 -51
- package/dist/routes/assets.js.map +1 -1
- package/dist/routes/auth.js +3 -3
- package/dist/routes/auth.js.map +1 -1
- package/dist/routes/channels.js +5 -11
- package/dist/routes/channels.js.map +1 -1
- package/dist/routes/components.d.ts +0 -8
- package/dist/routes/components.js +0 -19
- package/dist/routes/components.js.map +1 -1
- package/dist/routes/config/channels/index.d.ts +1 -1
- package/dist/routes/config/channels/index.js +1 -1
- package/dist/routes/config/channels/index.js.map +1 -1
- package/dist/routes/config/channels/routes.js +748 -420
- package/dist/routes/config/channels/routes.js.map +1 -1
- package/dist/routes/config/channels/table.d.ts +21 -6
- package/dist/routes/config/channels/table.js +456 -193
- package/dist/routes/config/channels/table.js.map +1 -1
- package/dist/routes/config/index.d.ts +2 -2
- package/dist/routes/config/index.js +3 -3
- package/dist/routes/config/index.js.map +1 -1
- package/dist/routes/config/{providers.js → services.js} +47 -42
- package/dist/routes/config/services.js.map +1 -0
- package/dist/routes/config/settings.js +88 -49
- package/dist/routes/config/settings.js.map +1 -1
- package/dist/routes/debug.js +5 -7
- package/dist/routes/debug.js.map +1 -1
- package/dist/routes/health.js +1 -1
- package/dist/routes/health.js.map +1 -1
- package/dist/routes/icons.d.ts +16 -0
- package/dist/routes/icons.js +44 -0
- package/dist/routes/icons.js.map +1 -0
- package/dist/routes/index.js +2 -2
- package/dist/routes/index.js.map +1 -1
- package/dist/routes/logs.js +4 -4
- package/dist/routes/logs.js.map +1 -1
- package/dist/routes/playlist.d.ts +6 -4
- package/dist/routes/playlist.js +98 -45
- package/dist/routes/playlist.js.map +1 -1
- package/dist/routes/root/content.js +94 -55
- package/dist/routes/root/content.js.map +1 -1
- package/dist/routes/root/scripts/channels.js +620 -478
- package/dist/routes/root/scripts/channels.js.map +1 -1
- package/dist/routes/root/scripts/config.js +884 -964
- package/dist/routes/root/scripts/config.js.map +1 -1
- package/dist/routes/root/scripts/shared.js +468 -188
- package/dist/routes/root/scripts/shared.js.map +1 -1
- package/dist/routes/root/scripts/status.js +252 -207
- package/dist/routes/root/scripts/status.js.map +1 -1
- package/dist/routes/root/styles.js +57 -8
- package/dist/routes/root/styles.js.map +1 -1
- package/dist/routes/services.d.ts +6 -0
- package/dist/routes/{providers.js → services.js} +43 -43
- package/dist/routes/services.js.map +1 -0
- package/dist/routes/ui.d.ts +1 -1
- package/dist/routes/ui.js +3 -1
- package/dist/routes/ui.js.map +1 -1
- package/dist/service/commands.js +8 -43
- package/dist/service/commands.js.map +1 -1
- package/dist/service/generators.d.ts +1 -1
- package/dist/service/generators.js +143 -41
- package/dist/service/generators.js.map +1 -1
- package/dist/streaming/codec.d.ts +20 -0
- package/dist/streaming/codec.js +68 -0
- package/dist/streaming/codec.js.map +1 -0
- package/dist/streaming/fmp4Segmenter.d.ts +2 -2
- package/dist/streaming/fmp4Segmenter.js.map +1 -1
- package/dist/streaming/hls.d.ts +4 -4
- package/dist/streaming/hls.js +35 -29
- package/dist/streaming/hls.js.map +1 -1
- package/dist/streaming/hlsResume.js +3 -3
- package/dist/streaming/hlsResume.js.map +1 -1
- package/dist/streaming/monitor.d.ts +2 -2
- package/dist/streaming/monitor.js +19 -13
- package/dist/streaming/monitor.js.map +1 -1
- package/dist/streaming/preroll.d.ts +15 -14
- package/dist/streaming/preroll.js +32 -12
- package/dist/streaming/preroll.js.map +1 -1
- package/dist/streaming/registry.d.ts +2 -2
- package/dist/streaming/registry.js +4 -8
- package/dist/streaming/registry.js.map +1 -1
- package/dist/streaming/setup.d.ts +4 -4
- package/dist/streaming/setup.js +28 -34
- package/dist/streaming/setup.js.map +1 -1
- package/dist/streaming/showInfo.js +8 -10
- package/dist/streaming/showInfo.js.map +1 -1
- package/dist/streaming/statusEmitter.d.ts +4 -3
- package/dist/streaming/statusEmitter.js +3 -3
- package/dist/streaming/statusEmitter.js.map +1 -1
- package/dist/types/channels.d.ts +18 -11
- package/dist/types/config.d.ts +3 -2
- package/dist/types/index.d.ts +4 -3
- package/dist/types/index.js +1 -0
- package/dist/types/index.js.map +1 -1
- package/dist/types/profiles.d.ts +9 -9
- package/dist/types/selection.d.ts +1 -1
- package/dist/types/shared.d.ts +1 -1
- package/dist/types/streaming.d.ts +8 -16
- package/dist/types/streaming.js +5 -1
- package/dist/types/streaming.js.map +1 -1
- package/dist/upgrade/commands.js +1 -16
- package/dist/upgrade/commands.js.map +1 -1
- package/dist/utils/chromeFetch.js +1 -1
- package/dist/utils/cliOutput.d.ts +10 -0
- package/dist/utils/cliOutput.js +17 -0
- package/dist/utils/cliOutput.js.map +1 -0
- package/dist/utils/debugFilter.js +3 -3
- package/dist/utils/debugFilter.js.map +1 -1
- package/dist/utils/fileLogger.js +4 -3
- package/dist/utils/fileLogger.js.map +1 -1
- package/dist/utils/format.d.ts +21 -4
- package/dist/utils/format.js +45 -7
- package/dist/utils/format.js.map +1 -1
- package/dist/utils/index.d.ts +1 -0
- package/dist/utils/index.js +1 -0
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/logger.js +17 -27
- package/dist/utils/logger.js.map +1 -1
- package/dist/utils/morganStream.js +2 -2
- package/dist/utils/morganStream.js.map +1 -1
- package/dist/utils/platform.js +3 -2
- package/dist/utils/platform.js.map +1 -1
- package/dist/utils/retry.js +2 -4
- package/dist/utils/retry.js.map +1 -1
- package/dist/utils/streamContext.d.ts +7 -0
- package/dist/utils/streamContext.js +10 -1
- package/dist/utils/streamContext.js.map +1 -1
- package/dist/utils/version.js +4 -4
- package/dist/utils/version.js.map +1 -1
- package/package.json +5 -7
- package/dist/config/providerPacks.d.ts +0 -46
- package/dist/config/providerPacks.js.map +0 -1
- package/dist/config/providers.d.ts +0 -175
- package/dist/config/providers.js +0 -678
- package/dist/config/providers.js.map +0 -1
- package/dist/routes/config/providers.js.map +0 -1
- package/dist/routes/providers.d.ts +0 -6
- package/dist/routes/providers.js.map +0 -1
- /package/dist/routes/config/{providers.d.ts → services.d.ts} +0 -0
package/dist/hdhr/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/hdhr/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACnE,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/hdhr/index.ts"],"names":[],"mappings":"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"}
|
package/dist/native/index.d.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
+
import type { CaptureCodec } from "../streaming/codec.js";
|
|
1
2
|
import type { ManifestInterceptionResult } from "./intercept.js";
|
|
2
3
|
import type { NativeProxy } from "./proxy.js";
|
|
3
4
|
import type { Nullable } from "../types/index.js";
|
|
4
5
|
import type { Page } from "puppeteer-core";
|
|
5
|
-
import type { PrerollCodec } from "../streaming/preroll.js";
|
|
6
6
|
/**
|
|
7
7
|
* Options for attempting native streaming.
|
|
8
8
|
*/
|
|
@@ -12,7 +12,7 @@ export interface AttemptNativeStreamingOptions {
|
|
|
12
12
|
mpegTsClient?: boolean;
|
|
13
13
|
onError: (error: string) => void;
|
|
14
14
|
page: Page;
|
|
15
|
-
prerollCodec?:
|
|
15
|
+
prerollCodec?: CaptureCodec;
|
|
16
16
|
prerollSegmentCount?: number;
|
|
17
17
|
streamId: number;
|
|
18
18
|
streamIdStr: string;
|
package/dist/native/index.js
CHANGED
|
@@ -7,7 +7,7 @@ import { clearProbeCache, probeManifest } from "./probe.js";
|
|
|
7
7
|
import { installManifestInterceptor, removeManifestInterceptor } from "./intercept.js";
|
|
8
8
|
import { createNativeProxy } from "./proxy.js";
|
|
9
9
|
import { fetchDecryptionKey } from "./decrypt.js";
|
|
10
|
-
/* This module orchestrates the native streaming decision. After the browser navigates to a channel and video playback begins, we check whether the
|
|
10
|
+
/* This module orchestrates the native streaming decision. After the browser navigates to a channel and video playback begins, we check whether the service's HLS
|
|
11
11
|
* stream can be consumed directly in Node (bypassing screen capture). The decision flow is:
|
|
12
12
|
*
|
|
13
13
|
* 1. Await the manifest interception promise (CDP listener was installed before navigation)
|
|
@@ -136,30 +136,20 @@ export async function attemptNativeStreaming(options) {
|
|
|
136
136
|
* @returns The expiration timestamp in milliseconds, or null.
|
|
137
137
|
*/
|
|
138
138
|
function parseTokenExpiry(url) {
|
|
139
|
-
//
|
|
140
|
-
const
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
const pathExpMatch = /\/exp=(\d{10,13})~/.exec(url);
|
|
154
|
-
if (pathExpMatch) {
|
|
155
|
-
const value = Number(pathExpMatch[1]);
|
|
156
|
-
return value < 1e12 ? value * 1000 : value;
|
|
157
|
-
}
|
|
158
|
-
// Pattern 4: URL-encoded exp%3D (hdnts parameter).
|
|
159
|
-
const encodedExpMatch = /exp%3D(\d{10,13})/.exec(url);
|
|
160
|
-
if (encodedExpMatch) {
|
|
161
|
-
const value = Number(encodedExpMatch[1]);
|
|
162
|
-
return value < 1e12 ? value * 1000 : value;
|
|
139
|
+
// Each pattern captures a 10-13 digit expiration timestamp from a different token format. The patterns are tried in order; the first match wins.
|
|
140
|
+
const expiryPatterns = [
|
|
141
|
+
/[?&]exp=(\d{10,13})/, // Plain query parameter: exp=N.
|
|
142
|
+
/~exp=(\d{10,13})~/, // Akamai token in query parameter: hdnea=...~exp=N~...
|
|
143
|
+
/\/exp=(\d{10,13})~/, // Akamai token in URL path: /exp=N~acl=...
|
|
144
|
+
/exp%3D(\d{10,13})/ // URL-encoded hdnts parameter: exp%3DN.
|
|
145
|
+
];
|
|
146
|
+
for (const pattern of expiryPatterns) {
|
|
147
|
+
const match = pattern.exec(url);
|
|
148
|
+
if (match) {
|
|
149
|
+
const value = Number(match[1]);
|
|
150
|
+
// If the value is 10 digits, it's seconds; if 13, it's milliseconds.
|
|
151
|
+
return value < 1e12 ? value * 1000 : value;
|
|
152
|
+
}
|
|
163
153
|
}
|
|
164
154
|
return null;
|
|
165
155
|
}
|
|
@@ -253,8 +243,8 @@ export async function refreshNativeManifest(options) {
|
|
|
253
243
|
return false;
|
|
254
244
|
}
|
|
255
245
|
// Navigate the page back to the channel URL to trigger fresh authentication. The interceptor captures .m3u8 requests generated by this navigation. Note: this
|
|
256
|
-
// uses a bare page.goto without the
|
|
257
|
-
// activates for
|
|
246
|
+
// uses a bare page.goto without the service's site profile (no waitForNetworkIdle, scroll options, etc.). This is acceptable because native streaming only
|
|
247
|
+
// activates for services whose video players load the HLS manifest during basic page load. Services requiring profile-aware navigation for manifest delivery
|
|
258
248
|
// would have failed the initial interception and would not be in native mode.
|
|
259
249
|
await page.goto(url, { timeout: 30000, waitUntil: "domcontentloaded" });
|
|
260
250
|
// Check if the proxy was stopped while we were navigating (e.g., stream terminated during the page load).
|
package/dist/native/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/native/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/native/index.ts"],"names":[],"mappings":"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"}
|
package/dist/native/intercept.js
CHANGED
|
@@ -62,107 +62,104 @@ export async function installManifestInterceptor(page, timeout = INTERCEPTION_TI
|
|
|
62
62
|
let latestManifestUrl = null;
|
|
63
63
|
let resolved = false;
|
|
64
64
|
let manifestCount = 0;
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
// a master manifest. This avoids CDP's Network.getResponseBody which is unreliable — Chrome's network cache can evict response bodies before we read them.
|
|
86
|
-
const onResponseReceived = async (params) => {
|
|
87
|
-
if (resolved) {
|
|
65
|
+
const { promise, resolve } = Promise.withResolvers();
|
|
66
|
+
// Listen for completed responses. We use Network.responseReceived to capture .m3u8 URLs, then fetch the manifest body directly from Node.js to verify it is
|
|
67
|
+
// a master manifest. This avoids CDP's Network.getResponseBody which is unreliable — Chrome's network cache can evict response bodies before we read them.
|
|
68
|
+
const onResponseReceived = async (params) => {
|
|
69
|
+
if (resolved) {
|
|
70
|
+
return;
|
|
71
|
+
}
|
|
72
|
+
const url = params.response.url;
|
|
73
|
+
// Filter for .m3u8 URLs. Strip query parameters before checking the extension.
|
|
74
|
+
const urlPath = url.split("?")[0];
|
|
75
|
+
if (!urlPath.endsWith(".m3u8")) {
|
|
76
|
+
return;
|
|
77
|
+
}
|
|
78
|
+
LOG.debug("native:intercept", "Observed .m3u8 response: %s.", url.slice(0, 120));
|
|
79
|
+
// Fetch the manifest body directly to inspect whether this is a master manifest. The URL contains embedded CDN auth tokens, so no cookies or special
|
|
80
|
+
// headers are needed beyond the Chrome User-Agent injected by chromeFetch().
|
|
81
|
+
try {
|
|
82
|
+
const response = await chromeFetch(url, { signal: AbortSignal.timeout(5000) });
|
|
83
|
+
if (!response.ok) {
|
|
84
|
+
LOG.debug("native:intercept", "Manifest fetch returned HTTP %s for %s.", response.status, url.slice(0, 120));
|
|
88
85
|
return;
|
|
89
86
|
}
|
|
90
|
-
const
|
|
91
|
-
//
|
|
92
|
-
|
|
93
|
-
if (
|
|
94
|
-
|
|
87
|
+
const body = await response.text();
|
|
88
|
+
// Master manifests contain #EXT-X-STREAM-INF directives that reference variant playlists. Media/variant playlists contain #EXTINF or #EXT-X-TARGETDURATION
|
|
89
|
+
// but not #EXT-X-STREAM-INF.
|
|
90
|
+
if (body.includes("#EXT-X-STREAM-INF")) {
|
|
91
|
+
manifestCount++;
|
|
92
|
+
firstManifestUrl ??= url;
|
|
93
|
+
latestManifestUrl = url;
|
|
94
|
+
LOG.debug("native:intercept", "Master manifest captured (#%s) in %sms: %s.", manifestCount, elapsed(), url.slice(0, 120));
|
|
95
95
|
}
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
// headers are needed beyond the Chrome User-Agent injected by chromeFetch().
|
|
99
|
-
try {
|
|
100
|
-
const response = await chromeFetch(url, { signal: AbortSignal.timeout(5000) });
|
|
101
|
-
if (!response.ok) {
|
|
102
|
-
LOG.debug("native:intercept", "Manifest fetch returned HTTP %s for %s.", response.status, url.slice(0, 120));
|
|
103
|
-
return;
|
|
104
|
-
}
|
|
105
|
-
const body = await response.text();
|
|
106
|
-
// Master manifests contain #EXT-X-STREAM-INF directives that reference variant playlists. Media/variant playlists contain #EXTINF or #EXT-X-TARGETDURATION
|
|
107
|
-
// but not #EXT-X-STREAM-INF.
|
|
108
|
-
if (body.includes("#EXT-X-STREAM-INF")) {
|
|
109
|
-
manifestCount++;
|
|
110
|
-
firstManifestUrl ??= url;
|
|
111
|
-
latestManifestUrl = url;
|
|
112
|
-
LOG.debug("native:intercept", "Master manifest captured (#%s) in %sms: %s.", manifestCount, elapsed(), url.slice(0, 120));
|
|
113
|
-
}
|
|
114
|
-
else {
|
|
115
|
-
LOG.debug("native:intercept", "Skipping non-master .m3u8 (no #EXT-X-STREAM-INF).");
|
|
116
|
-
}
|
|
96
|
+
else {
|
|
97
|
+
LOG.debug("native:intercept", "Skipping non-master .m3u8 (no #EXT-X-STREAM-INF).");
|
|
117
98
|
}
|
|
118
|
-
|
|
119
|
-
|
|
99
|
+
}
|
|
100
|
+
catch (error) {
|
|
101
|
+
LOG.debug("native:intercept", "Could not fetch .m3u8 body: %s.", String(error));
|
|
102
|
+
}
|
|
103
|
+
};
|
|
104
|
+
// Wrap the async handler to avoid no-misused-promises — EventEmitter.on() does not handle returned promises.
|
|
105
|
+
const wrappedHandler = (...args) => { void onResponseReceived(...args); };
|
|
106
|
+
cdpSession.on("Network.responseReceived", wrappedHandler);
|
|
107
|
+
// Timeout guard. If finalize() is never called (defensive), resolve with whatever we have after the timeout.
|
|
108
|
+
const timer = setTimeout(() => {
|
|
109
|
+
if (!resolved) {
|
|
110
|
+
resolved = true;
|
|
111
|
+
cdpSession.off("Network.responseReceived", wrappedHandler);
|
|
112
|
+
if (latestManifestUrl) {
|
|
113
|
+
LOG.debug("native:intercept", "Manifest interception timed out after %sms. Resolving with latest URL (%s captured).", elapsed(), manifestCount);
|
|
114
|
+
resolve({ cdpSession, masterManifestUrl: latestManifestUrl });
|
|
120
115
|
}
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
116
|
+
else {
|
|
117
|
+
LOG.debug("native:intercept", "Manifest interception timed out after %sms. No master manifest captured.", elapsed());
|
|
118
|
+
removeManifestInterceptor(cdpSession);
|
|
119
|
+
resolve(null);
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
}, timeout);
|
|
123
|
+
// Finalize function exposed on the returned handle. Called by the stream setup code after channel selection is complete. The resolution strategy depends on
|
|
124
|
+
// two factors: whether a manifest has already been captured, and whether the tune is direct or guide-based.
|
|
125
|
+
//
|
|
126
|
+
// - Manifest captured + direct tune: resolve immediately (A&E, most TVE sites — manifest arrived during page load).
|
|
127
|
+
// - Manifest captured + guide tune: wait FINALIZE_SETTLE_DELAY (Fox guide, Hulu — a newer manifest from the channel switch may still arrive).
|
|
128
|
+
// - No manifest captured + either: wait FINALIZE_SETTLE_DELAY (Fox Sports — manifest fetch starts after video element appears, hasn't arrived yet).
|
|
129
|
+
const finalize = (directTune) => {
|
|
130
|
+
if (resolved) {
|
|
131
|
+
return;
|
|
132
|
+
}
|
|
133
|
+
// Helper that resolves the promise with the current state. For direct tunes, the first manifest is the correct one (loaded for the navigated URL — background
|
|
134
|
+
// prefetches for other channels may have overwritten latestManifestUrl). For guide tunes, the last manifest is correct (from the channel switch click).
|
|
135
|
+
const resolveNow = () => {
|
|
132
136
|
if (resolved) {
|
|
133
137
|
return;
|
|
134
138
|
}
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
clearTimeout(timer);
|
|
143
|
-
cdpSession.off("Network.responseReceived", wrappedHandler);
|
|
144
|
-
const selectedUrl = directTune ? firstManifestUrl : latestManifestUrl;
|
|
145
|
-
if (selectedUrl) {
|
|
146
|
-
LOG.debug("native:intercept", "Interception finalized in %sms with %s manifest(s). Using %s: %s.", elapsed(), manifestCount, directTune ? "first" : "latest", selectedUrl.slice(0, 120));
|
|
147
|
-
resolve({ cdpSession, masterManifestUrl: selectedUrl });
|
|
148
|
-
}
|
|
149
|
-
else {
|
|
150
|
-
LOG.debug("native:intercept", "Interception finalized in %sms but no master manifest was captured.", elapsed());
|
|
151
|
-
removeManifestInterceptor(cdpSession);
|
|
152
|
-
resolve(null);
|
|
153
|
-
}
|
|
154
|
-
};
|
|
155
|
-
if (directTune && firstManifestUrl) {
|
|
156
|
-
// Direct tune with manifest already captured: resolve immediately with zero delay. The first manifest arrived during page load and is the correct one.
|
|
157
|
-
resolveNow();
|
|
139
|
+
resolved = true;
|
|
140
|
+
clearTimeout(timer);
|
|
141
|
+
cdpSession.off("Network.responseReceived", wrappedHandler);
|
|
142
|
+
const selectedUrl = directTune ? firstManifestUrl : latestManifestUrl;
|
|
143
|
+
if (selectedUrl) {
|
|
144
|
+
LOG.debug("native:intercept", "Interception finalized in %sms with %s manifest(s). Using %s: %s.", elapsed(), manifestCount, directTune ? "first" : "latest", selectedUrl.slice(0, 120));
|
|
145
|
+
resolve({ cdpSession, masterManifestUrl: selectedUrl });
|
|
158
146
|
}
|
|
159
147
|
else {
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
148
|
+
LOG.debug("native:intercept", "Interception finalized in %sms but no master manifest was captured.", elapsed());
|
|
149
|
+
removeManifestInterceptor(cdpSession);
|
|
150
|
+
resolve(null);
|
|
163
151
|
}
|
|
164
152
|
};
|
|
165
|
-
|
|
153
|
+
if (directTune && firstManifestUrl) {
|
|
154
|
+
// Direct tune with manifest already captured: resolve immediately with zero delay. The first manifest arrived during page load and is the correct one.
|
|
155
|
+
resolveNow();
|
|
156
|
+
}
|
|
157
|
+
else {
|
|
158
|
+
// Either no manifest captured yet (some services fetch the manifest after the video element appears) or a guide-based tune where the channel switch
|
|
159
|
+
// may produce a newer manifest. Wait briefly for in-flight responses.
|
|
160
|
+
setTimeout(resolveNow, FINALIZE_SETTLE_DELAY);
|
|
161
|
+
}
|
|
162
|
+
};
|
|
166
163
|
return { finalize, promise };
|
|
167
164
|
}
|
|
168
165
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"intercept.js","sourceRoot":"","sources":["../../src/native/intercept.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,GAAG,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAGjE;;;;;;;;;;;;;;;;GAgBG;AAEH,gEAAgE;AAChE,MAAM,oBAAoB,GAAG,KAAK,CAAC;AAEnC,6JAA6J;AAC7J,+JAA+J;AAC/J,MAAM,qBAAqB,GAAG,IAAI,CAAC;AA4BnC;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,KAAK,UAAU,0BAA0B,CAAC,IAAU,EAAE,UAAkB,oBAAoB;IAEjG,IAAG,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC;QAEnB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,OAAO,GAAG,UAAU,EAAE,CAAC;IAE7B,IAAI,UAAsB,CAAC;IAE3B,IAAI,CAAC;QAEH,UAAU,GAAG,MAAM,IAAI,CAAC,gBAAgB,EAAE,CAAC;IAC7C,CAAC;IAAC,OAAM,KAAK,EAAE,CAAC;QAEd,GAAG,CAAC,KAAK,CAAC,kBAAkB,EAAE,mCAAmC,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QAElF,OAAO,IAAI,CAAC;IACd,CAAC;IAED,oEAAoE;IACpE,IAAI,CAAC;QAEH,MAAM,UAAU,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;IAC1C,CAAC;IAAC,OAAM,KAAK,EAAE,CAAC;QAEd,GAAG,CAAC,KAAK,CAAC,kBAAkB,EAAE,sCAAsC,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QAErF,OAAO,IAAI,CAAC;IACd,CAAC;IAED,GAAG,CAAC,KAAK,CAAC,kBAAkB,EAAE,qCAAqC,CAAC,CAAC;IAErE,mKAAmK;IACnK,gKAAgK;IAChK,uJAAuJ;IACvJ,IAAI,gBAAgB,GAAqB,IAAI,CAAC;IAC9C,IAAI,iBAAiB,GAAqB,IAAI,CAAC;IAC/C,IAAI,QAAQ,GAAG,KAAK,CAAC;IACrB,IAAI,aAAa,GAAG,CAAC,CAAC;IAEtB,
|
|
1
|
+
{"version":3,"file":"intercept.js","sourceRoot":"","sources":["../../src/native/intercept.ts"],"names":[],"mappings":"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"}
|
package/dist/native/probe.js
CHANGED
|
@@ -17,7 +17,7 @@ const FETCH_TIMEOUT = 10000;
|
|
|
17
17
|
// contain session-bound auth tokens that expire between tunes, so they must never be cached — only the stable encryption type is safe to persist across sessions.
|
|
18
18
|
// The DRM skip optimization in setup.ts uses this cache to avoid installing the CDP interceptor for channels known to use DRM.
|
|
19
19
|
const probeCache = new Map();
|
|
20
|
-
// Cache entries older than this are considered stale and re-probed. 24 hours covers the case where a
|
|
20
|
+
// Cache entries older than this are considered stale and re-probed. 24 hours covers the case where a service changes a channel's encryption profile (e.g., free →
|
|
21
21
|
// premium DRM). The DRM short-circuit in probeManifest() still applies within the TTL, so frequently-tuned DRM channels avoid repeated probe overhead.
|
|
22
22
|
const PROBE_CACHE_TTL = 24 * 60 * 60 * 1000;
|
|
23
23
|
/**
|
|
@@ -56,7 +56,7 @@ export function clearProbeCache(channelName) {
|
|
|
56
56
|
* @returns The probe result, or null if probing fails.
|
|
57
57
|
*/
|
|
58
58
|
export async function probeManifest(masterUrl, channelName) {
|
|
59
|
-
// Short-circuit for DRM channels only. The cached DRM classification is stable within the TTL window (
|
|
59
|
+
// Short-circuit for DRM channels only. The cached DRM classification is stable within the TTL window (services rarely change DRM type), and the caller returns
|
|
60
60
|
// null immediately on DRM without using any URLs. For clear/aes128 channels, we must re-probe to get fresh variant and key URLs with current auth tokens.
|
|
61
61
|
const cached = getCachedEncryption(channelName);
|
|
62
62
|
if (cached === "drm") {
|
package/dist/native/probe.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"probe.js","sourceRoot":"","sources":["../../src/native/probe.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,GAAG,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAGjE;;;;;;;GAOG;AAEH,+CAA+C;AAC/C,MAAM,aAAa,GAAG,KAAK,CAAC;AAmC5B,+JAA+J;AAC/J,kKAAkK;AAClK,+HAA+H;AAC/H,MAAM,UAAU,GAAG,IAAI,GAAG,EAA6D,CAAC;AAExF,
|
|
1
|
+
{"version":3,"file":"probe.js","sourceRoot":"","sources":["../../src/native/probe.ts"],"names":[],"mappings":"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"}
|
package/dist/native/proxy.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { type PrerollCodec } from "../streaming/preroll.js";
|
|
2
1
|
import type { CDPSession } from "puppeteer-core";
|
|
2
|
+
import type { CaptureCodec } from "../streaming/codec.js";
|
|
3
3
|
import type { Nullable } from "../types/index.js";
|
|
4
4
|
/**
|
|
5
5
|
* Options for creating a native HLS proxy.
|
|
@@ -12,7 +12,7 @@ export interface NativeProxyOptions {
|
|
|
12
12
|
keyUrl: Nullable<string>;
|
|
13
13
|
onError: (error: string) => void;
|
|
14
14
|
prefetchedKey: Nullable<Buffer>;
|
|
15
|
-
prerollCodec?:
|
|
15
|
+
prerollCodec?: CaptureCodec;
|
|
16
16
|
prerollSegmentCount?: number;
|
|
17
17
|
streamId: number;
|
|
18
18
|
streamIdStr: string;
|
package/dist/native/proxy.js
CHANGED
|
@@ -11,12 +11,12 @@ import { buildPlaylist } from "../streaming/playlistBuilder.js";
|
|
|
11
11
|
import { getStream } from "../streaming/registry.js";
|
|
12
12
|
import { removeManifestInterceptor } from "./intercept.js";
|
|
13
13
|
import { resolveUrl } from "./probe.js";
|
|
14
|
-
/* This module implements the native HLS proxy that replaces Chrome screen capture for viable streams. It polls the
|
|
14
|
+
/* This module implements the native HLS proxy that replaces Chrome screen capture for viable streams. It polls the service's variant manifest at regular intervals,
|
|
15
15
|
* detects new segments by tracking #EXT-X-MEDIA-SEQUENCE, fetches each segment (optionally decrypting AES-128), stores them in the existing HLS segment system, and
|
|
16
16
|
* generates an HLS playlist that faithfully propagates upstream metadata — discontinuity markers, program timestamps, and SCTE-35 ad signaling (cue-out, cue-in,
|
|
17
17
|
* cue-out-cont).
|
|
18
18
|
*
|
|
19
|
-
* The proxy generates its own playlist rather than rewriting the
|
|
19
|
+
* The proxy generates its own playlist rather than rewriting the service's playlist, which avoids dealing with CDN-relative URLs and service-specific quirks. However,
|
|
20
20
|
* it preserves all playback-critical tags from the upstream manifest so that downstream consumers (Channels DVR) can correctly handle PTS resets at ad boundaries,
|
|
21
21
|
* synchronize wall-clock time, and detect commercial breaks.
|
|
22
22
|
*
|
|
@@ -631,7 +631,7 @@ export function createNativeProxy(options) {
|
|
|
631
631
|
async function processManifest(body) {
|
|
632
632
|
const { mediaSequence, segments, targetDuration } = parseVariantManifest(body, video.variantUrl);
|
|
633
633
|
video.lastTargetDuration = targetDuration;
|
|
634
|
-
// Prune old entries from the fetchedSequences Set and segment metadata on each poll cycle. The
|
|
634
|
+
// Prune old entries from the fetchedSequences Set and segment metadata on each poll cycle. The service's media sequence window slides forward, so entries below
|
|
635
635
|
// the current base sequence will never be checked again. Without pruning, these structures grow unboundedly over hours of streaming.
|
|
636
636
|
for (const seq of video.fetchedSequences) {
|
|
637
637
|
if (seq < mediaSequence) {
|
|
@@ -798,7 +798,7 @@ export function createNativeProxy(options) {
|
|
|
798
798
|
* served during the standalone preroll phase, ensuring smooth MEDIA-SEQUENCE progression. For streams with separate audio, generates a master playlist referencing
|
|
799
799
|
* video.m3u8 and audio.m3u8, plus individual variant playlists for each (no preroll — preroll is muxed and can't be split into separate renditions).
|
|
800
800
|
*
|
|
801
|
-
* @param targetDuration - The #EXT-X-TARGETDURATION value from the
|
|
801
|
+
* @param targetDuration - The #EXT-X-TARGETDURATION value from the service's manifest.
|
|
802
802
|
*/
|
|
803
803
|
function generatePlaylist(targetDuration) {
|
|
804
804
|
const stream = getStream(streamId);
|