goon/app/extractors/tubes
goon-foss 0c18472a15 fix(feedback): freeomovie posters + dead hoster + myvidplay; watchporn _embed_iframe guard
From user bug reports (8f8c10c0 freeomovie, c156e4b7/8db71220 watchporn scene):

freeomovie (app/connectors/freeomovie.py):
- Parse the detail-page poster (<img class="rmbd">); RawMovie was built with no
  poster_url, so title-only orphans (no canonical match) rendered blank cards. Re-ingest
  backfilled existing blanks 11 -> 1.
- _host_label now returns the registrable domain (parts[-2]) not the subdomain, so
  video.player4me.xyz labels as 'player4me' (was garbage 'freeomovie:video').
- Skip player4me (JS-SPA, no known resolver); pruned 28 dead freeomovie:video sources.
- myvidplay.com added to mobile DOOD_HOSTS (doodstream.ts): it 301s to playmogo.com
  (doodcdn clone), so it now routes to the native dood resolver instead of a dead WebView.

watchporn: the reported 4 duplicate/broken quality rows were the API process serving a
STALE extractor registry (never restarted after the re-enable deploy) -> _embed_iframe
scraped 2 tokenless get_file (403) + 2 preview trailers (404). The running api now serves
the native extractor (2 clean playing links, verified). Hardened _embed_iframe to skip
preview/videos_screenshots clips and tokenless get_file so this class can't recur.

Also: DonateScreen em-dashes -> commas/semicolon (no-em-dash rule).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-03 13:02:47 +02:00
..
__init__.py Initial commit 2026-05-20 10:10:22 +02:00
_embed_iframe.py fix(feedback): freeomovie posters + dead hoster + myvidplay; watchporn _embed_iframe guard 2026-07-03 13:02:47 +02:00
_kvs.py fix(porn00): backend KVS resolve (portable CDN, no proxy) — corrects #20 2026-06-05 21:15:19 +02:00
_kvs_source.py Initial commit 2026-05-20 10:10:22 +02:00
_source_getfile.py fix(hdporngg+fullmovies): native get_file, skip broken 4K — "loading forever" 2026-06-05 22:48:55 +02:00
_vps_blocked_fallback.py Initial commit 2026-05-20 10:10:22 +02:00
_ytdlp.py Initial commit 2026-05-20 10:10:22 +02:00
eporner.py Initial commit 2026-05-20 10:10:22 +02:00
freshporno.py fix(freshporno): backend KVS resolve (portable CDN) — corrects #20 2026-06-05 21:12:17 +02:00
fullmovies.py fix(hdporngg+fullmovies): native get_file, skip broken 4K — "loading forever" 2026-06-05 22:48:55 +02:00
hdporngg.py fix(hdporngg+fullmovies): native get_file, skip broken 4K — "loading forever" 2026-06-05 22:48:55 +02:00
hqporner.py feat(extractors): native HLS for xhamster; hqporner flyflv player 2026-06-09 09:35:58 +02:00
latestpornvideo.py Initial commit 2026-05-20 10:10:22 +02:00
neporn.py feat(tubes): add 4k69 + neporn browse scrapers, shared PlayTube base 2026-06-10 18:15:13 +02:00
paradisehill.py Initial commit 2026-05-20 10:10:22 +02:00
porn00.py fix(porn00): backend KVS resolve (portable CDN, no proxy) — corrects #20 2026-06-05 21:15:19 +02:00
porntrex.py feat(extractors): detect deleted porntrex videos and mark dead 2026-06-13 19:04:10 +02:00
pornxp.py Initial commit 2026-05-20 10:10:22 +02:00
sxyprn.py fix(playback): mark deleted sxyprn posts dead + rank native sources first 2026-06-07 14:09:01 +02:00
watchporn.py feat(watchporn): re-enable as KVS browse scraper + native mp4 extractor 2026-07-02 14:32:36 +02:00
xhamster.py feat(extractors): native HLS for xhamster; hqporner flyflv player 2026-06-09 09:35:58 +02:00
yespornvip.py fix(pornditt): server-side KVS resolve; extract shared _kvs helper 2026-06-01 10:36:33 +02:00