- hqfap + 4k69: both ingested fresh but playback is dead (hqfap serves a fixed
~3MB "server down" stub for every scene; 4k69 resolves no playable URL).
Removed from ALL_BROWSE_SCRAPERS so no new dead sources get ingested; existing
live playback_sources marked dead in prod (scenes drop out of has_playback /
Sites). Extractors kept in registry for easy re-enable if the hosts recover.
- latestpornvideo: was a performer-search scraper, so it never picked up the
site's "latest" feed — users saw a stale set. Converted to a browse scraper
reading /page/N/ (studio+date from title/thumb, category tags; performers via
canonical merge). Moved DIRECT → BROWSE list.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Old regex matched junk (/wp-json etc.), not scenes (scenes are /<post_id>/).
Frozen since 06-13. Rewrote search() to scrape the /actor/<slug>/ listing
and parse <article> cards: scene URL, title, performers + tags from the
class (actors-*/tag-*/category-*, dropping performer-name fragment tags),
thumbnail. Studio + release date parsed from the "<Studio>-YYYY-MM-DD"
thumbnail filename, with a title-prefix "<Studio> YY MM DD" fallback.
Multi-performer works; no duration in listing; playback unchanged (hoster).
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Goon — self-hosted aggregator for adult-content scene metadata.
Indexes scenes from TPDB, StashDB, and 30+ public adult tube sites.
Cross-source deduplication via perceptual hash + Levenshtein distance.
FastAPI backend + APScheduler worker + React Native (Expo) mobile client.
FOSS, ad-free, donation-funded. See README for details.