Files
hottub/docs/provider-fix-todo.md
Simon a20a4ab642 Fix coomer: offset pagination, per-query cache key, video-only posts
The API ignores page= (every page 2+ repeated page 1), searches shared a
single cache entry, image-only posts were listed as unplayable videos, and
gzip/br bodies were not decoded because wreq had no decompression features.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MUYdCh2nCVsQYgJAT7gwSi
2026-10-10 08:04:00 +00:00

5.1 KiB

Provider fix todo

Source: check.py + search probe audit, 2026-10-10. Serial re-run of every flagged channel, so timeouts below are not load artifacts. Update the status column as each item is fixed and verified (HOT_TUB_PROVIDER=<id> build, /api/videos feed + search + page 2, yt-dlp on video.url or formats[0].url, python3 check.py <id>).

Status: [ ] open, [~] in progress, [x] fixed and verified, [-] not reproducible / not a provider bug (reason noted).

1. Channels returning no items

Channel Symptom Notes
[x] javtiful feed times out (150s) then 0 items; search 0 site redesign (article.video-card); rewrote parser, page URL as video.url (yt-dlp-native), no per-item detail fetches. 23 items, p2/search OK
[x] sextb 0 items on feed, search and page 2 Jina mirror now 403/429; site is plain HTML reachable with the emulating client. Rewrote listing/detail/option parsers for HTML, removed mirror. Remaining check.py errors are tooling items (proxy URL policy; imggle.net thumbs are TLS-gated for requests)
[-] camsoda 0 items on every request not a provider bug here: www.camsoda.com is DNS-sinkholed by this host's resolver (0.0.0.0; public resolvers return 74.122.168.1), local FlareSolverr gets ERR_CONNECTION_REFUSED, Jina is 403/429, and Cloudflare serves a managed challenge to non-browser clients. Needs the production network to verify.
[-] hentaimama 0 items or 85-150s timeouts not fixable in code from this host: site now serves a Cloudflare managed challenge (cf-mitigated: challenge) on every path; browser-TLS impersonation gets 403 and the local FlareSolverr (:8191, process outside this sandbox) hangs even on a non-CF page (javtiful, 60s). Latency is the requester waiting on FlareSolverr. Needs a healthy FlareSolverr to verify.
[-] hotbunny 0 items; first request 78s same cause: hotbunny.ai (including /api/post/*) now answers a Cloudflare managed challenge; previously the JSON API was reachable directly. Needs a healthy FlareSolverr.

2. Playback: page URL not resolvable by yt-dlp / formats not playable

Channel Symptom Notes
[x] thaiporntv page URL "Unsupported URL", no formats player attribute renamed data-enc -> data-video-sources (reversed base64 JSON {quality,url}); decoder handles both. 3 formats/item, yt-dlp OK, check.py passes
[x] pornmz page URL "Unsupported URL", no formats site changed itemprop="contentURL" -> contentUrl; selector now case-insensitive. Enrichment concurrency 10 + 25s per-item timeout. Origin is slow (15s+/detail) so first feed 25-50s. check.py passes
[x] coomer page URL "Unsupported URL"; media host CF-gated here image-only posts were listed as videos with no playable URL: now dropped, and a video in attachments is picked up. Also fixed: page= is ignored by the API (every page 2+ was a copy of page 1; now o= offset), search results shared one cache key, and compressed API bodies were not decoded (enabled wreq gzip/br/deflate/zstd). n*.coomer.st CDN connect-times-out from this host, and the API 429s this IP after bursts, so playback/"girl" search could not be verified end to end
[ ] tube8 page URL 404; /proxy/tube8/{id} 502
[ ] hypnotube page URLs 404 on all sampled items URL construction
[ ] fullpornerorg lulustream proxy 403 / 502
[ ] ripnsfw doodstream format 502
[ ] freepornvideosxxx yt-dlp 502 on page URL may be transient, verify
[ ] hdporn92 m3u8 formats time out (curl + yt-dlp) morencius.com streams

3. Thumbnails

Channel Symptom Notes
[ ] xxdbx malformed thumbs https:/7004….jpg built as "https:" + src
[ ] ph-shorties thumbs return 403
[ ] noodlemagazine thumbs unreachable (-1 / 400) in check.py thumb proxy
Channel Symptom Notes
[ ] fapello "girl" and "milf" both 0
[ ] chaturbate "girl" and "milf" both 0
[ ] cumlouder unknown tag takes 146s before returning 0 own provider, retry path on 404
[ ] vjav "girl" 0, "milf" 10 may be term-specific
[ ] xxxtik "girl" 0 (not re-run serially)
[ ] hypnotube "milf" 0, "girl" 20 may be term-specific

5. Slow channels

Channel Symptom Notes
[ ] aps 30-98s per request; check.py 30s timeout
[ ] hdporn92 feed about 66s per request shares item with section 2
[ ] porndish 14-23s feed/search

6. Tooling

Item Notes
[ ] check.py "url points to hottub server" contradicts the hottub skill (proxy-needing videos use the proxy as item.url). Affects spankbang, hqporner, pornhd3x, pimpbunny, sxyprn, noodlemagazine. Decide: exempt proxy URLs that resolve, rather than hard-fail.

Environmental / needs the production IP (not worked here)

porndish, supjav, jable, fapello, missav, wowxxx, hentaihaven return Cloudflare 403 to yt-dlp/curl from this machine while the server itself returns items. hsex returned 429 (rate limit).