|
Some checks are pending
Backend tests / test (push) Waiting to run
Second JAV vertical source (origin tube:vjav, gated to JAV tab via JAV_ORIGINS). Browse: SPA has no server-rendered listing, so id-walk over sitemap_vids (newest = highest video id) feeding the rich JSON metadata API (/api/json/video/1/<floor>/<id>/<id>.json): title, duration, post_date, channel->studio, models->performers, categories+tags. Stream: videofile.php returns video_url in two obfuscation layers, Cyrillic homoglyphs (M/C/A/E) over a custom base64 alphabet (comma->slash, tilde->pad, dash->plus). Decoded get_file is absolute (old shared-txxx videos) or relative (new vjav-infra, prepend host); adding f=video.m3u8 yields a portable, time-bound ahcdn HLS (referer=none whitelisted, not IP-bound). Returned as m3u8 + mobile_direct_ok so playback routes it through /proxy/hls: manifest passthrough, segments direct from the phone (verified 206 cross-IP, 0 VPS video bandwidth). Backend-only, no mobile change (JAV tab + jav param already shipped). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| __init__.py | ||
| _embed_iframe.py | ||
| _kvs.py | ||
| _kvs_source.py | ||
| _source_getfile.py | ||
| _vps_blocked_fallback.py | ||
| _ytdlp.py | ||
| eporner.py | ||
| freshporno.py | ||
| fullmovies.py | ||
| hdporngg.py | ||
| hqfap.py | ||
| hqporner.py | ||
| javflix.py | ||
| latestpornvideo.py | ||
| neporn.py | ||
| paradisehill.py | ||
| porn00.py | ||
| porntrex.py | ||
| pornxp.py | ||
| sxyprn.py | ||
| vjav.py | ||
| watchporn.py | ||
| xhamster.py | ||
| yespornvip.py | ||