forked from FrederikBaerentsen/ComicOPDS
3.0 KiB
3.0 KiB
📚 ComicOPDS
ComicOPDS is a lightweight OPDS 1.2 server written in Python, designed for serving CBZ comics with metadata extracted from ComicInfo.xml.
It's optimized for large libraries (10k–100k+ comics), supports FastAPI + SQLite + FTS5 search, thumbnail caching, and streaming (OPDS PSE 1.1).
Works great with Panels for iOS and other OPDS readers.
✨ Features
- 📂 Browse your folder hierarchy
- 🔍 Full-text search (title, series, writer, publisher, year, etc.)
- 📥 Download comics (CBZ)
- 📖 Page streaming (OPDS PSE 1.1)
- 🖼️ Thumbnail extraction & caching (from CBZ covers)
- 📊 Dashboard with stats & charts
- 🧠 Smart Lists (saved search filters)
- 🔐 Optional Basic Auth
- 🐋 Runs easily with Docker / Docker Compose
- ⚡ Fast indexing with SQLite FTS5
- 🔄 File system watching for auto-updates
- 📱 Mobile-optimized dashboard
📱 Clients
Supported Clients
| App | Downloads | Search | Streaming |
|---|---|---|---|
| Panels (iOS) | ✔️ | ✔️ | ✔️ |
| KyBook 3 (iOS) | ✔️ | ✔️ | ❌ |
| Cantook (iOS) | ✔️ | ❌ | ❌ |
| Marvin 3 (iOS) | ✔️ | ❌ | ❌ |
| Chunky (iOS) | ✔️ | ❌ | ❌ |
📋 Documentation
- 🚀 Quick Start
- 🔧 Configuration
- 🌐 API & Endpoints
- 📊 Dashboard
- 🧠 Smart Lists
- 🔍 Search
- 📱 Client Setup
- 🎯 Project Scope
- 🛠️ Troubleshooting
- 📄 License
💪 Stress Test
ComicOPDS has been stress tested using 170k+ CBZ files generated using CBZGenerator.
Performance Results:
- Initial scan: ~10 minutes for full library indexing
- Thumbnail generation: ~30 minutes (depending on hardware)
- Hardware: Tested on low-powered Intel N100 CPU with no performance issues
- Search: Very fast response times with SQLite FTS5 even at this scale
The server remains responsive during indexing and handles concurrent OPDS requests without degradation. Memory usage stays reasonable even with large libraries.
🔗 Links
- Repository: Gitea
- OPDS Specification: OPDS 1.2
- OPDS Page Streaming Extension: OPDS PSE 1.1
- Buy Me a Coffee: frederikb
Made with ❤️ for comic book enthusiasts
