Files
bookhoard/docs/user/calibre-integration.md
T
john-okeefe 22fd28c7db docs: add comprehensive Calibre integration documentation
This commit adds complete documentation for the planned Calibre
metadata.opf sidecar file support feature.

## New Documentation

### Implementation Planning
- CALIBRE_OPF_IMPLEMENTATION.md: Detailed implementation plan with
  requirements, architecture, database mapping, and step-by-step
  implementation guide for adding Calibre metadata.opf support

### Technical Documentation
- docs/development/calibre-opf-implementation.md: Technical implementation
  details including:
  - Scanner pipeline architecture with sidecar-first approach
  - Data structures (CalibreOPFMetadata, MediaMetadata)
  - Function signatures and logic for parseCalibreMetadataOPF()
  - Database schema mapping (no changes required)
  - Testing strategy (unit and integration tests)
  - Error handling and performance considerations
  - Code examples and benchmarking approach

### User Documentation
- docs/user/calibre-integration.md: Comprehensive user guide covering:
  - What is Calibre and how Bookhoard integrates with it
  - Automatic metadata import from metadata.opf sidecar files
  - Supported metadata fields (Dublin Core + Calibre-specific)
  - Setup instructions for Calibre libraries
  - Workflow examples (fresh library, mixed library, updating metadata)
  - Troubleshooting common issues
  - Best practices for Calibre + Bookhoard workflow
  - FAQ and resources

## Updated Documentation

- README.md: Added Calibre integration feature to media management section
- docs/user/user-guide.md: Added link to Calibre integration guide
- docs/developer/development.md: Added link to Calibre implementation guide

## Feature Summary

The Calibre integration feature will allow Bookhoard to automatically
import curated metadata from Calibre's metadata.opf sidecar files,
including titles, authors, series, tags, descriptions, publishers,
identifiers (ISBN/ASIN), and contributors. Uses sidecar-first approach:
metadata.opf → embedded metadata → folder structure → filename.

All database fields already exist; no schema changes required.
2026-03-26 10:34:15 -04:00

314 lines
11 KiB
Markdown

