Commit Graph

610 Commits

Author SHA1 Message Date
Simon
534ee4b5ad Add ripnsfw provider (Doodstream/Lulustream leak aggregator)
ripnsfw.com serves its entire catalogue as a published-Google-Sheet CSV
with no native pagination/search API, so the provider fetches and
parses that CSV once (cached 180s) and does feed/search/pagination/sort
in memory. Each row's Doodstream/Lulustream embed links resolve to
formats[] via the existing (previously unused) doodstream/lulustream
redirect proxies.

Also fixes check.py's follow_proxy_redirect, which used HEAD even
though these redirect-proxy routes only accept GET/POST, so it never
actually resolved the redirect; extends the CF-protected host list
(suffix matching + ripnsfw.com's client-only-SPA 404 page, dood.video,
tnmr.org) so known sandbox/CDN-IP-reputation failures are reported as
warnings instead of errors.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01QTqf6orbHZ9rFFpVpcgzcR
2026-09-18 19:22:49 +00:00
Simon
9c078f1b60 Fix eporner provider never resolving playable video formats
item.formats was always null, leaving the client to open the bare
eporner.com page URL — which the site serves as a small
restricted/preview clip with an "only available on the website"
message instead of the real video.

Reverse-engineered the site's own player flow (matches yt-dlp's
EpornerIE extractor): derive calc_hash from the page's hash via
per-chunk base36 encoding, call the site's /xhr/video/{id} JSON API,
and populate formats[] with the real direct mp4 URLs across all
available resolutions, sorted highest first.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017haiuheHbREQdnh3B5rqgc
2026-09-08 18:30:08 +00:00
Simon
9e3a680ef2 Fix hornyleak/hentaimama providers returning wrong media
hornyleak: yt-dlp's generic extractor on the detail page picked up the
site's own 728x90 banner-ad <video> tag instead of following the real
/embed/{id}/ iframe, so every item streamed an ad. Now resolve the
actual HLS master playlist via the existing embed -> hdplayer.gives
chain and ship it as an explicit format.

hentaimama: search/genre/studio results are series cards, and
resolving them only followed the *last* episode link, so a 4-episode
series only ever surfaced 1 item. Now expands every series match into
all of its episodes.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017haiuheHbREQdnh3B5rqgc
2026-09-08 16:37:58 +00:00
Simon
e50003a7ea error fixes 2026-09-08 10:44:25 +00:00
Simon
7452dd5aa3 more providers 2026-09-07 19:31:34 +00:00
Simon
dd0c6f8a91 playwright update to 0.17 2026-09-07 16:10:28 +00:00
Simon
16219e1ddf playwright update 2026-09-07 15:59:03 +00:00
Simon
86c8faca44 more providers 2026-09-07 15:25:03 +00:00
Simon
5941a6e607 upgraded wreq 2026-09-07 13:00:19 +00:00
Simon
e37563e5bc hentaihaven fixes 2026-09-07 08:57:43 +00:00
Simon
ee5e124056 fixes 2026-09-07 08:02:15 +00:00
Simon
1537836b19 include chromium 2026-08-05 14:24:11 +00:00
Simon
2b491995f2 production fix 2026-08-05 14:13:41 +00:00
Simon
361d8e785c xgroovy 2026-08-05 13:36:04 +00:00
Simon
fbc473d518 xlecx 2026-07-15 06:01:23 +00:00
Simon
3b591c1950 melonstube fix 2026-07-06 17:51:06 +00:00
Simon
94cc3d7bbb melonstube 2026-07-06 17:29:04 +00:00
Simon
b753863d30 another redgifs fix 2026-07-06 17:12:50 +00:00
Simon
4c88ceef0d redgifs fix 2026-07-06 16:39:16 +00:00
Simon
d1a05de50e ytdlp command and xgroovy 2026-07-06 16:07:54 +00:00
Simon
55d687c361 sxyprn fix? 2026-07-06 14:59:11 +00:00
Simon
1f9977062c redgifs 2026-07-06 11:51:52 +00:00
Simon
4dc1072d86 omgxxx fix 2026-06-30 20:42:48 +00:00
Simon
83e433d09b supjav fix 2026-06-27 19:28:14 +00:00
Simon
bf8d1c9f9e tnaflix fix 2026-06-27 07:18:20 +00:00
Simon
9caa5f7c01 fix jable: FlaresolverrCookie missing fields + requester transport-error fallback
Three bugs prevented jable.tv from returning items:

