From c849c4c8be39ef01084eb4f2fbc36682b6bce727 Mon Sep 17 00:00:00 2001 From: goon-foss Date: Thu, 6 Aug 2026 08:50:05 +0200 Subject: [PATCH] fix(doply/dood): wykrywaj usuniete wideo (fraza sie nie zgadzala) Zgloszenie b52470be ('Doply resolver chyba padl', err 'Source error None of the'). Diagnoza: protokol dziala (doply -> playmogo, pass_md5 obecny, CDN oddaje 206 video/mp4), ale strona jawnie mowi '

Not Found

video you are looking for is not found' - wideo jest USUNIETE. Detekcja szukala doslownej frazy 'video not found', ktora w tym wariancie NIE pada, wiec resolver uznawal usuniete wideo za sukces. Playmogo mimo usuniecia dalej wystawia token pass_md5 i serwuje plik-zaslepke, stad u usera 'Source error' zamiast czytelnego komunikatu. Rozszerzone markery: 'is not found', 'no_video_' (obrazek-zaslepka i.doodcdn.io/img/no_video_3.svg - najpewniejszy), 'video has been deleted', 'file was deleted'. Blad 'video_deleted' jest NIEretryowalny, wiec apka od razu pokaze komunikat i pozwoli oznaczyc zrodlo jako martwe. --- mobile/src/lib/doodstream.ts | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/mobile/src/lib/doodstream.ts b/mobile/src/lib/doodstream.ts index cf87dbc..9888486 100644 --- a/mobile/src/lib/doodstream.ts +++ b/mobile/src/lib/doodstream.ts @@ -168,7 +168,20 @@ async function _continueAfterFetch( referer: string, ): Promise { - if (html.toLowerCase().includes('video not found')) { + // Usunięte wideo. UWAGA: sam wariant 'video not found' NIE wystarcza — playmogo/doply + // renderuje "

Not Found

video you are looking for is not found" (zgłoszenie + // b52470be), więc dokładna fraza nie pada. Co gorsza strona MIMO TO wystawia token + // pass_md5, a CDN oddaje jakiś plik, więc bez tej detekcji resolver uznaje usunięte + // wideo za sukces i user dostaje placeholder albo "Source error" z ExoPlayera. + // `no_video_` to obrazek-zaślepka (i.doodcdn.io/img/no_video_3.svg) — najpewniejszy marker. + const _low = html.toLowerCase(); + if ( + _low.includes('video not found') || + _low.includes('is not found') || + _low.includes('no_video_') || + _low.includes('video has been deleted') || + _low.includes('file was deleted') + ) { return { error: 'video_deleted' }; }