💖 Like the privacy work? You can support the maintainer's time on audits, reviews and documentation via GitHub Sponsors → github.com/sponsors/FieteGM — sponsorship pays for the audit work, not for operational use of the bot (see
LICENSE).
Strict disclaimer. I do not support, endorse, or encourage the use of this script. It is published for educational review only. Do not use it to access or automate any streaming platform. If you choose to inspect the code, do so responsibly and in compliance with all applicable laws and terms of service. By continuing, you acknowledge that you will not use this script operationally.
The license header (
LICENSE) and the educational-use notice that precedes it both apply -- the notice is not optional flavour text.
🌍 Languages: You can find the German (Deutsch ↓) version further down.
Privacy-hardened binge-watching tool for Serien Junkie, AniWorld and FilmPalast (films). Watch any season, film or anime hands-free. Autoplay next episodes, pick up exactly where you left off, auto-skip intros and outros, create a private stream — open it on your phone via QR scan or share the URL to any device in your home. Serien Junkie, AniWorld and FilmPalast — ad-free, private, no account, no install. Unzip the repository and binge out of the box, locally and securely only on your PC.
→ Quick Start — up and running in two clicks.
Want a deeper look at one specific aspect (privacy stack, optional Windows hardening, Tor bridges)?
See the docs/ index. Want to read or change the code?
Start with CONTRIBUTING.md.
- Windows 10 (1803+) or 11 (64-bit). Linux / macOS aren't supported
out of the box — the bundled Tor, geckodriver, FFmpeg, and embedded
Python are Windows binaries. The 1803 cutoff is because the Firefox
auto-download uses Windows' built-in
tar.exe(libarchive), which shipped in that update. - ~300 MB free disk space for the repo (embedded Python + Tor +
the rest). Two optional auto-downloads add disk if you use the
features:
- Firefox (~85 MB) into
runtime/firefox/if the bot can't find an existing install — happens on first launch. - FFmpeg (~80 MB) into
runtime/ffmpeg/if and only if you use the phone-streaming feature ("auf Handy") — fetched on demand from gyan.dev, not at startup.
- Firefox (~85 MB) into
- ~500 MB RAM during HD playback.
- Internet access for streaming via Tor. The Tor SOCKS port is
127.0.0.1:9050— no other ports are required from your network. - Firefox is optional at install time. If it's already on the PC
(system install, Scoop, Chocolatey, portable), the bot finds and
reuses it. If not, the launcher offers to download a portable copy
into
runtime/firefox/-- no system install, no registry writes, no Start Menu shortcuts. Delete the repo and Firefox is gone too.
git clonethe repo (one-time, ~400 MB).- Double-click
start_watching.bat.
That's it. The launcher will:
- Use the bundled Python runtime (no
pip installneeded). - Start the bundled Tor and wait until the SOCKS port answers. Tor is always on — no Tor = no bot, by design.
- On the very first start, run a brief OS-hardening audit
(informational, doesn't block; subsequent starts skip it
silently — opt back into every-start via
BW_OS_AUDIT_EVERY_START=1in.env). - Check for Firefox. If none is found, ask whether to download a
portable copy into
runtime/firefox/(~85 MB, zero-pollution). - Launch Firefox with a hardened profile and open the dashboard.
The first time you click "auf Handy" (phone-streaming), the
bot also auto-downloads FFmpeg (~80 MB) into runtime/ffmpeg/.
You can also pre-install it: python -m bw.ffmpeg_download install.
Same zero-pollution rule — delete the repo, FFmpeg goes with it.
If you want to use Serien Junkie, see the Serien Junkie + Kaspersky note further down.
The sidebar appears on the left as soon as Firefox loads a provider page. Everything you need is here.
| Control | What it does |
|---|---|
| Search | Fuzzy-search across all tracked series. Match highlights inline. |
| Sort dropdown | "Last watched", name, progress, rating, date added. |
| Provider switch (SerienJunkie / AniWorld / FilmPalast at the bottom) | Switches between Serien Junkie, AniWorld and Film Palast. |
| ⚙ Settings | Opens the settings modal. |
| ⏭ Skip | Skips the currently playing episode and advances to the next. |
| ⏻ Quit | Graceful shutdown — saves state, closes Firefox, stops Tor. |
- Each row shows the series title (and the real title once metadata is fetched) plus a ▶ Playing badge when active.
- Hover any row for per-row actions: resume, pin, delete.
- Delete shows a 5-second undo toast before committing.
- The right edge is drag-resizable; the width persists.
- Resume prompt when you re-open a series with saved progress.
- Per-series settings cog lets you set the intro skip window and the end-screen skip window for that series.
| Key | Action |
|---|---|
F |
Toggle fullscreen |
S |
Skip intro now |
E |
Skip end / advance to next episode |
N / P |
Next / previous episode |
/ |
Focus the search field |
, |
Open settings modal |
? |
Show the full shortcut overlay |
Esc |
Close any open overlay |
Space |
Play / pause (in the video) |
← / → |
Seek -10 s / +10 s (in the video) |
↑ / ↓ |
Volume up / down (in the video) |
Six sections. Changes take effect immediately unless noted otherwise.
- Auto-Fullscreen — enter fullscreen as soon as a video starts
- Skip intro — auto-skip the intro window (per-series window is set on each series' settings cog)
- Skip end screen — auto-skip the credits / end card
- Autoplay next episode — seamless binge mode when combined with the skip toggles above
- Playback Speed — 0.75× / 1× / 1.25× / 1.5× / 1.75× / 2×
- Volume — 0–100% slider
- Startseite — AniWorld, SerienJunkie or FilmPalast (which provider opens on launch)
- Episoden-Ende Countdown — "Next episode in 5 s" overlay
- Auto-Pause bei Tab-Wechsel — pause when you switch tabs
- Watch-Time tracken — aggregate watch time for the Stats heatmap
- Reduced motion — turn off sidebar animations
These take effect on next bot start.
- Fresh Firefox-Profil pro Session — new temp profile every launch, wiped on exit (you'll see the CAPTCHA every time, cookies don't persist)
- Forensik-Hygiene — where state files live: Off (normal disk),
RAM (
%TEMP%, wiped on exit), or Stash (custom directory) - Sync-Back beim Exit — RAM mode only: copy state back to disk on clean quit
- Tor Traffic-Decoy — background Tor decoy traffic to mask bot-activity timing (costs bandwidth)
- Watch-Time Stats & Heatmap — per-series time totals + weekly heatmap
- Diagnose-Bundle exportieren — creates a zip with sanitised state
- log tail for bug reports
Floats above the video; hides when the cursor is idle.
| Button | What it does |
|---|---|
| 10 s zurück / Play / Pause / 10 s vor | Standard player controls |
| Mute / Volume | Hover the volume button for the slider |
| Time | Current / total runtime |
| Seek bar | Click or drag |
| ⏭ Skip episode | Same as the sidebar's ⏭ |
| ⚙ Cog | In-player settings menu |
| ⛶ Fullscreen | Toggle fullscreen |
- Speed pills — applies immediately
- Sleep Timer — Off / 1 episode / 30 min / 1 h / 2 h
- Skip Intro, Skip End Screen, Autoplay Next, Auto-Fullscreen, Pause bei Tab-Wechsel — same as the dashboard, reachable mid-episode
- PiP bei Tab-Wechsel — when you switch tabs, request Picture-in-Picture so the episode keeps playing in a floating window instead of pausing
- Loop Episode — replay endlessly (local toggle, doesn't persist)
- Skip pill (bottom-left during intro) — click to skip now, or
press
S. Also offers "Intro markieren" mode for episodes where the intro window isn't set - End countdown (bottom-right near episode end) — cancel keeps the current episode playing
- Up next — pre-roll for the next episode in autoplay mode
If you have Kaspersky and Serien Junkie gives you a white screen that never loads, that's Kaspersky's "Encrypted Connection Scanning" MITM-ing the HTTPS handshake — our Firefox doesn't have Kaspersky's root CA in its profile, so the handshake fails silently.
Fix: Kaspersky → Settings → Threats & Exclusions → Manage
exclusions → Trusted applications → add
C:\Program Files\Mozilla Firefox\firefox.exe → tick "Do not
scan encrypted traffic." AniWorld + hosters are not affected (their
traffic goes through Tor, which Kaspersky can't intercept).
The bot shows a one-time popup with this info the first time you switch to Serien Junkie.
Three ways, any of them safe:
- Click the ⏻ Quit button in the dashboard sidebar.
- Press Ctrl+C in the launcher console window.
- Close the launcher console window.
In all three cases progress + state are atomically saved before exit (unless you're in RAM mode without sync-back).
port 9050 was not opened— Tor failed to bootstrap. The most common cause is a previoustor.exestill holding the port — the launcher tries to kill it, but Windows occasionally needs a manual reboot. Full log:SerienJunkie/tor/data/tor.log.- CAPTCHA wall — solve it once; cookies persist across sessions unless you've enabled Fresh Firefox-Profil pro Session.
- Serien Junkie keeps showing "Verification failed" — the first-visit popup explains this. Serien Junkie uses Cloudflare Turnstile which blocks all Tor exits. The bot bypasses Tor for Serien Junkie specifically so it actually works; everything else still goes through Tor.
- Serien Junkie white screen with Kaspersky — see the section above.
- Sidebar missing on a page — reload the tab; some sites block injection until the document is fully loaded.
- Need a bug report? Settings modal → Werkzeuge → "Diagnose-Bundle exportieren" produces a sanitised zip.
git pullMost updates are bot-code only and take effect on next launch. For
embedded-runtime bumps, the local .integrity.json will warn about
hash mismatches — delete it to bless the new hashes.
See LICENSE. Reading and inspecting this code:
encouraged. Running it operationally: explicitly not allowed.
If you only want to use the bot, you can stop reading here. The rest of this section is for people who want to look at, audit, or change the code.
- Reading the code & sending changes →
CONTRIBUTING.md(setup, style, PR process, the no-real-names rule). - Architecture & technical reference →
docs/developer-docs.md(env-vars, state files, privacy-stack phases, repo layout). - Threat model & security items →
docs/security.md(12 adversary classes, what eachS<n>defends against, what we deliberately did not implement). - Reporting a vulnerability →
SECURITY.md(private channel via GitHub PVR — do not open a public issue for security problems). - Code of conduct →
CODE_OF_CONDUCT.md(Contributor Covenant 2.1 + enforcement procedure).
💖 Gefällt dir die Privacy-Arbeit? Du kannst die Maintainer-Zeit für Audits, Reviews und Dokumentation unterstützen via GitHub Sponsors → github.com/sponsors/FieteGM — Sponsoring bezahlt die Audit-Arbeit, nicht die operationale Nutzung des Bots (siehe
LICENSE).
Strikter Haftungsausschluss. Ich unterstütze, befürworte oder fördere die Nutzung dieses Skripts nicht. Es ist ausschließlich zur Code-Begutachtung veröffentlicht. Nutze es nicht, um eine Streaming-Plattform aufzurufen oder zu automatisieren. Wenn du den Code prüfst, dann verantwortungsvoll und in Einklang mit allen geltenden Gesetzen sowie den Nutzungsbedingungen jedes beteiligten Drittanbieters. Mit dem Weiterlesen bestätigst du, dass du dieses Skript nicht operativ einsetzen wirst.
Der Lizenz-Header (
LICENSE) und der vorgelagerte Educational-Use-Hinweis gelten beide — der Hinweis ist kein dekoratives Beiwerk.
Hinweis: Englisch ist die maßgebliche Sprache des Projekts. Bei Widersprüchen zwischen dieser Übersetzung und der englischen Originalfassung gilt die englische Fassung — insbesondere für den Lizenz-Disclaimer und alle Sicherheits-Aussagen. ⬆ Zurück zur englischen Version
Privacy-gehärtetes Binge-Watching-Tool für Serien Junkie, AniWorld und FilmPalast (Filme). Schau dir jede Staffel, jeden Film und jeden Anime hands-free an. Lass die nächste Folge automatisch abspielen, mach genau dort weiter wo du aufgehört hast, überspringe Intro und Outro automatisch, erstelle einen privaten Stream – öffne ihn auf deinem Handy per QR-Scan oder teile die URL mit jedem Gerät in deinem Zuhause. Serien Junkie, AniWorld und FilmPalast – werbefrei, privat, kein Konto, keine Installation. Entpacke das Repository und starte sofort mit dem Binge-Watching, Lokal und sicher nur auf deinem PC.
→ Schnellstart — in zwei Klicks einsatzbereit.
Willst du einen tieferen Blick auf einen bestimmten Aspekt (Privacy- Stack, optionale Windows-Härtung, Tor-Bridges)?
Schau in den docs/-Index. Willst du den Code lesen oder verändern?
Anfangen mit CONTRIBUTING.md.
- Windows 10 (1803+) oder 11 (64-bit). Linux / macOS werden out-
of-the-box nicht unterstützt — der gebündelte Tor, geckodriver,
FFmpeg und das eingebettete Python sind Windows-Binaries. Die
1803-Grenze kommt daher, dass der Firefox-Auto-Download Windows'
eingebautes
tar.exe(libarchive) nutzt, das in jenem Update kam. - ~300 MB freier Plattenplatz für das Repo (eingebettetes Python
- Tor + Rest). Zwei optionale Auto-Downloads brauchen mehr Platz wenn du die Features nutzt:
- Firefox (~85 MB) nach
runtime/firefox/falls der Bot keinen existierenden Firefox findet — passiert beim ersten Start. - FFmpeg (~80 MB) nach
runtime/ffmpeg/nur wenn du das Phone-Streaming-Feature („auf Handy") nutzt — wird dann von gyan.dev geholt, nicht beim Start.
- ~500 MB RAM während HD-Wiedergabe.
- Internet-Zugang für Streaming via Tor. Der Tor-SOCKS-Port ist
127.0.0.1:9050— keine anderen Ports nötig auf Netzwerkebene. - Firefox ist beim Install optional. Falls es bereits auf dem PC
ist (System-Installation, Scoop, Chocolatey, portable), findet und
reused der Bot es. Falls nicht, bietet der Launcher an, eine
portable Kopie nach
runtime/firefox/zu downloaden — keine System-Installation, keine Registry-Einträge, keine Start-Menü- Verknüpfungen. Repo löschen = Firefox weg.
git clonedes Repos (einmalig, ~400 MB).- Doppelklick auf
start_watching.bat.
Das war's. Der Launcher wird:
- Die gebündelte Python-Runtime nutzen (kein
pip installnötig). - Den gebündelten Tor starten und warten bis der SOCKS-Port antwortet. Tor ist immer an — kein Tor = kein Bot, by design.
- Beim allerersten Start einen kurzen OS-Hardening-Audit
laufen lassen (informativ, blockt nicht; spätere Starts
überspringen den Audit stillschweigend — Opt-back-in via
BW_OS_AUDIT_EVERY_START=1in.env). - Nach Firefox suchen. Falls keiner gefunden wird, fragen ob eine
portable Kopie nach
runtime/firefox/heruntergeladen werden soll (~85 MB, ohne System-Spuren). - Firefox mit dem gehärteten Profil starten und das Dashboard öffnen.
Beim ersten Klick auf „auf Handy" (Phone-Streaming) lädt der Bot
zusätzlich FFmpeg (~80 MB) nach runtime/ffmpeg/ — automatisch im
Hintergrund. Du kannst es auch vorab installieren:
python -m bw.ffmpeg_download install. Selbes Zero-Pollution-
Prinzip: Repo löschen → FFmpeg ist weg.
Falls du Serien Junkie nutzen willst, beachte den Serien Junkie + Kaspersky-Hinweis weiter unten.
Die Sidebar erscheint links, sobald Firefox eine Provider-Seite lädt. Alles was du brauchst ist hier.
| Bedienelement | Funktion |
|---|---|
| Suche | Fuzzy-Suche über alle getrackten Serien. Treffer werden inline hervorgehoben. |
| Sortier-Dropdown | "Zuletzt gesehen", Name, Fortschritt, Bewertung, Hinzugefügt. |
| Provider-Switch (SerienJunkie / AniWorld / FilmPalast unten) | Wechselt zwischen Serien Junkie, AniWorld und Film Palast. |
| ⚙ Einstellungen | Öffnet das Settings-Modal. |
| ⏭ Skip | Überspringt die aktuell laufende Folge und geht zur nächsten. |
| ⏻ Beenden | Sauberes Beenden — speichert Zustand, schließt Firefox, stoppt Tor. |
- Jede Zeile zeigt den Serientitel (und den echten Titel, sobald Metadaten geholt wurden) plus ein ▶ Spielt-Badge bei aktiver Wiedergabe.
- Hovern auf eine Zeile zeigt Aktionen pro Eintrag: Fortsetzen, Pinnen, Löschen.
- Löschen zeigt 5 Sekunden lang einen Undo-Toast bevor's endgültig wird.
- Der rechte Rand ist drag-resizable; die Breite bleibt erhalten.
- Resume-Prompt wenn du eine Serie mit gespeichertem Fortschritt neu öffnest.
- Das Zahnrad pro Serie erlaubt dir, das Intro-Skip-Fenster und das End-Screen-Skip-Fenster für diese Serie einzustellen.
| Taste | Aktion |
|---|---|
F |
Vollbild ein/aus |
S |
Intro jetzt skippen |
E |
End-Screen skippen / nächste Folge |
N / P |
Nächste / vorherige Folge |
/ |
Suchfeld fokussieren |
, |
Settings-Modal öffnen |
? |
Vollständiges Shortcut-Overlay anzeigen |
Esc |
Aktives Overlay schließen |
Space |
Play / Pause (im Video) |
← / → |
Sprung -10 s / +10 s (im Video) |
↑ / ↓ |
Lautstärke hoch / runter (im Video) |
Sechs Bereiche. Änderungen wirken sofort, außer anders vermerkt.
- Auto-Vollbild — Vollbild einschalten sobald ein Video startet
- Intro skippen — automatisch das Intro-Fenster überspringen (pro-Serie wird das Fenster im Serien-Zahnrad gesetzt)
- End-Screen skippen — automatisch Abspann/Endkarte überspringen
- Autoplay nächste Folge — nahtloses Binge-Erlebnis in Kombination mit den Skip-Toggles oben
- Wiedergabe-Geschwindigkeit — 0.75× / 1× / 1.25× / 1.5× / 1.75× / 2×
- Lautstärke — 0–100% Slider
- Startseite — AniWorld, SerienJunkie oder FilmPalast (welcher Provider beim Start geöffnet wird)
- Episoden-Ende Countdown — "Nächste Folge in 5 s" Overlay
- Auto-Pause bei Tab-Wechsel — pausieren wenn du den Tab wechselst
- Watch-Time tracken — Watch-Time für die Stats-Heatmap aggregieren
- Reduced motion — Sidebar-Animationen aus
Wirken erst beim nächsten Bot-Start.
- Fresh Firefox-Profil pro Session — bei jedem Start ein neues Temp-Profil, gelöscht beim Exit (du siehst jedes Mal das CAPTCHA, Cookies persistieren nicht)
- Forensik-Hygiene — wo State-Files leben: Off (normale Disk),
RAM (
%TEMP%, gelöscht beim Exit), oder Stash (eigenes Verzeichnis) - Sync-Back beim Exit — nur RAM-Modus: State beim sauberen Quit zurück auf die Disk schreiben
- Tor Traffic-Decoy — Hintergrund-Tor-Decoy-Traffic um Bot- Aktivität timing-mäßig zu verstecken (kostet Bandbreite)
- Watch-Time Stats & Heatmap — Zeitsummen pro Serie + Wochen- Heatmap
- Diagnose-Bundle exportieren — erzeugt ein Zip mit sanitiertem Zustand + Log-Tail für Bug-Reports
Schwebt über dem Video; versteckt sich, wenn der Cursor still steht.
| Button | Funktion |
|---|---|
| 10 s zurück / Play / Pause / 10 s vor | Standard Player-Bedienung |
| Mute / Volume | Hover über Volume-Button für den Slider |
| Time | Aktuelle / Gesamtlaufzeit |
| Seek-Bar | Klicken oder ziehen |
| ⏭ Folge skippen | Wie der ⏭ in der Sidebar |
| ⚙ Zahnrad | In-Player-Settings-Menü |
| ⛶ Vollbild | Vollbild ein/aus |
- Speed-Pills — wirkt sofort
- Sleep-Timer — Off / 1 Folge / 30 min / 1 h / 2 h
- Intro skippen, End-Screen skippen, Autoplay Next, Auto-Vollbild, Pause bei Tab-Wechsel — gleich wie im Dashboard, erreichbar mitten in der Folge
- PiP bei Tab-Wechsel — wenn du den Tab wechselst, Picture-in- Picture anfordern damit die Folge in einem schwebenden Fenster weiterläuft statt zu pausieren
- Loop-Folge — endlos wiederholen (lokaler Toggle, persistiert nicht)
- Skip-Pill (unten links während Intro) — klicken um jetzt zu
skippen, oder
Sdrücken. Bietet auch einen "Intro markieren"-Modus für Folgen wo das Intro-Fenster noch nicht gesetzt ist - End-Countdown (unten rechts gegen Folgenende) — Abbrechen behält die aktuelle Folge bei
- Up next — Pre-Roll für die nächste Folge im Autoplay-Modus
Wenn du Kaspersky hast und Serien Junkie dir einen weißen Bildschirm zeigt der nie lädt, ist das Kaspersky's "Encrypted Connection Scanning" das den HTTPS-Handshake MITM-t — unser Firefox hat Kasperskys Root-CA nicht im Profil, also schlägt der Handshake still fehl.
Fix: Kaspersky → Einstellungen → Bedrohungen & Ausschlüsse →
Ausschlüsse verwalten → Vertrauenswürdige Anwendungen → füge
C:\Program Files\Mozilla Firefox\firefox.exe hinzu → Häkchen bei
"Verschlüsselten Datenverkehr nicht scannen". AniWorld + Hoster
sind nicht betroffen (deren Traffic geht durch Tor, das Kaspersky
nicht abfangen kann).
Der Bot zeigt einen einmaligen Popup mit diesem Hinweis beim ersten Wechsel zu Serien Junkie.
Drei Wege, alle drei sicher:
- Den ⏻ Beenden-Button in der Dashboard-Sidebar klicken.
- Ctrl+C im Launcher-Konsolenfenster drücken.
- Das Launcher-Konsolenfenster schließen.
In allen drei Fällen werden Fortschritt + Zustand vor dem Exit atomar gespeichert (außer du bist im RAM-Modus ohne Sync-Back).
port 9050 was not opened— Tor konnte nicht bootstrappen. Die häufigste Ursache ist ein altertor.exe-Prozess der den Port noch hält — der Launcher versucht ihn zu killen, aber Windows braucht gelegentlich einen Reboot. Volles Log:SerienJunkie/tor/data/tor.log.- CAPTCHA-Wand — einmal lösen; Cookies persistieren über Sessions hinweg, außer du hast Fresh Firefox-Profil pro Session aktiv.
- Serien Junkie zeigt immer "Verification failed" — der First-Visit-Popup erklärt das. Serien Junkie nutzt Cloudflare Turnstile das alle Tor-Exits blockt. Der Bot umgeht Tor speziell für Serien Junkie damit es funktioniert; alles andere geht weiter durch Tor.
- Serien Junkie weißer Bildschirm mit Kaspersky — siehe Abschnitt oben.
- Sidebar fehlt auf einer Seite — Tab neuladen; manche Seiten blockieren Injection bis das Dokument vollständig geladen ist.
- Bug-Report nötig? Settings-Modal → Werkzeuge → "Diagnose-Bundle exportieren" erzeugt ein sanitisiertes Zip.
git pullDie meisten Updates sind reine Bot-Code-Änderungen und wirken beim
nächsten Start. Bei Runtime-Bumps (eingebettetes Python etc.) warnt
die lokale .integrity.json vor Hash-Mismatches — lösche sie um die
neuen Hashes zu segnen.
Siehe LICENSE. Code lesen und prüfen: erwünscht. Operativ
ausführen: ausdrücklich nicht erlaubt.
Wenn du den Bot nur nutzen willst, kannst du hier aufhören zu lesen. Der Rest dieses Abschnitts ist für Leute, die den Code anschauen, auditieren oder verändern wollen.
- Code lesen und Änderungen einsenden →
CONTRIBUTING.md(Setup, Style, PR-Prozess, Klarname-Verbot). - Architektur & technische Referenz →
docs/developer-docs.md(Env-Variablen, State-Files, Privacy-Stack-Phasen, Repo-Layout). - Threat-Model & Security-Items →
docs/security.md(12 Angreiferklassen, was jedesS<n>abdeckt, was wir bewusst nicht implementiert haben). - Sicherheitslücke melden →
SECURITY.md(privater Kanal via GitHub PVR — bitte kein öffentliches Issue für Security-Probleme). - Verhaltenskodex →
CODE_OF_CONDUCT.md(Contributor Covenant 2.1 + Enforcement-Verfahren).