Files
hottub/docs/query-resolution-todo.md

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