{"id":31762309,"url":"https://github.com/yui007/mangaforge","last_synced_at":"2025-10-20T09:26:54.010Z","repository":{"id":318611667,"uuid":"1069357048","full_name":"Yui007/MangaForge","owner":"Yui007","description":"Plugin-based architecture supporting multiple manga sources with a gorgeous Rich-based interface","archived":false,"fork":false,"pushed_at":"2025-10-08T06:21:58.000Z","size":131,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-10-08T08:25:29.122Z","etag":null,"topics":["batoto","cli","manga","manga-downloader","manga-reader","manga-scraper","mangabuddy","mangapark","manhua-scraper","manhwa","manhwa-downloader","manhwa-scraper","pdf","python","scraper","webtoons","weebcentral","windows"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Yui007.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-10-03T19:59:30.000Z","updated_at":"2025-10-08T06:22:02.000Z","dependencies_parsed_at":"2025-10-08T08:25:58.044Z","dependency_job_id":"f461771c-81b5-467e-b385-cee423d54e55","html_url":"https://github.com/Yui007/MangaForge","commit_stats":null,"previous_names":["yui007/mangaforge"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/Yui007/MangaForge","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Yui007%2FMangaForge","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Yui007%2FMangaForge/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Yui007%2FMangaForge/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Yui007%2FMangaForge/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Yui007","download_url":"https://codeload.github.com/Yui007/MangaForge/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Yui007%2FMangaForge/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279002122,"owners_count":26083307,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-09T02:00:07.460Z","response_time":59,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["batoto","cli","manga","manga-downloader","manga-reader","manga-scraper","mangabuddy","mangapark","manhua-scraper","manhwa","manhwa-downloader","manhwa-scraper","pdf","python","scraper","webtoons","weebcentral","windows"],"created_at":"2025-10-09T22:17:59.042Z","updated_at":"2025-10-09T22:18:04.549Z","avatar_url":"https://github.com/Yui007.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 🚀 MangaForge\n\n\u003cdiv align=\"center\"\u003e\n  \u003ch3\u003e🎯 Beautiful Python CLI Manga Downloader\u003c/h3\u003e\n  \u003cp\u003e\u003cstrong\u003ePlugin-based architecture supporting multiple manga sources with a gorgeous Rich-based interface\u003c/strong\u003e\u003c/p\u003e\n\n  [![Python Version](https://img.shields.io/badge/python-3.10+-blue.svg)](https://python.org)\n  [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n  [![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg)](https://github.com/Yui007/MangaForge/pulls)\n\n  \u003cimg src=\"icon/Cli.PNG\" alt=\"MangaForge CLI Preview\" width=\"800\"/\u003e\n\n  \u003csub\u003e\u003cstrong\u003eInspired by \u003ca href=\"https://github.com/metafates/mangal\"\u003emangal\u003c/a\u003e but built in Python with modern architecture\u003c/strong\u003e\u003c/sub\u003e\n\u003c/div\u003e\n\n---\n\n## ✨ Features\n\n\u003cdiv align=\"center\"\u003e\n\n| 🎨 **Beautiful CLI** | 🔌 **Plugin System** | ⚡ **High Performance** | 📦 **Multiple Formats** |\n|:---:|:---:|:---:|:---:|\n| Rich-based interface | Auto-discover providers | Parallel downloads | CBZ, PDF, Images |\n| Interactive menus | Drop-in architecture | Concurrent processing | Live progress bars |\n| Paginated tables | No core modifications | Smart rate limiting | Beautiful output |\n\n\u003c/div\u003e\n\n## 🌟 Current Providers\n\n\u003cdiv align=\"center\"\u003e\n\n| Provider | Status | Description |\n|:---:|:---:|:---:|\n| **Bato** 🟢 | ✅ **Fully Working** | Popular manga hosting with clean interface |\n| **WeebCentral** 🟢 | ✅ **Fully Working** | High-quality manga scans |\n| **MangaPark** 🟢 | ✅ **Fully Working** | Large manga library |\n| **MangaBuddy** 🟢 | ✅ **Fully Working** | Fast and reliable source |\n| **AsuraComic** 🟢 | ✅ **Fully Working** | Premium manga hosting |\n| **WebToons** 🟢 | ✅ **Fully Working** | Premium webtoon hosting |\n| **MangaKakalot** 🟢 | ✅ **Fully Working** | Large manga library |\n| **VyManga** 🟢 | ✅ **Fully Working** | Premium manga and webtoon hosting |\n| **Toonily** 🟢 | ✅ **Fully Working** | SFW/NSFW webtoon and Manhwa hosting |\n| **KaliScan** 🟢 | ✅ **Fully Working** | High-quality manga hosting with modern interface |\n| **ManhuaScan** 🟢 | ✅ **Fully Working** | Rich manhua Library hosting |\n\n\u003e **🟢 Fully Tested** | **🟡 Basic Testing** | **⚪ In Development**\n\u003e\n\u003e *More providers coming soon!*\n\n\u003c/div\u003e\n\n## 🚀 Quick Start\n\n### 1. **Clone \u0026 Setup**\n```bash\ngit clone https://github.com/Yui007/MangaForge.git\ncd MangaForge\n\n# Create virtual environment (recommended)\npython -m venv venv\n# On Windows:\nvenv\\Scripts\\activate\n# On macOS/Linux:\nsource venv/bin/activate\n\n# Install dependencies\npip install -r requirements.txt\n```\n\n### 2. **Launch CLI**\n```bash\npython main.py\n```\n\n\u003cdiv align=\"center\"\u003e\n  \u003cimg src=\"icon/Cli.PNG\" alt=\"CLI Interface\" width=\"600\"/\u003e\n\u003c/div\u003e\n\n### 3. **Search \u0026 Download**\n1. **Search**: Choose \"[1] 🔍 Search Manga by Title\"\n2. **Select Provider**: Pick from 11 available sources\n3. **Browse Results**: Navigate paginated results\n4. **Download**: Select chapters and format (CBZ/PDF/Images)\n\n---\n\n## 📖 Usage Examples\n\n### Search for Manga\n```bash\n# Launch CLI\npython main.py\n\n# Select: [1] Search Manga by Title\n# Choose provider: Bato, WeebCentral, etc.\n# Enter: \"attack on titan\"\n# Browse results and select manga\n```\n\n### Download by URL\n```bash\n# Select: [2] Get Manga by URL\n# Enter manga URL from any supported provider\n# Auto-detect provider and fetch chapters\n```\n\n### Configuration\n```bash\n# Select: [3] Settings\n# Configure:\n# - Download directory\n# - Parallel workers\n# - Output format (CBZ/PDF/Images)\n# - Network timeout\n```\n\n---\n\n## 🏗️ Architecture\n\n```\nMangaForge/\n├── 🧠 core/              # Core system (locked)\n│   ├── base_provider.py  # Provider interface\n│   ├── downloader.py     # Parallel downloads\n│   ├── converter.py      # Format conversion\n│   └── config.py         # Settings management\n├── 📊 models/           # Data structures\n├── 🔌 providers/        # Plugin providers\n│   ├── bato.py         # Bato provider ✅\n│   ├── weebcentral.py  # WeebCentral ✅\n│   ├── mangapark.py    # MangaPark ✅\n│   ├── mangabuddy.py   # MangaBuddy ✅\n│   ├── asuracomic.py   # AsuraComic ✅\n│   ├── webtoons.py     # Webtoons ✅\n│   ├── mangakakalot.py # MangaKakalot ✅\n│   ├── vymanga.py      # VyManga ✅\n│   ├── toonily.py      # Toonily ✅\n│   ├── kaliscan.py     # KaliScan ✅\n│   └── manhuascan.py   # ManhuaScan ✅\n├── 🎨 cli/              # Beautiful interface\n├── ⚙️ config/           # Settings\n└── 📥 downloads/        # Downloaded manga\n```\n\n## 🔧 Advanced Features\n\n### Provider System\n- **🔌 Plugin Architecture**: Add providers without touching core code\n- **🔍 Auto-Discovery**: Drop `.py` files in `providers/` folder\n- **🛡️ Error Handling**: Robust failure recovery\n- **⚡ Performance**: Optimized scraping and parsing\n\n### Download System\n- **🔄 Parallel Processing**: Configurable workers for chapters\n- **📈 Live Progress**: Real-time progress bars\n- **🔁 Resume Support**: Continue interrupted downloads\n- **📊 Smart Queuing**: Efficient resource utilization\n\n### Output Formats\n- **📚 CBZ**: Comic book archive (ZIP format)\n- **📄 PDF**: Portable document format\n- **🖼️ Images**: Individual image files\n- **🎯 Quality Control**: Configurable image processing\n\n---\n\n## 🛠️ Development\n\n### Adding New Providers\n\nCreate a new file in `providers/`:\n\n```python\nfrom core.base_provider import BaseProvider\nfrom models import MangaSearchResult, MangaInfo, Chapter\n\nclass NewProvider(BaseProvider):\n    provider_id = \"newprovider\"\n    provider_name = \"New Provider\"\n    base_url = \"https://newprovider.com\"\n\n    def search(self, query: str, page: int = 1):\n        # Implement search logic\n        pass\n\n    def get_manga_info(self, manga_id: str = None, url: str = None):\n        # Implement manga info extraction\n        pass\n\n    def get_chapters(self, manga_id: str):\n        # Implement chapter listing\n        pass\n\n    def get_chapter_images(self, chapter_id: str):\n        # Implement image extraction\n        pass\n```\n\n**✨ Auto-discovered!** No core modifications needed.\n\n### Running Tests\n\n```bash\n# Core system tests\npython test_core_system.py\n\n# CLI system tests\npython test_cli_system.py\n\n# All tests\npython test.py\n```\n\n---\n\n## 📋 Requirements\n\n- **Python**: 3.10 or higher\n- **Dependencies**: See `requirements.txt`\n- **Optional**: Playwright browsers for some providers\n\n### Virtual Environment Setup\n\n```bash\n# Create virtual environment\npython -m venv venv\n\n# Activate (Windows)\nvenv\\Scripts\\activate\n\n# Activate (macOS/Linux)\nsource venv/bin/activate\n\n# Install dependencies\npip install -r requirements.txt\n\n# Deactivate when done\ndeactivate\n```\n\n---\n\n## 🌟 Comparison with Similar Projects\n\n| Feature | MangaForge | mangal |\n|:---:|:---:|:---:|\n| **Language** | Python 🐍 | Go 🏃 |\n| **Interface** | Rich CLI 🎨 | TUI |\n| **Providers** | 11+ (growing) 📈 | 10+ |\n| **Architecture** | Plugin-based 🔌 | Built-in |\n| **Customization** | YAML config ⚙️ | CLI flags |\n| **Output Formats** | CBZ, PDF, Images 📦 | CBZ only |\n\n**MangaForge brings the mangal experience to Python with:**\n- 🎨 **Beautiful Rich-based CLI**\n- 🔌 **True plugin architecture**\n- ⚙️ **Flexible configuration**\n- 📦 **Multiple output formats**\n\n---\n\n## 🤝 Contributing\n\nContributions are welcome! Here's how to help:\n\n### 🚀 Quick Start for Contributors\n\n```bash\n# Fork and clone\ngit clone https://github.com/YOUR_USERNAME/MangaForge.git\ncd MangaForge\n\n# Setup development environment\npython -m venv venv\nsource venv/bin/activate  # or venv\\Scripts\\activate on Windows\npip install -r requirements.txt\n\n# Run tests\npython test.py\n\n# Launch CLI\npython main.py\n```\n\n### 📝 Adding Providers\n\n1. **Create provider file** in `providers/`\n2. **Implement 4 methods**: `search()`, `get_manga_info()`, `get_chapters()`, `get_chapter_images()`\n3. **Test thoroughly** with real data\n4. **Submit PR** with provider name and description\n\n### 🐛 Reporting Issues\n\n- **🐛 Bugs**: Use GitHub Issues with detailed error logs\n- **💡 Features**: Create feature requests with use cases\n- **📖 Docs**: Help improve documentation\n\n---\n\n## 📄 License\n\n**MIT License** - See [LICENSE](LICENSE) file for details.\n\n---\n\n\u003cdiv align=\"center\"\u003e\n\n## 🎯 Ready to Download Manga?\n\n```bash\n# Quick setup\ngit clone https://github.com/Yui007/MangaForge.git\ncd MangaForge\npython -m venv venv\nsource venv/bin/activate\npip install -r requirements.txt\npython main.py\n```\n\n**🌟 Enjoy your manga collection!**\n\n[![GitHub Repo](https://img.shields.io/badge/GitHub-Yui007%2FMangaForge-blue?style=for-the-badge\u0026logo=github)](https://github.com/Yui007/MangaForge)\n[![Python](https://img.shields.io/badge/Python-3.10+-blue?style=for-the-badge\u0026logo=python)](https://python.org)\n\n\u003c/div\u003e","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyui007%2Fmangaforge","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fyui007%2Fmangaforge","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyui007%2Fmangaforge/lists"}