Fix javtiful: parse redesigned card markup, drop per-item detail fetches

The site moved to article.video-card; the old front-video-card parser found
nothing and the unbounded detail fan-out timed out. The page URL now
resolves natively in yt-dlp, so it is returned directly.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MUYdCh2nCVsQYgJAT7gwSi
This commit is contained in:
Simon
2026-10-10 07:10:33 +00:00
parent cf9701611a
commit 5b62023d99
2 changed files with 231 additions and 333 deletions

70
docs/provider-fix-todo.md Normal file
View File

@@ -0,0 +1,70 @@
# 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 |
| [ ] | `sextb` | 0 items on feed, search and page 2 | |
| [ ] | `camsoda` | 0 items on every request | live cams, CF + Jina-only fetch (see memory) |
| [ ] | `hentaimama` | 0 items or 85-150s timeouts | |
| [ ] | `hotbunny` | 0 items; first request 78s | |
## 2. Playback: page URL not resolvable by yt-dlp / formats not playable
| | Channel | Symptom | Notes |
|---|---|---|---|
| [ ] | `thaiporntv` | page URL "Unsupported URL", no `formats` | populate formats from detail page |
| [ ] | `pornmz` | page URL "Unsupported URL", no `formats` | populate formats from detail page |
| [ ] | `coomer` | page URL "Unsupported URL"; media host CF-gated here | check whether `formats` are populated for videos |
| [ ] | `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 |
## 4. Search
| | 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).