No browser, no ads, no distractions. Just you and an unparalleled anime viewing experience.
Installation • Features • Usage • Sources • Türkçe
- Turkish: Animecix, Turkanime, Anizle
- English: HiAnime, AllAnime
- High-quality HLS/MP4 playback with MPV
- Resume from where you left off (timestamp-based)
- Watch history and statistics
- Completed (✓) and in-progress (●) episode markers
- Aria2 for multi-connection fast downloads
- yt-dlp for complex stream support
- Queue system with concurrent downloads
- Resume interrupted downloads
- Smart file naming (
Anime Name - S1E1.mp4)
- Auto-scan downloaded anime
- External drive support (USB, HDD)
- Offline anime indexing
- Search across all sources
- SQLite database (fast and reliable)
- System notifications on download completion
- Discord RPC integration (show what you're watching on Discord)
- Search history
- Debug mode and logging
- Automatic update checks
- Non-interactive JSON API for scripts and AI agents
- Torznab server mode for Sonarr/*arr integration
pip install weeb-cliyay -S weeb-cliDownload the appropriate file for your platform from Releases.
git clone https://github.com/ewgsta/weeb-cli.git
cd weeb-cli
pip install -e .weeb-cliFor scripts, automation, and AI agents, weeb-cli provides JSON API commands that work headlessly without a database or TUI:
# List available providers
weeb-cli api providers
# Search for anime (returns IDs)
weeb-cli api search "Angel Beats"
# Returns: [{"id": "12345", "title": "Angel Beats!", ...}]
# List episodes (use ID from search)
weeb-cli api episodes 12345 --season 1
# Get stream URLs for an episode
weeb-cli api streams 12345 --season 1 --episode 1
# Get anime details
weeb-cli api details 12345
# Download an episode
weeb-cli api download 12345 --season 1 --episode 1 --output ./downloadsAll API commands output JSON to stdout.
weeb-cli can run as a Torznab-compatible server for Sonarr and other *arr applications:
pip install weeb-cli[serve]
weeb-cli serve --port 9876 \
--watch-dir /downloads/watch \
--completed-dir /downloads/completed \
--sonarr-url http://sonarr:8989 \
--sonarr-api-key YOUR_KEY \
--providers animecix,anizle,turkanimeThen add http://weeb-cli-host:9876 as a Torznab indexer in Sonarr with category 5070 (TV/Anime). The server includes a blackhole download worker that automatically processes grabbed episodes.
FROM python:3.13-slim
RUN apt-get update && apt-get install -y --no-install-recommends aria2 ffmpeg && rm -rf /var/lib/apt/lists/*
RUN pip install --no-cache-dir weeb-cli[serve] yt-dlp
EXPOSE 9876
CMD ["weeb-cli", "serve", "--port", "9876", "--watch-dir", "/downloads/watch", "--completed-dir", "/downloads/completed"]| Key | Action |
|---|---|
↑ ↓ |
Navigate menu |
Enter |
Select |
s |
Search Anime (Main menu) |
d |
Downloads (Main menu) |
w |
Watchlist (Main menu) |
c |
Settings (Main menu) |
q |
Exit (Main menu) |
Ctrl+C |
Go back / Exit |
Note: All shortcuts can be customized in Settings > Keyboard Shortcuts.
| Source | Language |
|---|---|
| Animecix | Turkish |
| Turkanime | Turkish |
| Anizle | Turkish |
| HiAnime | English |
| AllAnime | English |
Config location: ~/.weeb-cli/weeb.db (SQLite)
| Setting | Description | Default | Type |
|---|---|---|---|
language |
Interface language (tr/en) | null (asks on first run) |
string |
scraping_source |
Active anime source | animecix |
string |
aria2_enabled |
Use Aria2 for downloads | true |
boolean |
aria2_max_connections |
Max connections per download | 16 |
integer |
ytdlp_enabled |
Use yt-dlp for HLS streams | true |
boolean |
ytdlp_format |
yt-dlp format string | bestvideo+bestaudio/best |
string |
max_concurrent_downloads |
Simultaneous downloads | 3 |
integer |
download_dir |
Download folder path | ./weeb-downloads |
string |
download_max_retries |
Retry failed downloads | 3 |
integer |
download_retry_delay |
Delay between retries (seconds) | 10 |
integer |
show_description |
Show anime descriptions | true |
boolean |
discord_rpc_enabled |
Discord Rich Presence | false |
boolean |
shortcuts_enabled |
Keyboard shortcuts | true |
boolean |
debug_mode |
Debug logging | false |
boolean |
anilist_token- AniList OAuth tokenanilist_user_id- AniList user IDmal_token- MyAnimeList OAuth tokenmal_refresh_token- MAL refresh tokenmal_username- MAL username
Managed via Settings > External Drives menu. Each drive stores:
- Path (e.g.,
D:\Anime) - Custom name/nickname
- Added timestamp
All settings can be modified through the interactive Settings menu.
- Multiple source support (TR/EN)
- MPV streaming
- Watch history and progress tracking
- Aria2/yt-dlp download integration
- External drives and local library
- SQLite database
- Notification system
- Debug mode
- MAL/AniList integration
- Database backup/restore
- Keyboard shortcuts
- Non-interactive API mode (JSON output)
- Torznab server for Sonarr/*arr integration
- Anime recommendations
- Batch operations
- Watch statistics (graphs)
- Theme support
- Subtitle downloads
- Torrent support (nyaa.si)
- Watch party
weeb-cli/
├── weeb_cli/ # Main application package
│ ├── commands/ # CLI command handlers
│ │ ├── api.py # Non-interactive JSON API commands
│ │ ├── downloads.py # Download management commands
│ │ ├── search.py # Anime search functionality
│ │ ├── serve.py # Torznab server for *arr integration
│ │ ├── settings.py # Settings menu and configuration
│ │ ├── setup.py # Initial setup wizard
│ │ └── watchlist.py # Watch history and progress
│ │
│ ├── providers/ # Anime source integrations
│ │ ├── extractors/ # Video stream extractors
│ │ │ └── megacloud.py # Megacloud extractor
│ │ ├── allanime.py # AllAnime provider (EN)
│ │ ├── animecix.py # Animecix provider (TR)
│ │ ├── anizle.py # Anizle provider (TR)
│ │ ├── base.py # Base provider interface
│ │ ├── hianime.py # HiAnime provider (EN)
│ │ ├── registry.py # Provider registration system
│ │ └── turkanime.py # Turkanime provider (TR)
│ │
│ ├── services/ # Business logic layer
│ │ ├── cache.py # File-based caching system
│ │ ├── database.py # SQLite database manager
│ │ ├── dependency_manager.py # Auto-install FFmpeg, MPV, etc.
│ │ ├── details.py # Anime details fetcher
│ │ ├── discord_rpc.py # Discord Rich Presence
│ │ ├── downloader.py # Queue-based download manager
│ │ ├── error_handler.py # Global error handling
│ │ ├── headless_downloader.py # Headless download (no DB/TUI deps)
│ │ ├── local_library.py # Local anime indexing
│ │ ├── logger.py # Debug logging system
│ │ ├── notifier.py # System notifications
│ │ ├── player.py # MPV video player integration
│ │ ├── progress.py # Watch progress tracking
│ │ ├── scraper.py # Provider facade
│ │ ├── search.py # Search service
│ │ ├── shortcuts.py # Keyboard shortcuts manager
│ │ ├── tracker.py # MAL/AniList integration
│ │ ├── updater.py # Auto-update checker
│ │ ├── watch.py # Streaming service
│ │ ├── _base.py # Base service class
│ │ └── _tracker_base.py # Base tracker interface
│ │
│ ├── ui/ # Terminal UI components
│ │ ├── header.py # Header display
│ │ ├── menu.py # Main menu
│ │ └── prompt.py # Custom prompts
│ │
│ ├── utils/ # Utility functions
│ │ └── sanitizer.py # Filename/path sanitization
│ │
│ ├── locales/ # Internationalization
│ │ ├── en.json # English translations
│ │ └── tr.json # Turkish translations
│ │
│ ├── templates/ # HTML templates
│ │ ├── anilist_error.html # AniList OAuth error page
│ │ ├── anilist_success.html # AniList OAuth success page
│ │ ├── mal_error.html # MAL OAuth error page
│ │ └── mal_success.html # MAL OAuth success page
│ │
│ ├── config.py # Configuration management
│ ├── exceptions.py # Custom exception hierarchy
│ ├── i18n.py # Internationalization system
│ ├── main.py # CLI entry point
│ └── __main__.py # Package execution entry
│
├── tests/ # Test suite
│ ├── test_api.py # API commands and headless downloader tests
│ ├── test_cache.py # Cache manager tests
│ ├── test_exceptions.py # Exception tests
│ ├── test_sanitizer.py # Sanitizer tests
│ └── conftest.py # Pytest fixtures
│
├── weeb_landing/ # Landing page assets
│ ├── logo/ # Logo files (various sizes)
│ └── index.html # Landing page
│
├── distribution/ # Build and distribution files
├── pyproject.toml # Project metadata and dependencies
├── requirements.txt # Python dependencies
├── pytest.ini # Pytest configuration
├── LICENSE # GPL License
└── README.md # This file
- Python 3.8+ - Main programming language
- Typer - CLI framework with rich terminal support
- Rich - Terminal formatting and styling
- Questionary - Interactive prompts and menus
- SQLite - Local database (WAL mode)
- requests - HTTP client
- curl_cffi - Advanced HTTP with browser impersonation
- BeautifulSoup4 - HTML parsing
- lxml - Fast XML/HTML processing
- FFmpeg - Video processing and conversion
- MPV - High-quality video player
- Aria2 - Multi-connection downloader
- yt-dlp - Complex stream downloader (HLS, DASH)
- pycryptodome - Encryption/decryption (Turkanime)
- pypresence - Discord Rich Presence
- py7zr - 7z archive handling
- winotify - Windows notifications
- pyfiglet - ASCII art headers
- packaging - Version comparison
- pytest - Testing framework
- pyinstaller - Executable builder
- build - Python package builder
- Provider Pattern - Pluggable anime sources
- Registry Pattern - Dynamic provider registration
- Service Locator - Lazy-loaded services
- Queue Pattern - Thread-safe download queue
- Decorator Pattern - Caching decorator
- Observer Pattern - Progress tracking
- Strategy Pattern - Multiple download strategies
This project is licensed under the GNU General Public License v3.0.
See the LICENSE file for the full license text.
Weeb-CLI (C) 2026
