goon/app/extractors/tubes
goon-foss 5a0b62c3e4 feat(youperv): browse scraper + direct-mp4 extractor
youperv.com (DataLife Engine) carries paysite rips titled
"Studio - Performer - Title" (71% of a 132-title sample), ~60-70 new
scenes/day. Browse the homepage + /page/N/ (19 scenes/page, no overlap);
scene URL is /<category>/<id>-<slug>.html.

Cast is scoped to the fmeta block (up to the Related section): the whole
page carries 19-26 /xfsearch/pornstar/ links but only 1-2 are the actual
cast, so without scoping this would repeat the page-wide pollution that
got xxxfiles rejected. Studio comes from the title prefix, guarded so a
performer name is never mistaken for a studio. Duration, ISO release date,
per-scene tags and thumbnail all come from the same block.

Playback is a plain <source> mp4 (files.klubnichka-hd.com) with no token
or expiry, but the CDN hotlink-guards on Referer: bare Range gets 403,
Range + Referer + browser UA gets 206 cross-IP from the VPS. So the
extractor returns it with referer + mobile_direct_ok and the phone streams
straight from the CDN, no WebView and no proxy. Path is percent-encoded
because the filenames contain spaces.

Deep-crawl capped at 2000 pages: beyond that (<=09.2023) the catalog turns
into generic amateur uploads with no performers and dead CDN files.

Verified: 19 scenes/page with studio+cast+duration+date, max 2 performers
per scene (pollution guard holds), 0/19 missing duration, playback 206
video/mp4. Pilot ingest 3 pages: 57 seen, 39 attached to existing canonical
scenes, 18 new, 0 errors.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-07-26 17:57:24 +02:00
..
__init__.py Initial commit 2026-05-20 10:10:22 +02:00
_embed_iframe.py feat(jav): javflix.cc scraper + extractor (first JAV source, gated off main feed) 2026-07-10 10:58:34 +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
hqfap.py feat(hqfap): restore hqfap.com scraper + extractor (site back on new CDN) 2026-07-07 23:53:43 +02:00
hqporner.py feat(extractors): native HLS for xhamster; hqporner flyflv player 2026-06-09 09:35:58 +02:00
javflix.py feat(jav): javflix.cc scraper + extractor (first JAV source, gated off main feed) 2026-07-10 10:58:34 +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
supjav.py feat(supjav): resolve voe hoster to direct stream instead of WebView 2026-07-11 19:52:26 +02:00
sxyprn.py fix(playback): mark deleted sxyprn posts dead + rank native sources first 2026-06-07 14:09:01 +02:00
vjav.py feat(jav): vjav.com scraper + extractor (TXXX-network JAV source) 2026-07-10 13:13:35 +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
youperv.py feat(youperv): browse scraper + direct-mp4 extractor 2026-07-26 17:57:24 +02:00