Some checks are pending
Backend tests / test (push) Waiting to run
First site of the JAV vertical (user request, separate section). javflix.cc is a WordPress JAV aggregator, VPS-reachable and server-rendered. Scraper parses itemprop metadata (title, thumbnail, uploadDate; no duration) and the JAV code (BKD-368 style) as a tag. Playback: server buttons are <a class="myLink" href="<embed>"> (streamtape, voe, doodstream, emturbovid) whose href sits in the raw HTML; the generic _embed_iframe extractor already resolves those via its anchor-hoster pattern, so javflix registers under sitetag "javflix" with a thin wrapper that drops the players.mp4 placeholder. Added emturbovid to the anchor-hoster host list. Verified end-to-end on prod: scrape a listing -> RawScene with metadata + code tag, resolve -> emturbovid/voe/doodstream hoster sources (all Goon-playable). NOT registered in ALL_BROWSE_SCRAPERS yet. JAV is a separate vertical (user decision) that must be gated out of the main scenes feed before ingest so it does not flood the western catalog. Next: feed gating (exclude JAV origins by default) + a mobile JAV tab + on-device playback test, then enable scheduled ingest. jav.guru / vjav / supjav follow the same pattern. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
19 lines
779 B
Python
19 lines
779 B
Python
"""javflix.cc extractor — cienki wrapper na generyczny _embed_iframe.
|
|
|
|
javflix trzyma hostery w `<a class="myLink" href="<embed>">` (streamtape/voe/doodstream/
|
|
emturbovid), które _embed_iframe łapie anchor-hoster patternem. Wrapper odsiewa tylko
|
|
placeholder `players.mp4` (pusty iframe zanim JS podmieni src) — bez tego trafiał jako
|
|
martwe pierwsze źródło type='mp4'.
|
|
"""
|
|
from __future__ import annotations
|
|
|
|
from app.extractors._models import StreamSource
|
|
from app.extractors.tubes import _embed_iframe
|
|
|
|
|
|
def extract(page_url: str, *, timeout: float = 60.0) -> list[StreamSource] | None:
|
|
srcs = _embed_iframe.extract(page_url, timeout=timeout)
|
|
if not srcs:
|
|
return None
|
|
srcs = [s for s in srcs if "players.mp4" not in s.link]
|
|
return srcs or None
|