# Calibre Integration Guide
Bookhoard provides seamless integration with [Calibre](https://calibre-ebook.com/) libraries. If you manage your ebooks with Calibre, Bookhoard can automatically import your curated metadata, including series information, tags, and custom covers.
## What is Calibre?
Calibre is a free and open-source ebook management software. It allows you to:
- **Organize your library** - Create collections, add tags, manage series
- **Edit metadata** - Update titles, authors, descriptions, covers
- **Fetch metadata online** - Download from Google Books, Amazon, Goodreads
- **Convert formats** - Convert between EPUB, MOBI, PDF, and more
- **Sync to devices** - Send books to Kindle, Kobo, and other e-readers
## How Bookhoard Integrates with Calibre
### Automatic Metadata Import
When you scan a Calibre library in Bookhoard, it automatically detects and imports metadata from Calibre's `metadata.opf` files. This includes:
-**Titles and authors** - Your curated edits
-**Series information** - Series name and position
-**Tags and genres** - Your custom organization
-**Descriptions** - Book summaries
-**Publishers and dates** - Publication information
-**Identifiers** - ISBN, ASIN, and other IDs
-**Contributors** - Illustrators, editors, translators
-**Custom covers** - Your chosen cover images
### Sidecar-First Approach
Bookhoard uses a **sidecar-first** approach for Calibre libraries:
1. **If `metadata.opf` exists** → Use Calibre's curated metadata
2. **If no sidecar** → Use embedded metadata from the book file
3. **Fallback** → Use folder structure and filename
This ensures your Calibre curation work is respected and imported accurately.
## Setting Up Your Calibre Library in Bookhoard
### Step 1: Organize Your Calibre Library
Ensure your Calibre library has `metadata.opf` files in each book's folder. Calibre creates these automatically when you add books to your library.
Typical Calibre folder structure:
```
Calibre Library/
├── Author Name/
│ ├── Book Title (Series #1)/
│ │ ├── Book Title.epub
│ │ ├── metadata.opf ← Bookhoard reads this
│ │ └── cover.jpg
│ └── Book Title 2/
│ ├── Book Title 2.epub
│ └── metadata.opf ← Bookhoard reads this
```
### Step 2: Add Library in Bookhoard
1. Navigate to **Admin****Libraries**
2. Click **Add Library**
3. Configure:
- **Name**: "My Calibre Library"
- **Type**: Ebook (or Audiobook/Comic)
- **Folder**: Path to your Calibre library
- **Scan on save**: ✅ Checked
4. Click **Save**
Bookhoard will automatically scan the library and import all books with their Calibre metadata.
### Step 3: Verify Import
1. Navigate to **Library** view
2. Browse your imported books
3. Check that:
- Titles and authors are correct
- Series information appears (if applicable)
- Tags are imported
- Covers display correctly
- Descriptions are present
## Supported Metadata
### Dublin Core Fields
Bookhoard imports standard Dublin Core metadata from Calibre:
| Field | Source | Notes |
|-------|--------|-------|
| Title | `dc:title` | Book title |
| Author | `dc:creator` | Primary author |
| Tags | `dc:subject` | **Keywords/tags** (multiple) |
| Description | `dc:description` | Book summary |
| Publisher | `dc:publisher` | Publisher name |
| Date | `dc:date` | Publication date |
| Language | `dc:language` | ISO language code |
| ISBN | `dc:identifier` | ISBN (if present) |
| ASIN | `dc:identifier` | Amazon ID (if present) |
| Contributors | `dc:contributor` | Additional contributors |
### Calibre-Specific Fields
Bookhoard also imports Calibre's custom metadata:
| Field | Source | Notes |
|-------|--------|-------|
| Series | `calibre:series` | Series name |
| Series Number | `calibre:series_index` | Position in series |
| Timestamp | `dc:date` | When added to Calibre |
### Not Imported
The following Calibre metadata is **not** imported (by design):
-**Ratings** - Calibre ratings are personal; Bookhoard has per-user ratings
-**Sort fields** - Bookhoard has its own sorting logic
-**Custom columns** - User-defined columns (future enhancement)
-**Last read** - Reading progress is tracked per-user in Bookhoard
## Supported File Types
Bookhoard imports Calibre metadata for **all file types**:
- 📚 **Ebooks**: EPUB, MOBI, AZW3, PDF, TXT, etc.
- 🎧 **Audiobooks**: MP3, M4B, M4A, etc.
- 📰 **Comics**: CBZ, CBR, CB7, CBT, etc.
- 📄 **Documents**: PDF, DOCX, etc.
As long as a `metadata.opf` file exists in the folder, Bookhoard will import the metadata.
## Workflow Examples
### Example 1: Fresh Calibre Library
**Scenario**: You have a Calibre library with 500 ebooks, all organized with series, tags, and custom covers.
**Steps**:
1. Add the Calibre library folder in Bookhoard
2. Enable "Scan on save"
3. Bookhoard imports all 500 books with:
- Correct titles and authors
- Series information (e.g., "Harry Potter #2")
- Your custom tags (e.g., "Fantasy", "Favorites", "To Read")
- Your chosen cover images
- Descriptions and publisher info
**Result**: Your entire Calibre library is instantly available in Bookhoard with all your curation work preserved.
### Example 2: Mixed Library (Calibre + Non-Calibre)
**Scenario**: Your library has some books from Calibre (with `metadata.opf`) and some downloaded from elsewhere (no sidecar).
**Steps**:
1. Add the library folder in Bookhoard
2. Bookhoard scans all files:
- **Calibre books**: Import from `metadata.opf`
- **Non-Calibre books**: Use embedded metadata or filename
**Result**: Seamless import of both Calibre and non-Calibre books, with appropriate metadata sources for each.
### Example 3: Updating Calibre Metadata
**Scenario**: You edit metadata in Calibre (fix author name, add series, change cover).
**Steps**:
1. Edit metadata in Calibre (it updates `metadata.opf`)
2. In Bookhoard, trigger a rescan:
- Navigate to **Admin****Libraries**
- Click **Rescan** on your library
- Or use the **Scanner API** to force rescan
3. Bookhoard detects updated `metadata.opf` and refreshes metadata
**Result**: Bookhoard reflects your Calibre changes automatically.
## Troubleshooting
### Metadata Not Importing
**Problem**: Bookhoard doesn't import Calibre metadata.
**Solutions**:
1. **Check file structure**: Ensure `metadata.opf` is in the same folder as the book file
2. **Verify library type**: Ensure library type matches content (ebook vs. audiobook)
3. **Force rescan**: Use the "Force Rescan" option to re-import all metadata
4. **Check logs**: Review Bookhoard logs for parsing errors
### Incorrect Metadata
**Problem**: Imported metadata is wrong or incomplete.
**Solutions**:
1. **Fix in Calibre**: Edit metadata in Calibre, then rescan in Bookhoard
2. **Verify sidecar content**: Open `metadata.opf` in a text editor to check content
3. **Check date formats**: Ensure dates are ISO format (YYYY-MM-DD)
4. **Re-scan**: Force rescan to re-import from updated sidecar
### Missing Series Information
**Problem**: Books in a series don't show series info.
**Solutions**:
1. **Check Calibre**: Verify series is set in Calibre
2. **Check sidecar**: Ensure `calibre:series` and `calibre:series_index` are in `metadata.opf`
3. **Re-scan**: Force rescan to update series info
### Performance Issues
**Problem**: Scanning takes a long time with Calibre library.
**Solutions**:
1. **Large libraries**: Initial scan may take time; subsequent scans are faster
2. **Network storage**: Scanning over network is slower; use local storage if possible
3. **Watch mode**: Enable watch mode for real-time updates instead of full rescans
## Best Practices
### 1. Keep Calibre as Primary Source
**Do**:
- ✅ Edit metadata in Calibre
- ✅ Rescan in Bookhoard to sync changes
- ✅ Use Calibre for library management
**Don't**:
- ❌ Edit `metadata.opf` files manually
- ❌ Modify metadata in Bookhoard if you plan to resync from Calibre
- ❌ Keep conflicting metadata sources
### 2. Organize with Tags and Collections
- Use **tags in Calibre** for genres, moods, status (To Read, Read, etc.)
- Create **collections in Bookhoard** for automatic organization
- Leverage both systems for different purposes
### 3. Regular Syncing
- Set up **watch mode** in Bookhoard for automatic updates
- Run **full rescan** after bulk edits in Calibre
- Keep metadata consistent between Calibre and Bookhoard
### 4. Backup Your Library
- Back up your Calibre library regularly
- Include both book files and `metadata.opf` files
- Test restore process periodically
## Advanced Usage
### Custom Calibre Columns (Future)
Bookhoard may support Calibre custom columns in a future release. This would allow you to import:
- Read status
- Favorite flags
- Custom metadata fields
- User-defined categories
Stay tuned for updates!
### OPDS Integration
You can access your Bookhoard library (including Calibre-imported books) via OPDS from Calibre-aware devices:
- Kobo e-readers
- KOReader
- Phone/tablet apps (KYBook, Chunky, etc.)
See the [Kobo Setup Guide](devices/kobo-setup.md) or [KOReader Setup Guide](devices/koreader-setup.md) for details.
## FAQ
**Q: Will Bookhoard modify my Calibre library?**
A: No. Bookhoard only **reads** Calibre metadata. It never modifies your Calibre library files or `metadata.opf` files.
**Q: Can I use both Calibre and Bookhoard?**
A: Yes! They're complementary:
- Use **Calibre** for library management, conversion, and device syncing
- Use **Bookhoard** for web access, sync across devices, and sharing
**Q: What if I don't use Calibre?**
A: Bookhoard works perfectly without Calibre. It will use embedded metadata from your book files, folder structure, and filenames.
**Q: Does Bookhoard import Calibre ratings?**
A: No. Ratings are **per-user** in Bookhoard. Calibre ratings reflect the owner's opinion, which may not match other users' opinions.
**Q: Can I edit Calibre metadata in Bookhoard?**
A: You can edit metadata in Bookhoard, but it won't sync back to Calibre. For permanent changes, edit in Calibre and rescan in Bookhoard.
**Q: Does this work with Calibre Web?**
A: Calibre Web uses the same `metadata.opf` files, so yes - Bookhoard can scan a Calibre Web library folder.
**Q: What about Calibre's "author sort" and "title sort"?**
A: Bookhoard has its own sorting logic and doesn't import Calibre sort fields. This allows for consistent sorting across all books.
## Resources
- [Calibre Website](https://calibre-ebook.com/)
- [Calibre User Manual](https://manual.calibre-ebook.com/)
- [Calibre Forum](https://www.mobileread.com/forums/forumdisplay.php?f=166)
- [Bookhoard GitHub](https://github.com/yourusername/bookhoard)
## Need Help?
- **Documentation**: See [User Guide](user-guide.md) for general Bookhoard usage
- **Troubleshooting**: See [Operations Guide](../operations/operations.md) for common issues
- **Developer Docs**: See [Developer Portal](../developer/development.md) for technical details
- **Issues**: Report bugs or request features on [GitHub Issues](https://github.com/yourusername/bookhoard/issues)