Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01MUYdCh2nCVsQYgJAT7gwSi
4.9 KiB
Seamless query resolution todo
Goal: a free-form query ("gal ritchie", "family strokes") should reach the matching
pornstar / studio / channel / tag archive without a pornstar: / studio: / tag: prefix,
by asking the site (probe) and falling back to keyword search. Prefixes stay as explicit overrides.
Pattern (see hooporn, cumlouder): after known-category matching, probe page 1 of each entity
archive for the slug with Requester::get_probe (404 = instant None, Cloudflare challenge goes to
FlareSolverr, 5xx/429 retried once), use the first archive that yields cards (page N stays in that
archive), else keyword search. A probe is only valid after checking what the site answers for an
unknown slug (404 vs soft-404 that lists unrelated videos).
Status: [ ] open, [x] done and verified live (feed of the archive + unknown name falls back),
[-] not applicable (reason).
| Provider | Prefix kinds today | Plan / evidence | |
|---|---|---|---|
| [x] | hooporn |
cat, pornstar, studio | reference implementation |
| [x] | cumlouder |
cat, tag, series, girl | reference implementation (girl page, then tag) |
| [x] | fullporner |
cat, pornstar | probes /pornstar/{slug} (unknown = 404 with a suggestion grid, so status decides); pornstar: slug now dashed |
| [x] | fullpornerorg |
pornstar | probes /videos/pornstar/{slug}/ (404 for unknown) |
| [x] | tube8 |
tag, cat, channel, pornstar | probes pornstar then channel |
| [x] | youporn |
tag, channel, pornstar, amateur | probes pornstar, channel, amateur (plus existing background shortcut map) |
| [x] | porn4fans |
tag, cat, model | probes /models/{slug}/ then /tags/{slug}/ (both 404 when unknown) |
| [x] | xvideos |
tag, cat, uploader/channel/profile | probes /channels/{slug}/videos/new/0 (JSON; pornstar profiles redirect there). Also fixed: the old channel:/uploader: prefix returned nothing (landing page cards are /prof-video-click/ links); channels are now read from the JSON video list |
| [x] | xhamster |
cat, channel | added Pornstar target; probes pornstar then channel |
| [x] | xgroovy |
cat, pornstar, channel | probes pornstar then channel |
| [x] | thepornbunny |
tag, cat, studio, pornstar | probes pornstar, studio, tag (unknown slugs redirect home: get_probe now treats a redirect to another path as a miss) |
| [x] | pornhub |
channel, pornstar, model, user | background catalogs already matched listed names; unknown names are probed (pornstar, model, channels) and cached in tag_map (misses remembered) |
| [x] | clapdat |
tag, user | probes tag then user |
| [x] | fikfap |
tag, user | single-word query that is an existing profile (profile endpoint) goes to its posts, empty profile falls back to search |
| [x] | erome |
uploader, user | single-word query that is an existing /{name} with albums goes to the uploader |
| [x] | redgifs |
tag, user | single-word query that is an existing creator (users endpoint) goes to the creator, empty falls back |
| [x] | sextb |
(catalog matched) | catalog (actress/studio/genre) match first, then probes /actress/{slug} and /studio/{slug} for names outside the catalog |
| [x] | coomer |
u:, @service:user | single-word query that is an existing creator id (/api/v1/{service}/user/{id}/profile) goes to the creator. Also fixed: creator feeds are a bare JSON array, which the parser rejected (every creator feed was empty) |
| [-] | ripnsfw, hsex, omgxxx, eporner, borntobefuck, archivebate |
various | already seamless: bare names match background-loaded creator / studio / tag catalogs (or the whole catalog is filtered client-side) |
| [-] | perfectgirls, okxxx, pornhat, perverzija, porntrex |
sites/models/stars | bare names already resolve through the background-loaded tag_map; these clones build their own wreq client with no ServerOptions, so a live probe needs a separate refactor onto the shared requester |
| [-] | homoxxx |
models, pornstars, channels, categories, tags | legacy provider (own client, unpaginated archives, no /models/ index on the site); not worth a probe until it is rewritten |
| [-] | kwiky, animeidhentai, hentaitv, xnxx, blowjobspro, txxx |
tag/cat | search already is the entity lookup, or the site has no pornstar/studio archives to probe (txxx: the API rejects models/channels sections) |
| [-] | fyptt |
cat | by design: bare category words are common search terms and must not be hijacked |
| [-] | notfans |
tag, category | tag URLs are hashed ids, so an unknown name cannot be probed; search covers it |
| [-] | allpornstream, jable, wowxxx, hornyleak, hotbunny, hentaimama, tikporn, camsoda |
actor/producer, model, studio, ... | Cloudflare-gated or down from this host (403/522, FlareSolverr wedged), so a probe cannot be verified here; each would add one or two FlareSolverr solves per search. Candidates for the same pattern once checked from the production network |