1. FlaresolverrCookie deserialization (root cause): fields like `expires`,
   `size`, `priority`, `sameParty`, `sourceScheme`, `sourcePort` are
   omitted by FlareSolverr for session cookies, causing serde to fail with
   "missing field" and the entire solve to return Err. Added #[serde(default)]
   to all non-essential cookie fields.

2. Transport-error branch in get_with_headers: when direct fetch fails with
   a transport error and Jina returns a CF challenge body, the old code
   returned Ok(challenge_html) instead of falling through to FlareSolverr.
   Now checks looks_like_cloudflare_challenge and breaks to FS.

3. Post-FlareSolverr retry: wreq's Firefox136 TLS fingerprint causes CF to
   drop the connection even with FS cookies applied, so request.send()
   returns Err. Was propagated with `?`; now catches and returns
   res.solution.response (the headless-browser body) directly.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-26 20:43:56 +00:00
Simon
03c4e4d3c4 paradisehill fixes 2026-06-26 16:55:24 +00:00
Simon
9571c7031a sxyporn cdn racing 2026-06-26 15:46:15 +00:00
Simon
3c69382d5c javtiful fix 2026-06-26 12:33:53 +00:00
Simon
82d22e99f7 sxyprn update (no formats) 2026-06-25 20:53:51 +00:00
Simon
e4a84f34ee added playbackMethod to videoitem 2026-06-25 05:33:11 +00:00
Simon
6d5771a038 add hotbunny provider + fix domain cookie scoping in requester
New channel: hotbunny (AI-generated hentai, hotbunny.ai JSON API).
Includes thumbnail proxy (/proxy/hotbunny-thumb/) since assets.hotbunny.ai
is CF bot-managed. check.py updated to treat CF-protected format URLs as
warnings rather than errors.

requester.rs: store_response_cookies now honours the Domain attribute in
Set-Cookie headers — cookies scoped to .domain.com are registered against
the parent domain so the wreq Jar returns them for sub.domain.com requests
automatically, without per-provider workarounds.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-24 18:40:57 +00:00
Simon
8373d49593 sxyprn includes referer on post sites 2026-06-24 18:10:44 +00:00
Simon
94e9603fe5 add kwiky provider
kwiky.com (ICF/StreamMate platform) short-form cam clips. Two-step API
(ID list → metadata batch), XSRF token auth cached with double-checked
RwLock, direct MP4 formats from media.icfcdn.com, 48 curated tags via
keywordSearch.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-24 15:43:45 +00:00
Simon
b7ebb0d768 fixed a bug in requester 2026-06-23 19:17:16 +00:00
Simon
228fdf7a21 perverzija fixed 2026-06-23 11:31:16 +00:00
Simon
4dcdf5e8d1 xfree frontpage 2026-06-23 10:47:30 +00:00
Simon
0402e5ac76 ensure proxy urls have a host in front and not simple "/" path 2026-06-23 06:33:03 +00:00
Simon
614361f0f3 animeidhentai fixed 2026-06-23 06:07:36 +00:00
Simon
0a1bc6b727 xxxtik 2026-06-23 05:45:08 +00:00
Simon
da51d6a910 hentai 2026-06-22 18:54:59 +00:00
Simon
342c7dc098 camsoda update 2026-06-22 13:22:37 +00:00
Simon
570a77c90b hourly cleanup 2026-06-21 11:39:38 +00:00
Simon
6d18397c51 camsoda 2026-06-21 11:21:56 +00:00
Simon
ff680964cf porn4fans fix 2026-06-20 12:03:23 +00:00
Simon
d21c36e585 fyptt search fix
Bare keyword queries no longer hijack to a category archive when the
query matches a category name (sexy/ass/tiktok/...); only an explicit
cat:/category: prefix or the categories filter routes to an archive.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-19 21:47:21 +00:00
Simon
1bd06db894 fyptt 2026-06-19 08:25:33 +00:00
Simon
674ea99b0d fikffap 2026-06-19 06:07:50 +00:00
Simon
1a1a05941c fikfap 2026-06-18 13:49:08 +00:00
Simon
25ea03d696 hentaihaven 2026-06-18 11:24:09 +00:00