Dibbes 514 Posted August 24, 2025 Posted August 24, 2025 Add structured eBook metadata fields to Emby so books can be indexed, searched, filtered, sorted, synced, and surfaced with the same quality as video and audio libraries. Problem Current handling of eBooks in Emby is limited. Important fields are missing or unindexed, which makes large libraries hard to organise. Users who migrate from Calibre or other managers lose rich metadata, reading progress, and annotations. Proposed solution Introduce native models, scanners, UI, and API support for the following fields. Core fields Title. Main identifier for the eBook. Used in listing and searching. Author/Editor. One or many. Essential for grouping and sorting. Language. For filtering and display. Series. Series name and number, sortable. File Format. EPUB, MOBI, PDF, AZW3, CBZ, etc. Drives renderer choice. Identifier. Unique ID next to ISBN, such as, DOI, UUID, or an internal GUID. File Path / Location. Absolute path for local and NAS items. Optional fields Publisher. Useful to separate commercial and indie content. Subject / Genre. Fiction, Non-fiction, Sci-Fi, Thriller, etc. Tags / Keywords. Freeform labels for flexible search and smart lists. Reading Progress. Per user last read location, bookmarks. DRM Status. Enum: Unknown, None, Present. Word Count / Page Count. For size filters. Rating. Per user and external ratings. Last Accessed / Last Read. Per user activity to support “Continue reading”. Annotations / Highlights. Per user notes and highlights, exportable. Data model Add a new BookItem entity that extends the existing BaseItem. Scalars: Title (string), Language (ISO 639-1), SeriesNumber (decimal), DateAdded (datetime), DatePublished (date), Format (enum), DrmStatus (enum), WordCount (int), PageCount (int), RatingExternal (float), RatingUser (float), LastAccessedUtc (datetime). Collections: Authors (list of person refs), Editors (list), Identifiers (list of type:value), Tags (list), Subjects (list). Per-user: ReadingProgress (location plus percent), Bookmarks (list), Annotations (list of location plus text and timestamp). Paths: Path (string), LibraryId (guid). Indexing and search Index Title, Authors, Series, Language, Publisher, Tags, Subjects, Identifiers. Sort keys: Title, Author, SeriesName+SeriesNumber, DatePublished, DateAdded, PageCount, WordCount, Rating. Ingestion and metadata Add an eBook library type in Library Setup with supported extensions and a priority order: EPUB, MOBI, AZW3, PDF, CBZ, CBR. Parse embedded EPUB OPF metadata, PDF XMP, and sidecar .opf files produced by Calibre. Optional metadata providers: Google Books, Open Library, ISBNdb, Goodreads export files. Providers should map cleanly to core fields and never overwrite user edits unless requested. Support Calibre migration: read Calibre library structure, .opf sidecars, and metadata.db when available in read-only mode. UI and UX Library views: Grid, list, and series views with badges for format, language, and DRM. Detail page: Title, series breadcrumb, authors, description, identifiers, subjects, tags, publisher, publication date, format, page count. Actions for “Read”, “Download”, “Mark as finished”, “Add bookmark”. Reader integration: For EPUB and PDF, an in-browser reader that persists per-user progress, bookmarks, and annotations. If a built-in reader is out of scope, expose progress endpoints so external readers can update state. Filters: Language, series, publisher, genre, tags, format, size, DRM, rating, date added, date published. Smart playlists and collections using the new fields. API contracts Extend the public API: GET /Items?IncludeItemTypes=Book with new query filters series, language, publisher, format, drmStatus, minPageCount, maxPageCount, subject, tag. GET /Users/{id}/Books/{itemId}/Progress and POST to update progress, bookmarks, and annotations. POST /Items/{itemId} allows updates to book metadata with field-level overwrite controls. WebSocket events for progress updates to sync multi-device reading. Permissions and privacy Store annotations and progress per user. Do not expose one user’s notes to others unless explicitly shared. Allow metadata locking at the item and field level. Migration and compatibility Backfill DateAdded from file system timestamps if no prior value exists. Detect duplicates by Identifier or by fuzzy match on Title, Author, Series, and Page Count. Do not break existing audio-book flows. Keep AudioBook separate from Book. Performance considerations Defer parsing heavy PDFs until requested or during low-priority background tasks. Cache OPF and XMP reads. Respect library scan schedules. Acceptance criteria A user can import a mixed EPUB, MOBI, and PDF library and see correct Title, Author, Language, Series, Format, Identifier, Path, Date Added, and Date Published without manual edits. A user can filter by Language and Series, sort by Date Published, and search by ISBN. Reading progress persists per user across devices for EPUB. Optional fields are editable in the UI and via API and are indexed for search. Export of per-user annotations to JSON is available. Nice to have, phase 2 OPDS server for books using the new metadata. Goodreads or Open Library sync for ratings and shelves. Calibre two-way sync for edits and progress. 5
Luke 42077 Posted September 4, 2025 Posted September 4, 2025 These look like AI generated suggestions? Because half of these are already in place.
Dibbes 514 Posted September 4, 2025 Author Posted September 4, 2025 4 hours ago, Luke said: These look like AI generated suggestions? Because half of these are already in place. Not ai generated, just ai spellchecked. I've added for example the ingestion part that is already in place, for completeness to have the full overview. It made more sense to me without having to explain which part to have where. 1
rckoegel 10 Posted September 25, 2025 Posted September 25, 2025 Author and File Format options are basic necessities for just any eBook collection! Series would follow pretty closely for anyone who collects books in a Series (which is very common). I'm really confused as to how the Book Library has existed as an option for as long as it has without even an Author option, or functional Metadata Downloaders. I tried migrating to Emby from PLEX many many years ago because I wanted my eBook accessible remotely on the same Media Server as my Movies and TV Shows, but I decided not to stick with it because it wasn't very functional. I transitioned to eBook reading in 2010 and haven't looked back, but have always been disappointed with eBooks exclusion from media center/managers. Books are the OG Media! Thanks to whomever is finally getting some work done on this project. I've reinstalled Emby from scratch and am playing with it again, but the Metadata system still needs some very simple things addressed. So I'm not all in yet. 3 3 1
Canaletto 3 Posted December 14, 2025 Posted December 14, 2025 The simplest solution may be to catalog with Calibre, then each directory containing an ePub should contain a cover.jpg file and an xml metadata.opf file. All that would be needed is a plugin that can import this data without further cataloging by Emby. 1
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now