Simon 2adde22514 Fix broken-playback providers (wowxxx, porndish, noodlemagazine) and a shared 429 retry bug
- wowxxx: site migrated wow.xxx -> wowxxx.to; update BASE_URL and stop
  pinning Version::HTTP_11, which mismatched the TLS handshake's h2 ALPN
  and got scored as a bot (same root cause already fixed for jable.tv)
- porndish: recognize playmogo.com iframes as the same Doodstream-clone
  embed protocol as myvidplay.com (confirmed live) instead of falling
  through to a naive branch that pointed formats[0] at the unresolved,
  Cloudflare-protected iframe URL; kept in sync in both providers/porndish.rs
  and proxies/porndish.rs since single-provider builds can't share code
  across that boundary
- noodlemagazine: entity-decode the thumb URL pulled from a raw
  data-original="..." attribute - undecoded `&` in the query string
  was getting the CDN to 400 the request
- requester.rs: cap the previously-unbounded HTTP 429 retry loop at 3
  attempts before falling through to the existing Jina/FlareSolverr
  fallback, instead of retrying forever with no bound

Also fixes check.py: the thumbnail check never consulted the
CF-protected-host allowlist (only the page-url check did), and adds
missav.ws/surrit.com, tik.porn/image-cdn.tik.porn, vrporn.com, and
www.wowxxx.to/img.wowxxx.to to that allowlist - all four providers
already work fine through the app's real client; the checker's plain
probes (and its yt-dlp invocation, which never applies a channel's
declared ytdlpCommand impersonation flag) just can't replicate that.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01QTqf6orbHZ9rFFpVpcgzcR
2026-09-22 19:42:53 +00:00
2026-05-20 18:25:46 +00:00
2026-04-11 21:45:00 +00:00
2026-05-18 16:52:25 +00:00
2025-05-31 09:28:30 +00:00
2026-06-18 11:24:09 +00:00
2026-06-25 20:53:51 +00:00
2026-06-25 20:53:51 +00:00
2026-09-07 16:10:28 +00:00
2025-06-05 18:50:28 +00:00
2026-01-13 18:13:51 +00:00
2026-08-05 14:24:11 +00:00
2025-09-29 15:15:34 +00:00
2026-03-21 21:27:38 +00:00
2025-07-20 07:50:10 +00:00

hottub

Rust based hottub server

the following URL:

hottub.spacemoehre.de

build it yourself

Get, Build and Host the docker image:

git clone https://gitea.spacemoehre.de/simon/hottub
sudo docker build hottub
cd hottub && cargo build --release
nano docker-compose.yml # adjust compose file
sudo docker compose up -d

Verify setup, replace the url with your setup url

curl -v http://127.0.0.1

->

*   Trying 127.0.0.1:80...
* Connected to 127.0.0.1 (127.0.0.1) port 80
> GET / HTTP/1.1
> Host: 127.0.0.1:80
> User-Agent: curl/8.5.0
> Accept: */*
> 
< HTTP/1.1 302 Found
< content-length: 0
< location: hottub://source?url=127.0.0.1:80
< date: Mon, 29 Sep 2025 14:58:15 GMT
< 
* Connection #0 to host 127.0.0.1 left intact

make sure that you get a code 302 to a hottub:// url

Update via git pull

To Update (i.e. for new supported sites) do

cd /path/to/hottub && git pull && cargo build --release && sudo docker container restart hottub
Description
Rust based hottub server
Readme 11 MiB
Languages
Rust 82.8%
Swift 16.4%
Python 0.8%