Skip to main content

Tarayıcı yok, reklam yok, dikkat dağıtıcı unsur yok. Sadece siz ve eşsiz bir anime izleme deneyimi.

Project description

Weeb CLI Logo

Weeb CLI

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

Release License Stars Tests

InstallationFeaturesUsageSourcesTürkçe


Features

Multiple Sources

  • Turkish: Animecix, Turkanime, Anizle
  • English: HiAnime, AllAnime

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

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.

Docker

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
HiAnime English
AllAnime English

Configuration

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

Available Settings

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

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)
  • 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

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
│   │   ├── 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

Tech Stack

Core Technologies

  • 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)

Web & Networking

  • requests - HTTP client
  • curl_cffi - Advanced HTTP with browser impersonation
  • BeautifulSoup4 - HTML parsing
  • lxml - Fast XML/HTML processing

Media & Download

  • FFmpeg - Video processing and conversion
  • MPV - High-quality video player
  • Aria2 - Multi-connection downloader
  • yt-dlp - Complex stream downloader (HLS, DASH)

Encryption & Security

  • pycryptodome - Encryption/decryption (Turkanime)

Additional Features

  • pypresence - Discord Rich Presence
  • py7zr - 7z archive handling
  • winotify - Windows notifications
  • pyfiglet - ASCII art headers
  • packaging - Version comparison

Development & Testing

  • pytest - Testing framework
  • pyinstaller - Executable builder
  • build - Python package builder

Architecture Patterns

  • 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

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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

weeb_cli-2.8.2.tar.gz (114.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

weeb_cli-2.8.2-py3-none-any.whl (131.9 kB view details)

Uploaded Python 3

File details

Details for the file weeb_cli-2.8.2.tar.gz.

File metadata

  • Download URL: weeb_cli-2.8.2.tar.gz
  • Upload date:
  • Size: 114.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for weeb_cli-2.8.2.tar.gz
Algorithm Hash digest
SHA256 876faa886509527d641207ceff2b011976f1be9259c281982ca6079a253f9b29
MD5 fb62af5a684d1ade519d78a94448f991
BLAKE2b-256 28b55cf924db0bb4b7633bb9831850911bf81473696a1a687a222b8ff92afb53

See more details on using hashes here.

Provenance

The following attestation bundles were made for weeb_cli-2.8.2.tar.gz:

Publisher: publish.yml on ewgsta/weeb-cli

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file weeb_cli-2.8.2-py3-none-any.whl.

File metadata

  • Download URL: weeb_cli-2.8.2-py3-none-any.whl
  • Upload date:
  • Size: 131.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for weeb_cli-2.8.2-py3-none-any.whl
Algorithm Hash digest
SHA256 b0ae106e8d348d65709c64359f8778c97a456063476cdf677a9b366e757dadb6
MD5 33b42f9a8f61fe1d6172d4731ec0d7fe
BLAKE2b-256 e033e4e236511bb902352c95a2f0de181e5c573fc86b1776e18cbf453a6884e2

See more details on using hashes here.

Provenance

The following attestation bundles were made for weeb_cli-2.8.2-py3-none-any.whl:

Publisher: publish.yml on ewgsta/weeb-cli

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page