Skip to content

Weeb CLI Logo

Weeb CLI

No browser, no ads, no distractions. Just you and an unparalleled anime viewing experience.


ReleaseLicenseStarsTests

InstallationFeaturesUsageSourcesDocumentation


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.mp4 for 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
# Install with Makefile
make install-dev
# Or install manually
pip install -e ".[dev]"

Makefile Commands

The project includes a Makefile for common development tasks:

# Installation
make install # Install core dependencies
make install-dev # Install with development dependencies
make install-serve # Install with server dependencies
make install-all # Install all dependencies# Testing
make test# Run tests
make test-cov # Run tests with coverage report# Build
make build # Build distribution packages
make clean # Clean build artifacts# Utilities
make lint # Run linting checks
make check-deps # Verify dependencies
make help# Show all available commands

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" --provider hianime
# Returns: [{"id": "12345", "title": "Angel Beats!", ...}]# List episodes (use ID from search)
weeb-cli api episodes 12345 --season 1 --provider hianime
# Get stream URLs for an episode
weeb-cli api streams 12345 --season 1 --episode 1 --provider hianime
# Get anime details
weeb-cli api details 12345 --provider hianime
# Download an episode
weeb-cli api download 12345 --season 1 --episode 1 --provider hianime --output ./downloads

Provider Selection: All API commands support the --provider (or -p) option to select which anime source to use:

  • Turkish: animecix, turkanime, anizle, weeb
  • English: hianime, allanime
  • German: aniworld
  • Polish: docchi

Default provider is animecix if not specified. Use weeb-cli api providers to see all available providers with their language and region information.

All API commands output JSON to stdout.

Python SDK (Programmatic Access)

For Python applications, weeb-cli provides a native SDK that doesn't require spawning processes:

fromweeb_cliimportWeebSDK# Initialize SDKsdk=WeebSDK(default_provider="hianime")
# Search for animeresults=sdk.search("One Piece")
foranimeinresults:
print(f"{anime.title} ({anime.year})")
# Get episodesepisodes=sdk.get_episodes(results[0].id, season=1)
# Get stream URLsstreams=sdk.get_streams(
anime_id=results[0].id,
episode_id=episodes[0].id
)
# Download episodepath=sdk.download_episode(
anime_id=results[0].id,
season=1,
episode=1,
output_dir="./downloads"
)
print(f"Downloaded to: {path}")

SDK Features:

  • No subprocess overhead - direct Python API
  • Type-safe with full type hints
  • Automatic provider discovery
  • Same caching as CLI mode
  • Thread-safe operations
  • Headless mode (no database/TUI dependencies)

See SDK Documentation for complete API reference.

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

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.

Docker Support:

docker-compose -f docs/docker-compose.torznab.yml up -d

See Torznab Server Documentation for full details.

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 check
  • GET /api/providers - List available providers
  • GET /api/search?q=naruto&provider=animecix - Search anime
  • GET /api/anime/{id}?provider=animecix - Get anime details
  • GET /api/anime/{id}/episodes?season=1 - List episodes
  • GET /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 docs/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

KeyAction
Navigate menu
EnterSelect
sSearch Anime (Main menu)
dDownloads (Main menu)
wWatchlist (Main menu)
cSettings (Main menu)
qExit (Main menu)
Ctrl+CGo back / Exit

Note: All shortcuts can be customized in Settings > Keyboard Shortcuts.


Sources

SourceLanguage
AnimecixTurkish
TurkanimeTurkish
AnizleTurkish
WeebTurkish
HiAnimeEnglish
AllAnimeEnglish
AniWorldGerman
DocchiPolish

Configuration

Config location: ~/.weeb-cli/weeb.db (SQLite)

Available Settings

SettingDescriptionDefaultType
languageInterface language (tr/en/de/pl)null (asks on first run)string
scraping_sourceActive anime sourceanimecixstring
aria2_enabledUse Aria2 for downloadstrueboolean
aria2_max_connectionsMax connections per download16integer
ytdlp_enabledUse yt-dlp for HLS streamstrueboolean
ytdlp_formatyt-dlp format stringbestvideo+bestaudio/beststring
max_concurrent_downloadsSimultaneous downloads3integer
download_dirDownload folder path./weeb-downloadsstring
download_max_retriesRetry failed downloads3integer
download_retry_delayDelay between retries (seconds)10integer
show_descriptionShow anime descriptionstrueboolean
discord_rpc_enabledDiscord Rich Presencefalseboolean
shortcuts_enabledKeyboard shortcutstrueboolean
debug_modeDebug loggingfalseboolean

Tracker Settings (stored separately)

  • anilist_token - AniList OAuth token
  • anilist_user_id - AniList user ID
  • mal_token - MyAnimeList OAuth token
  • mal_refresh_token - MAL refresh token
  • mal_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

Star History Chart


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

Releases

Packages

Used by

Contributors

Languages