Route puppeteer debug logs to stderr

This commit is contained in:
Salastil
2025-11-22 22:22:55 -05:00
parent ffe4f3cc0d
commit 5a8fd6c328

View File

@@ -219,6 +219,7 @@ try {
const embedURL = process.argv[2]; const embedURL = process.argv[2];
const timeoutMs = 45000; const timeoutMs = 45000;
const log = (...args) => console.error(...args);
if (!embedURL) { if (!embedURL) {
console.error('missing embed URL'); console.error('missing embed URL');
@@ -252,7 +253,7 @@ function installTouchAndWindowSpoofing(page) {
(async () => { (async () => {
const { browser, flavor } = await launchBrowser(); const { browser, flavor } = await launchBrowser();
console.log('[puppeteer] launched ' + flavor + ' (headless new)'); log('[puppeteer] launched ' + flavor + ' (headless new)');
const page = await browser.newPage(); const page = await browser.newPage();
await installTouchAndWindowSpoofing(page); await installTouchAndWindowSpoofing(page);
@@ -299,7 +300,7 @@ function installTouchAndWindowSpoofing(page) {
try { try {
body = await res.text(); body = await res.text();
} catch (err) { } catch (err) {
console.log('[puppeteer] failed to read m3u8 body for ' + url + ': ' + err.message); log('[puppeteer] failed to read m3u8 body for ' + url + ': ' + err.message);
} }
const hasExtinf = body && body.includes('#EXTINF'); const hasExtinf = body && body.includes('#EXTINF');
@@ -315,7 +316,7 @@ function installTouchAndWindowSpoofing(page) {
if (!captured || hasExtinf) { if (!captured || hasExtinf) {
captured = { url: finalUrl, headers, hasExtinf }; captured = { url: finalUrl, headers, hasExtinf };
console.log('[puppeteer] captured .m3u8 (' + reason + '): ' + finalUrl); log('[puppeteer] captured .m3u8 (' + reason + '): ' + finalUrl);
if (resolveCapture) resolveCapture(); if (resolveCapture) resolveCapture();
} }
} }
@@ -326,9 +327,9 @@ function installTouchAndWindowSpoofing(page) {
}); });
try { try {
console.log('[puppeteer] navigating to ' + embedURL); log('[puppeteer] navigating to ' + embedURL);
await page.goto(embedURL, { waitUntil: 'networkidle2', timeout: timeoutMs }); await page.goto(embedURL, { waitUntil: 'networkidle2', timeout: timeoutMs });
console.log('[puppeteer] primary navigation reached networkidle2'); log('[puppeteer] primary navigation reached networkidle2');
} catch (err) { } catch (err) {
console.error('[puppeteer] navigation warning: ' + err.message); console.error('[puppeteer] navigation warning: ' + err.message);
} }
@@ -339,7 +340,7 @@ function installTouchAndWindowSpoofing(page) {
]); ]);
if (!captured) { if (!captured) {
console.log('[puppeteer] no .m3u8 request observed, scanning DOM for fallback'); log('[puppeteer] no .m3u8 request observed, scanning DOM for fallback');
const candidate = await page.evaluate(() => { const candidate = await page.evaluate(() => {
try { try {
const video = document.querySelector('video'); const video = document.querySelector('video');
@@ -363,7 +364,7 @@ function installTouchAndWindowSpoofing(page) {
if (captured) { if (captured) {
// Enrich headers with cookies and referer if missing. // Enrich headers with cookies and referer if missing.
const cookies = await page.cookies(); const cookies = await page.cookies();
console.log('[puppeteer] collected ' + cookies.length + ' cookies during session'); log('[puppeteer] collected ' + cookies.length + ' cookies during session');
if (cookies && cookies.length > 0) { if (cookies && cookies.length > 0) {
const cookieHeader = cookies.map(c => c.name + '=' + c.value).join('; '); const cookieHeader = cookies.map(c => c.name + '=' + c.value).join('; ');
if (!captured.headers) captured.headers = {}; if (!captured.headers) captured.headers = {};