fix(mobile): WebView page fallback for native-mp4 tubes that fail in ExoPlayer

Two user reports (watchporn scenes 5716e1c5 + another): "resolver fails but the scene
plays in the diagnostic browser". Verified server-side the watchporn extractor is reliable
(8/8) and returns 2 clean links; the zload remote_control.php CDN URL is a valid
range-supporting mp4 (206) that plays cross-IP and via the /proxy fallback (206). So the
failure is purely the mobile native player choking on that URL, and native-mp4-only tube
sources carried NO fallbackEmbedUrl, so there was nothing left after native+proxy.

Now: when a resolved source has direct links but no embed, use the tube page_url as the
WebView fallback. Native + proxy are still tried first; only if both fail does it load the
site page in the WebView player (phone-side, residential IP, no VPS bandwidth) which is
exactly what the diagnostic browser does and the users confirmed plays.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
goon-foss 2026-07-05 00:13:40 +02:00
parent 0c18472a15
commit 3eb57dd61d
2 changed files with 14 additions and 2 deletions

View file

@ -16,6 +16,13 @@ export type ChangelogEntry = {
}; };
export const CHANGELOG: ChangelogEntry[] = [ export const CHANGELOG: ChangelogEntry[] = [
{
id: '2026-07-05',
date: 'July 2026',
items: [
'If a video source cannot play in the built-in player, the app now falls back to the site page so it still plays (helps watchporn and similar).',
],
},
{ {
id: '2026-07-03', id: '2026-07-03',
date: 'July 2026', date: 'July 2026',

View file

@ -688,8 +688,13 @@ function PlaybackButton({
// Fallback embed do Playera — gdy ExoPlayer dostanie 403 (IP-bound CDN), apka // Fallback embed do Playera — gdy ExoPlayer dostanie 403 (IP-bound CDN), apka
// przełączy się na WebView z tym embed URL'em. Bierzemy pierwszy embed jaki // przełączy się na WebView z tym embed URL'em. Bierzemy pierwszy embed jaki
// jest, niezależnie od kolejności w `links`. // jest, niezależnie od kolejności w `links`. Gdy źródło jest natywne-mp4 bez embedu
const fallbackEmbedUrl = embedLinks[0]?.embed_url || res.best?.embed_url || undefined; // (KVS: watchporn/porn00 itd.) i mimo to native+proxy padną na telefonie (report
// watchporn: „resolver nie dziala, a scena dziala w diagnostyce"), spadamy na
// page_url w WebView — strona tube gra po stronie telefonu (residential IP, 0 VPS
// bandwidth), tak jak diagnostyczny browser. Native/proxy dalej sa probowane pierwsze.
const fallbackEmbedUrl =
embedLinks[0]?.embed_url || res.best?.embed_url || source.page_url || undefined;
const autoPick = pickAuto(directLinks); const autoPick = pickAuto(directLinks);
if (autoPick) { if (autoPick) {