DaoStream is a modular, lightning-fast Command Line Interface (CLI) scraper and stream resolver for Anime and Donghua. It is designed to allow you to search, browse latest releases, list episodes, and stream video content directly in your terminal using mpv.
- ⚡ Pure Terminal Streaming: No heavy browser overhead. Find your favorite show and start playing immediately using
mpv. - 🧩 Modular Scraper Architecture: Built with extensibility in mind. Easily add new anime/donghua sources by extending the base class.
- 🌐 Out-of-the-Box Sources:
- Anichin (
https://anichin.moe) - AnimeXin (
https://animexin.dev) - Donghua Fun (
https://donghuafun.com)
- Anichin (
- 🔓 Advanced Stream Resolving: Auto-resolves complex media hosting sites, including:
- Abyss Player (via a local background decryption proxy server)
- Rumble (extracting raw HLS streams)
- D-Tube (resolving HLS endpoints)
- Doodstream & RPMvid/RPMShare
- 🎛️ Interactive CLI Experience: Guided menus powered by
questionaryand progress/spinner feedback powered byrich. - 📺 Resolution Selector: Interactive quality selector for HLS master playlists.
To run DaoStream, you need:
- Python 3.10+
mpvmedia player installed and available in your system'sPATH.- Linux (Ubuntu/Debian):
sudo apt install mpv - macOS (Homebrew):
brew install mpv - Windows: Download from mpv.io and add it to your System environment variables.
- Linux (Ubuntu/Debian):
-
Clone the Repository:
git clone https://github.com/your-username/DaoStream.git cd DaoStream -
Install Dependencies:
pip install -r requirements.txt
If you are using Nix or NixOS with Flakes enabled, you can enter the development shell instantly. This shell automatically provisions Python, virtualenv, and the mpv player on your path:
nix developThis will automatically configure a local .venv directory, install all required dependencies, and launch you directly into a ready-to-run environment.
Launch the interactive CLI by running the main entrypoint:
python3 main.py- Select Scraper Source: Choose between Anichin, AnimeXin, or Donghua Fun.
- Select Menu Option:
- Latest Donghua: Fetch the list of recently released episodes.
- Popular Today: Show what's currently trending.
- Search Donghua: Query specific titles.
- Select Episode: Pick the episode you want to watch.
- Select Stream Server: Choose your preferred video host mirror.
- Select Action:
- Play with MPV: Launch the media player directly.
- View URL: Print the resolved direct stream link.
DaoStream/
├── main.py # Main CLI interactive loop & user menus
├── requirements.txt # Python library dependencies
├── LICENSE # MIT License
├── flake.nix # Nix Flake environment definition
├── sources/ # Scraper sources directory
│ ├── __init__.py # Source registration
│ ├── base.py # Abstract BaseSource class
│ ├── wordpress_theme.py # Shared logic for WordPress-themed sites
│ ├── anichin.py # Anichin scraper source
│ ├── animexin.py # AnimeXin scraper source
│ └── donghuafun.py # Donghua Fun scraper source
└── utils/ # Resolver and player helpers
├── __init__.py
└── resolver.py # Resolves and decrypts host URLs & launches MPV
Adding a new website scraper is simple due to DaoStream's modular design:
-
Create the Scraper File: Create a new file under
sources/(e.g.,sources/mysource.py) inheriting fromBaseSource:from .base import BaseSource class MyCustomSource(BaseSource): @property def name(self) -> str: return "My Custom Source" @property def base_url(self) -> str: return "https://mycustomsource.com" # Implement abstract methods: get_latest(), get_popular(), search(), get_episodes(), get_servers()
-
Register the Source: Import and add your class instance inside
sources/get_sources()in sources/init.py:from .mysource import MyCustomSource def get_sources(): return [ # ... MyCustomSource() ]
This project is licensed under the MIT License - see the LICENSE file for details.