https://github.com/zzackllack/anibridge
FastAPI service that bridges streaming catalogues (AniWorld, Serienstream/s.to, Megakino) to automation tools. It exposes a fake Torznab feed and a fake qBittorrent-compatible API so that applications like Prowlarr/Sonarr can discover and download episodes automatically
https://github.com/zzackllack/anibridge
anime aniworld homelab megakino radarr self-hosted serienstream series sonarr streaming
Last synced: 4 months ago
JSON representation
FastAPI service that bridges streaming catalogues (AniWorld, Serienstream/s.to, Megakino) to automation tools. It exposes a fake Torznab feed and a fake qBittorrent-compatible API so that applications like Prowlarr/Sonarr can discover and download episodes automatically
- Host: GitHub
- URL: https://github.com/zzackllack/anibridge
- Owner: Zzackllack
- License: bsd-3-clause
- Created: 2025-08-12T20:02:41.000Z (12 months ago)
- Default Branch: main
- Last Pushed: 2026-03-30T17:09:34.000Z (4 months ago)
- Last Synced: 2026-03-30T19:11:45.633Z (4 months ago)
- Topics: anime, aniworld, homelab, megakino, radarr, self-hosted, serienstream, series, sonarr, streaming
- Language: Python
- Homepage: https://anibridge-docs.zacklack.de
- Size: 7.48 MB
- Stars: 7
- Watchers: 0
- Forks: 0
- Open Issues: 8
-
Metadata Files:
- Readme: .github/README.md
- Contributing: .github/CONTRIBUTING.md
- License: LICENSE
- Code of conduct: .github/CODE_OF_CONDUCT.md
- Codeowners: .github/CODEOWNERS
- Security: .github/SECURITY.md
- Agents: AGENTS.md
Awesome Lists containing this project
README
# AniBridge
AniBridge is a minimal FastAPI service that bridges anime and series streaming catalogues (AniWorld, Serienstream/s.to, megakino) to automation tools. It exposes a fake Torznab feed and a fake qBittorrent-compatible API so that applications like Prowlarr/Sonarr can discover and download episodes automatically.
> [!CAUTION]
> ⚖️ Before using this software, please read the
> [Legal Disclaimer](/docs/src/legal.md).
## Features
- **Torznab endpoint** that indexes available episodes from AniWorld, Serienstream (s.to), and megakino.
- **qBittorrent API shim** allowing Prowlarr/Sonarr to enqueue downloads.
- **Background scheduler** with progress tracking for downloads.
- **STRM files and STRM proxy** support for stable streaming URLs.
- Simple `/health` endpoint for container or orchestration checks.
- Docker Image for easy deployment
> [!NOTE]
> Sonarr can occasionally reject `.strm` imports with “No audio tracks detected” even when playback works in
> Jellyfin. If this happens, use manual import or disable “Analyze video files” in Sonarr. See
> [Issue #50](https://github.com/zzackllack/anibridge/issues/50).
## Currently work-in-progress / TODO
- Better code structure and organization (refactoring, modularization, right now the code is a bit messy with comments in multiple languages, redundant code, etc. 😅)
- Converting absolute episode numbers to relative ones (e.g., "001" to "S01E01"). If the series type is set to "Anime/Absolute", AniBridge currently will not find any episodes. This is because of the way AniWorld numbers episodes.
- Documentation, configuration instructions, and examples...
- Interactive user search via Prowlarr (currently a bit buggy)
## Planned Features
- Full support for RSS Sync
- Toggleable WebUI
## Installation
### With Docker
```bash
docker compose up -d
```
### From source
```bash
git clone https://github.com/zzackllack/AniBridge.git
cd AniBridge
# Install uv first if needed: https://docs.astral.sh/uv/getting-started/installation/
uv sync --frozen
uv run python -m app.main
```
## Endpoints
- Torznab feed: `http://localhost:8000/torznab`
- qBittorrent API: `http://localhost:8000/api/v2`
- Health check: `http://localhost:8000/health`
Configure Prowlarr/Sonarr/Radarr to point at the Torznab feed. Downloads are placed in
`DOWNLOAD_DIR` as defined in the configuration. For further details see the [quickstart guide in the documentation.](https://anibridge-docs.zacklack.de/guide/quickstart)
## Networking Policy (Important)
> [!WARNING]
> Legacy in-app outbound proxy support was deprecated and removed. Route outbound traffic
> externally using a host VPN or a VPN sidecar (for example Gluetun).
- Recommended: Run in Docker with a VPN sidecar (e.g., Gluetun) and attach
AniBridge to the same network namespace so all requests and downloads egress
through the VPN.
- Alternative: Use a system-level VPN on the host where AniBridge runs.
- STRM proxy functionality (`/strm/*`) is unchanged and still supported.
## Contributing
Please read [CONTRIBUTING.md](CONTRIBUTING.md) for details on our code of conduct and the process
for submitting pull requests.
## License
This project is licensed under the BSD 3-Clause License see the [LICENSE](LICENSE) file for details.
## Support
- Create an [issue](https://github.com/Zzackllack/AniBridge/issues) for bug reports or feature requests.
- Check our [security policy](SECURITY.md) for reporting vulnerabilities.
## Acknowledgments
- Thanks to phoenixthrush for providing a Library for his [AniWorld Downloader](https://github.com/phoenixthrush/AniWorld-Downloader)