New Features
Quick metadata embed (#24)
New optional EMBED_METADATA environment variable. Many books don't need a conversion, but the tags embedded in their file are outdated, e.g. after fixing the metadata in Audiobookshelf. When set to "true", the app compares each single-file book's embedded tags against Audiobookshelf and triggers Audiobookshelf's own quick embed where they differ (the file is tagged in place, without a backup copy):
- Compared fields are the ones Audiobookshelf writes when embedding: title, author, album, narrator, genre, year and series. Fields that are empty in Audiobookshelf are not compared, because Audiobookshelf doesn't clear them in the file either
- Conversions take priority: a book that gets converted isn't embedded separately, since the conversion writes the metadata into the new file anyway
- Every embed is verified: once it's done, the book is rescanned in Audiobookshelf and compared again. Tags that still differ count as a failed attempt towards
MAX_CONVERSION_FAILURES, so a book can never be re-embedded endlessly - Audiobookshelf runs embeds one at a time in its own queue; at most 10 embeds from this app wait there at once, and embeds don't take conversion slots
- Embeds show up in the container log and in the conversion log (
type: "embed-metadata"with the updated fields)
Off by default — nothing changes for existing setups. Only books stored in their own folder are supported; a single audio file directly in the library folder can't be rescanned by Audiobookshelf and is skipped with a note in the log.
Keep separate m4b files from being merged (#25)
New optional DO_NOT_MERGE_M4B environment variable, contributed by @niddelicious. When set to "true", multi-file books that contain any .m4b file are skipped, so a folder of separate m4b episodes is no longer merged into one big file. Off by default.
Improvements
- Single-file books that were already checked are now re-checked automatically when they change in Audiobookshelf (e.g. edited metadata or a replaced file), instead of only after a container restart
- Conversion log entries now include a
typefield (encodeorembed-metadata)
Full Changelog: v1.8.0...v1.9.0