openvibers/openvibe.live Commits

Media requests: report the yt-dlp-missing failure as itself

OP OpenVibers committed 19 Aug 2026 · 55644888f5 · 2 files, +2 −2

'yt-dlp is not available' contains 'not available', so the unavailable-video
branch matched first and told the viewer their video was unavailable when the
real problem was server-side.

Co-Authored-By: Claude Opus 5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01Xw6Sf5zzSALw8m93XNu5JE

Changes

ddiff --git a/public/js/app.js b/public/js/app.js
iindex 2434bbe8..a8663b68 100644
---- a/public/js/app.js
++++ b/public/js/app.js
@@@ -5101,12 +5101,12 @@ function _mediaItemHTML(m, pos) {
// yt-dlp errors are paragraphs; the queue only has room for the part that matters.
function _mediaShortError(err) {
const m = String(err || '').toLowerCase();
++ if (m.includes('yt-dlp is not available')) return 'The server cannot play media right now.';
if (m.includes('bot')) return 'YouTube blocked this on the server (sign-in check).';
if (m.includes('private')) return 'This video is private.';
if (m.includes('members-only')) return 'This video is members-only.';
if (m.includes('age')) return 'This video is age-restricted.';
if (m.includes('unavailable') || m.includes('not available')) return 'This video is unavailable.';
-- if (m.includes('yt-dlp is not available')) return 'The server cannot play media right now.';
return 'This media could not be prepared.';
}
ddiff --git a/server/media/media-queue.js b/server/media/media-queue.js
iindex bd1f91bb..15831c3b 100644
---- a/server/media/media-queue.js
++++ b/server/media/media-queue.js
@@@ -278,12 +278,12 @@ class MediaQueue {
/** Turn a yt-dlp wall of text into one line a viewer can act on. */
_viewerFacingError(message) {
const m = String(message || '').toLowerCase();
++ if (m.includes('yt-dlp is not available')) return 'The server cannot play media right now. Refunded.';
if (m.includes('bot')) return 'YouTube blocked this video on the server (sign-in check). Refunded.';
if (m.includes('private')) return 'That video is private. Refunded.';
if (m.includes('members-only')) return 'That video is members-only. Refunded.';
if (m.includes('age')) return 'That video is age-restricted. Refunded.';
if (m.includes('unavailable') || m.includes('not available')) return 'That video is unavailable. Refunded.';
-- if (m.includes('yt-dlp is not available')) return 'The server cannot play media right now. Refunded.';
return 'That media could not be played. Refunded.';
}