170 lines
No EOL
5.4 KiB
Markdown
170 lines
No EOL
5.4 KiB
Markdown
# Lectern
|
|
|
|
An app to manage individual audiobooks.
|
|
|
|
Once app is opened, user can drag audiobook onto app, or click on a button to open xdg portal (File chooser).
|
|
|
|
Audio books come in a dir with many mp3's, aac, wav, flac etc. or as m4b files
|
|
|
|
Once audiobook is selected/chosen in the app. User can edit the metadata manully, or search a providor for metadata then edit it. Chnage cover, add/edit chapters
|
|
|
|
Then save it all as a m4b file with everything included in one file.
|
|
|
|
## Metadata
|
|
|
|
Search by using title, author or the ASIN or ISBN number (may have to choose region)
|
|
|
|
Possible search providers
|
|
audible.com
|
|
Google Books
|
|
iTunes
|
|
Open Library
|
|
FantLab.ru
|
|
audible.ca
|
|
|
|
Example of possible metadata fields to be filled out by search, or audible.
|
|
Title
|
|
Subtitle
|
|
Author(s)
|
|
Series (and order 1, 2, 3, 3.5, 4, etc)
|
|
Publich Year
|
|
Description
|
|
Genre
|
|
Tags
|
|
Narrator(s)
|
|
ISBN
|
|
ASIN
|
|
Publisher
|
|
Language
|
|
Explicit (yes/no)
|
|
Abridged (yes/no)
|
|
|
|
See image [meta-data-form.jpg](./plan/meta-data-form.jpg)
|
|
|
|
## Cover (optional)
|
|
|
|
User can manually choose a book cover, or use a providor.
|
|
|
|
Search,download and choose cover art from provider(s)
|
|
audible.com
|
|
Google Books
|
|
iTunes
|
|
Open Library
|
|
FantLab.ru
|
|
AudiobookCovers.com
|
|
|
|
Search by using one or more of the following fields
|
|
Title
|
|
ASIN or ISBN
|
|
Author
|
|
|
|
## Chapters (Optional)
|
|
|
|
Attempt to map chapters to the book
|
|
|
|
Have button to get chapters from providor (Audible.com or Audible.ca). If there are other possible providers let me know.
|
|
|
|
Provide option to set chapter titles from source files (if they are named like "Chapter 1.mp3", "Chapter 2.mp3", etc)
|
|
|
|
Example 1 - if there are 70 mp3's, and 70 chapters assume each file is a chapter and ask user to accept
|
|
|
|
Example 2 - user choose audiobook that is a m4b file
|
|
provider has a chapter list with time stamps. Ask user to accept
|
|
|
|
Allow user to edit chapters manually, even after looking up from provider. Like Audiobookshelf web client.
|
|
User can do the following
|
|
|
|
Add, edit, remove chapters
|
|
Editing chapters includes editing chapter title. and the start timestamp of the chapter.
|
|
Global shift times of all chapters
|
|
lock chpters (this makes chapter non editable from all actions including global time shift)
|
|
shift times of individual chapters by -1 or +1, or just edit the start time.
|
|
Play the chapter. So user knows the mapping is correct.
|
|
|
|
See image [chapters.jpg](./plan/chapter-edit.png)
|
|
The icons to the right of the title fields in the image.
|
|
From left to right "Lock Chapter" "Remove Chapter" "Insert Chapter Below" "Play Chapter"
|
|
|
|
## Conversion
|
|
|
|
Once user is satisfied with metadata, cover, chapter, they can create a m4b file where all the selected info will be included.
|
|
|
|
If Local Library value (see settings) is set automatically populate where file will be saved
|
|
|
|
If Local Library value is NOT set force user to choose where to save file (xdg portal file chooser). default save filename {Title}.m4b
|
|
|
|
Generate m4b file (include everything we added)
|
|
|
|
## Settings
|
|
|
|
### Local Library (optional)
|
|
|
|
Allow user to state where they wants to store audiobooks on their local system. If value exists m4b files are converted there
|
|
|
|
### Media Management
|
|
|
|
Where and how do we save the file?
|
|
|
|
#### If Local Library value is set
|
|
|
|
How does user want to store files on their system?
|
|
|
|
{Author} - Author/narrator name
|
|
{Series} - Series name
|
|
{Title} - Book title
|
|
{SeriesNumber} - Position in series
|
|
{DiskNumber} or {DiskNumber:00} - Disk/part number (00 = zero-padded)
|
|
{ChapterNumber} or {ChapterNumber:00} - Chapter number (00 = zero-padded)
|
|
{Year} - Publication year
|
|
{Quality} - Audio quality
|
|
|
|
Examples of how user can set it up in Lectern
|
|
{Path to Local Library}/{Author}/{Title}.m4b
|
|
{Path to Local Library}/{Author}/{Series}/{Title}-Book {SeriesNumber}.m4b
|
|
{Path to Local Library}/{Author}/{Series}/Book {SeriesNumber}- {Title}.m4b
|
|
|
|
Example of LOTR "The Fellowship of the Ring" & "The Hobbit"
|
|
{Path to Local Library}/{Author}/{Series}/{SeriesNumber}- {Title}.m4b
|
|
{Path to Local Library}/J.R.R. Tolkien/The Lord of the Rings/1- The Fellowship of the Ring.m4b
|
|
{Path to Local Library}/J.R.R. Tolkien/The Lord of the Rings/0.5- The Hobbit.m4b
|
|
|
|
|
|
### Audiobookshelf settings (optional)
|
|
|
|
If set, once m4b conversion is completed the book is uploaded to AudioBookshelf server
|
|
|
|
|
|
## Plan
|
|
|
|
[01 - Architecture](./plan/01-architecture.md)
|
|
[02 - UI](./plan/02-ui.md)
|
|
[03 - Metadata](./plan/03-chapter-logic.md)
|
|
[04 - Conversion](./plan/04-conversion.md)
|
|
[04 - play Chapters](./plan/04-play-chapters.md)
|
|
[05 - ffprobe-files](./plan/05-ffprobe-files.md)
|
|
[06 - ABS-logic](./plan/06-abs-logic.md)
|
|
[07 - covers](./plan/07-covers.md)
|
|
[08 - baking](./plan/08-baking.md)
|
|
|
|
## Look
|
|
|
|
I want to add tabs so the window is not so congested
|
|
|
|
Meta Data (Manually edit)
|
|
Cover (Manually upload or choose cover from providor)
|
|
Chapters (Manually edit or match to providor)
|
|
Match (search providor to get metadata and cover art)
|
|
Convert (click to start conversion)
|
|
|
|
## Progress
|
|
|
|
The core functionality of Lectern is now implemented, featuring a tabbed interface for organizing the audiobook creation workflow.
|
|
|
|
- [x] **UI Tabs**: Implemented Metadata, Cover, Chapters, and Convert tabs.
|
|
- [x] **Metadata**: Integrated Audible API for searching book details.
|
|
- [x] **Cover Art**: Async loading of cover art from search results.
|
|
- [x] **Chapters**: Functional chapter editor with inline editing, locking, and global time shifts.
|
|
- [x] **Conversion**: M4B generation using FFmpeg with embedded chapters and tags.
|
|
- [x] **Publishing**: Direct upload to Audiobookshelf with library scan trigger.
|
|
|
|
[Progress Details](./PROGRESS.md) |