Plugin-based architecture supporting multiple manga sources with a gorgeous Rich-based interface
Inspired by mangal but built in Python with modern architecture
| π¨ Beautiful CLI | π Plugin System | β‘ High Performance | π¦ Multiple Formats |
|---|---|---|---|
| Rich-based interface | Auto-discover providers | Parallel downloads | CBZ, PDF, Images |
| Interactive menus | Drop-in architecture | Concurrent processing | Live progress bars |
| Paginated tables | No core modifications | Smart rate limiting | Beautiful output |
| Provider | Status | Description |
|---|---|---|
| Bato π’ | β Fully Working | Popular manga hosting with clean interface |
| WeebCentral π’ | β Fully Working | High-quality manga scans |
| MangaPark π’ | β Fully Working | Large manga library |
| MangaBuddy π’ | β Fully Working | Fast and reliable source |
| AsuraComic π’ | β Fully Working | Premium manga hosting |
| WebToons π’ | β Fully Working | Premium webtoon hosting |
| MangaKakalot π’ | β Fully Working | Large manga library |
| VyManga π’ | β Fully Working | Premium manga and webtoon hosting |
| Toonily π’ | β Fully Working | SFW/NSFW webtoon and Manhwa hosting |
| KaliScan π’ | β Fully Working | High-quality manga hosting with modern interface |
| ManhuaScan π’ | β Fully Working | Rich manhua Library hosting |
π’ Fully Tested | π‘ Basic Testing | βͺ In Development
More providers coming soon!
git clone https://github.com/Yui007/MangaForge.git
cd MangaForge
# Create virtual environment (recommended)
python -m venv venv
# On Windows:
venv\Scripts\activate
# On macOS/Linux:
source venv/bin/activate
# Install dependencies
pip install -r requirements.txtpython main.py- Search: Choose "[1] π Search Manga by Title"
- Select Provider: Pick from 11 available sources
- Browse Results: Navigate paginated results
- Download: Select chapters and format (CBZ/PDF/Images)
# Launch CLI
python main.py
# Select: [1] Search Manga by Title
# Choose provider: Bato, WeebCentral, etc.
# Enter: "attack on titan"
# Browse results and select manga# Select: [2] Get Manga by URL
# Enter manga URL from any supported provider
# Auto-detect provider and fetch chapters# Select: [3] Settings
# Configure:
# - Download directory
# - Parallel workers
# - Output format (CBZ/PDF/Images)
# - Network timeoutMangaForge/
βββ π§ core/ # Core system (locked)
β βββ base_provider.py # Provider interface
β βββ downloader.py # Parallel downloads
β βββ converter.py # Format conversion
β βββ config.py # Settings management
βββ π models/ # Data structures
βββ π providers/ # Plugin providers
β βββ bato.py # Bato provider β
β βββ weebcentral.py # WeebCentral β
β βββ mangapark.py # MangaPark β
β βββ mangabuddy.py # MangaBuddy β
β βββ asuracomic.py # AsuraComic β
β βββ webtoons.py # Webtoons β
β βββ mangakakalot.py # MangaKakalot β
β βββ vymanga.py # VyManga β
β βββ toonily.py # Toonily β
β βββ kaliscan.py # KaliScan β
β βββ manhuascan.py # ManhuaScan β
βββ π¨ cli/ # Beautiful interface
βββ βοΈ config/ # Settings
βββ π₯ downloads/ # Downloaded manga
- π Plugin Architecture: Add providers without touching core code
- π Auto-Discovery: Drop
.pyfiles inproviders/folder - π‘οΈ Error Handling: Robust failure recovery
- β‘ Performance: Optimized scraping and parsing
- π Parallel Processing: Configurable workers for chapters
- π Live Progress: Real-time progress bars
- π Resume Support: Continue interrupted downloads
- π Smart Queuing: Efficient resource utilization
- π CBZ: Comic book archive (ZIP format)
- π PDF: Portable document format
- πΌοΈ Images: Individual image files
- π― Quality Control: Configurable image processing
Create a new file in providers/:
from core.base_provider import BaseProvider
from models import MangaSearchResult, MangaInfo, Chapter
class NewProvider(BaseProvider):
provider_id = "newprovider"
provider_name = "New Provider"
base_url = "https://newprovider.com"
def search(self, query: str, page: int = 1):
# Implement search logic
pass
def get_manga_info(self, manga_id: str = None, url: str = None):
# Implement manga info extraction
pass
def get_chapters(self, manga_id: str):
# Implement chapter listing
pass
def get_chapter_images(self, chapter_id: str):
# Implement image extraction
pass⨠Auto-discovered! No core modifications needed.
# Core system tests
python test_core_system.py
# CLI system tests
python test_cli_system.py
# All tests
python test.py- Python: 3.10 or higher
- Dependencies: See
requirements.txt - Optional: Playwright browsers for some providers
# Create virtual environment
python -m venv venv
# Activate (Windows)
venv\Scripts\activate
# Activate (macOS/Linux)
source venv/bin/activate
# Install dependencies
pip install -r requirements.txt
# Deactivate when done
deactivate| Feature | MangaForge | mangal |
|---|---|---|
| Language | Python π | Go π |
| Interface | Rich CLI π¨ | TUI |
| Providers | 11+ (growing) π | 10+ |
| Architecture | Plugin-based π | Built-in |
| Customization | YAML config βοΈ | CLI flags |
| Output Formats | CBZ, PDF, Images π¦ | CBZ only |
MangaForge brings the mangal experience to Python with:
- π¨ Beautiful Rich-based CLI
- π True plugin architecture
- βοΈ Flexible configuration
- π¦ Multiple output formats
Contributions are welcome! Here's how to help:
# Fork and clone
git clone https://github.com/YOUR_USERNAME/MangaForge.git
cd MangaForge
# Setup development environment
python -m venv venv
source venv/bin/activate # or venv\Scripts\activate on Windows
pip install -r requirements.txt
# Run tests
python test.py
# Launch CLI
python main.py- Create provider file in
providers/ - Implement 4 methods:
search(),get_manga_info(),get_chapters(),get_chapter_images() - Test thoroughly with real data
- Submit PR with provider name and description
- π Bugs: Use GitHub Issues with detailed error logs
- π‘ Features: Create feature requests with use cases
- π Docs: Help improve documentation
MIT License - See LICENSE file for details.