No browser, no ads, no distractions. Just you and an unparalleled anime viewing experience.
Project description
Weeb CLI
No browser, no ads, no distractions. Just you and an unparalleled anime viewing experience.
Installation • Features • Usage • Sources • Documentation
Features
Multiple Sources
- Turkish: Animecix, Turkanime, Anizle, Weeb
- English: HiAnime, AllAnime
- German: AniWorld
- Polish: Docchi
Smart Streaming
- 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
Powerful Download System
- 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)
Tracking & Sync
- AniList integration with OAuth
- MyAnimeList integration with OAuth
- Kitsu integration with email/password
- Automatic progress sync for online and offline viewing
- Offline queue for pending updates
- Smart anime title matching from filenames
Local Library
- Auto-scan downloaded anime
- External drive support (USB, HDD)
- Offline anime indexing with automatic tracker sync
- Search across all sources
- Recommended format:
Anime Name - S1E1.mp4for best tracker compatibility
Additional Features
- 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
- RESTful API server for web/mobile applications
Installation
PyPI (Universal)
pip install weeb-cli
Arch Linux (AUR)
yay -S weeb-cli
Portable
Download the appropriate file for your platform from Releases.
Developer Setup
git clone https://github.com/ewgsta/weeb-cli.git
cd weeb-cli
pip install -e .
Usage
weeb-cli
API Mode (Non-interactive)
For 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 ./downloads
All API commands output JSON to stdout.
Sonarr/*arr Integration (Serve Mode)
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,turkanime
Then 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.
RESTful API Server
For web/mobile applications and custom integrations, weeb-cli provides a RESTful API server:
pip install weeb-cli[serve-restful]
weeb-cli serve restful --port 8080 --cors
API Endpoints:
GET /health- Health checkGET /api/providers- List available providersGET /api/search?q=naruto&provider=animecix- Search animeGET /api/anime/{id}?provider=animecix- Get anime detailsGET /api/anime/{id}/episodes?season=1- List episodesGET /api/anime/{id}/episodes/{ep_id}/streams- Get stream URLs
All available providers are loaded automatically. Select which provider to use via the provider query parameter.
Docker Support:
docker-compose -f docker-compose.restful.yml up -d
See RESTful API Documentation for full details.
Docker (Torznab)
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"]
Keyboard Controls
| 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.
Sources
| Source | Language |
|---|---|
| Animecix | Turkish |
| Turkanime | Turkish |
| Anizle | Turkish |
| Weeb | Turkish |
| HiAnime | English |
| AllAnime | English |
| AniWorld | German |
| Docchi | Polish |
Configuration
Config location: ~/.weeb-cli/weeb.db (SQLite)
Available Settings
| Setting | Description | Default | Type |
|---|---|---|---|
language |
Interface language (tr/en/de/pl) | 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 |
Tracker Settings (stored separately)
anilist_token- AniList OAuth tokenanilist_user_id- AniList user IDmal_token- MyAnimeList OAuth tokenmal_refresh_token- MAL refresh tokenmal_username- MAL username
External Drives
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.
Roadmap
Completed
- Multiple source support (TR/EN/DE/PL)
- 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
- RESTful API server for web/mobile apps
Planned
- Anime recommendations
- Batch operations
- Watch statistics (graphs)
- Theme support
- Subtitle downloads
- Torrent support (nyaa.si)
- Watch party
Project Structure
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
│ │ ├── serve_restful.py # RESTful API server
│ │ ├── 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
│ │ ├── de.json # German translations
│ │ ├── en.json # English translations
│ │ ├── pl.json # Polish 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
License
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
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file weeb_cli-2.14.0.tar.gz.
File metadata
- Download URL: weeb_cli-2.14.0.tar.gz
- Upload date:
- Size: 153.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
dcf6efb716fab6789524ee7ccd1a3da3a5be3741bdf641c2384815f0854c63ac
|
|
| MD5 |
bc973c5a011d7c95381111e79fc975fb
|
|
| BLAKE2b-256 |
f016cd97c912ddf00766c122f1ccf984eff3e6d5e3376bfabe0e9d18eaf0bcdd
|
File details
Details for the file weeb_cli-2.14.0-py3-none-any.whl.
File metadata
- Download URL: weeb_cli-2.14.0-py3-none-any.whl
- Upload date:
- Size: 176.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e5d1beaa2e367cf8cb2d335f5837c33edb9a567e2918787b2d8cf9c9f6e5cd64
|
|
| MD5 |
ed638e939f5f16ff25ee6a2e1c8cb3f6
|
|
| BLAKE2b-256 |
195d8dffbf8f54f3a3096d0b322ca2dc209f8c59beee172ebeefe6572e5a9adc
|