mirror of
https://github.com/advplyr/audiobookshelf.git
synced 2026-05-30 23:40:40 +02:00
[Enhancement]: Ebook-specific library options #1529
Open
opened 2026-04-24 23:48:59 +02:00 by adam
·
12 comments
No Branch/Tag Specified
master
book_tags_genres_dedupe
episode_download_fallback
Issue-4540-SortBy-StartedDate-and-FinishedDate
episode_meta_tagging
fix_authorize_race_condition
redirect_transcode_requests
progress_updated_sort
fix_ereader_socket_event
fix_change_empty_root_password
fix_podcast_session_track_index
fix_set_token
session_modal_user
localize_durations
fix_oidc_create_user
jwt_auth_refactor
fix_scanner_deleting_single_file_books
fix_mediaprogress_updatedat_2
experimental_next_client
podcast_episode_duration
episode-timestamps-clickable
book_author_secondary_sort_title
podcast_useragents
pathexists_user_access
fix_pathexists_join
book_author_secondary_sort
clean_duplicate_mediaprogress
sanitize_html_description
trix_prevent_attachments
check_path_api_fix
fix_mediaprogress_updatedat
increase_express_json_limit
fix_dockerfile_nunicode
search_episodes
audiobook_tools_update
episode_secondary_sorts
hls_stream_url_update
new_session_track_endpoint
audiobook_tools_enhancements
watcher_rescans_update
player_track_tooltip
fix_exclude_prefixes_crash
socket_item_events
fix_podcast_episode_scanner_promise
new_stats_controller
count_cache_for_userpermissions
parsing-opf-v3
validate_migration_files
fix-quick-match-all-crash
fix-chapter-end-sleep-timer
stringify_sequelize_query
remove-col-ambiguity
fix_next_prev_edit_description
details_trim_whitespace
fix_content_url_basepath
fix_logger_fatal
progress_bar_visibility
batch-edit-populate-map-details
feed_generator_updates
bookmark-modal-updates
migrate-library-item-in-scanner
migrate-new-library-items
migrate-podcasts-new-library-item-2
migrate-podcasts-new-library-item
fix-remove-episode-from-playlist
playback-session-use-new-library-item
refactor-library-item
fix-heatmap-caption
feed-episodes-upsert
share-media-player-media-session-api
remove-old-playlist
remove_old_collection_object
plugin-implementation-demo
feed_migration
refactor-feeds-from-item
fix_remove_authors_no_books
v2.17.3-fk-constraints-migration
migrations-first-upgrade
sqlite_2
feature/nuxt-target-server
waveform
sqlite
playlists
video
v2.35.1
v2.35.0
v2.34.0
v2.33.2
v2.33.1
v2.33.0
v2.32.1
v2.32.0
v2.31.0
v2.30.0
v2.29.0
v2.28.0
v2.27.0
v2.26.3
v2.26.2
v2.26.1
v2.26.0
v2.25.1
v2.25.0
v2.24.0
v2.23.0
v2.22.0
v2.21.0
v2.20.0
v2.19.5
v2.19.4
v2.19.3
v2.19.2
v2.19.1
v2.19.0
v2.18.1
v2.18.0
v2.17.7
v2.17.6
v2.17.5
v2.17.4
v2.17.3
v2.17.2
v2.17.1
v2.17.0
v2.16.2
v2.16.1
v2.16.0
v2.15.1
v2.15.0
v2.14.0
v2.13.4
v2.13.3
v2.13.2
v2.13.1
v2.13.0
v2.12.3
v2.12.2
v2.12.1
v2.12.0
v2.11.0
v2.10.1
v2.10.0
v2.9.0
v2.8.1
v2.8.0
v2.7.2
v2.7.1
v2.7.0
v2.6.0
v2.5.0
v2.4.4
v2.4.3
v2.4.2
v2.4.1
v2.4.0
v2.3.5
v2.3.4
v2.3.3
v2.3.2
v2.3.1
v2.3.0
v2.2.23
v2.2.22
v2.2.21
v2.2.20
v2.2.19
v2.2.18
v2.2.17
v2.2.16
v2.2.15
v2.2.14
v2.2.13
v2.2.12
v2.2.11
v2.2.10
v2.2.9
v2.2.8
v2.2.7
v2.2.6
v2.2.5
v2.2.4
v2.2.3
v2.2.2
v2.2.1
v2.2.0
v2.1.5
v2.1.4
v2.1.3
v2.1.2
v2.1.1
v2.1.0
v2.0.24
v2.0.23
v2.0.22
v2.0.21
v2.0.20
v2.0.19
v2.0.18
v2.0.17
v2.0.16
v2.0.15
v2.0.14
v2.0.13
v2.0.12
v2.0.11
v2.0.10
v2.0.9
v2.0.8
v2.0.7
v2.0.6
v2.0.5
v2.0.4
v2.0.3
v2.0.2
v2.0.1
v1.7.2
v1.7.1
v1.7.0
v1.6.0
v1.5.5
v1.5.0
v1.4.11
v1.4.9
v1.4.7
v1.4.6
v1.4.4
v1.4.2
v1.4.0
v1.4.1
v1.3.4
v1.3.3
v1.3.1
v1.2.8
v1.2.6
v1.2.5
v1.2.4
v1.2.1
v1.1.15
v1.1.14
v1.1.13
v1.1.12
v1.1.11
v1.1.10
v1.1.9
v1.1.8
v1.0.0
0.9.61-beta.0
0.9.61-beta
Labels
Clear labels
authentication
backlog
bug
chapter editor
config-issue
ebooks
encoding/embedding
enhancement
help wanted
listening sessions & progress
planned
possible plugin
progress sync
pull-request
sorting/filtering/searching
unable to reproduce
upload
users & permissions
waiting
Mirrored from GitHub Pull Request
Milestone
No items
No Milestone
Projects
Clear projects
No project
Assignees
adam (Adam Melkus)
Clear assignees
No Assignees
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: starred/audiobookshelf#1529
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Originally created by @ScyllPoesis on GitHub (Nov 16, 2023).
Describe the feature/enhancement
This is a very minor enhancement, but I figured I may as well lodge it all the same.
I got started using ABS as most, looking for a simple way to share and organize my audiobook collection. Over the past couple months however, as my friends and I have begun using it more heavily and regularly, our use has shifted pretty significantly to the ease of use in eBook sharing and tracking.
One of the little things one of my users keeps bringing up is how the eBook library says things like "Continue Listening" or has a "Narrators" tab. In the library options there is an "Audiobooks Only" setting, that handles importing filters and the like; I figure a similar setting (or mode, etc.) can be added for "eBooks Only". Then, if this setting is true, you can give a more customized view of the library when it's selected (changing "Listening" to "Reading", no need for narrators, etc.)
Again, a little flavor issue, so feel free to ignore or throw on the pile for way later, but just some feedback to pass along. Otherwise we're very happy with the support you've already given eBooks! Cheers and thanks for your hard work!
@advplyr commented on GitHub (Nov 16, 2023):
I think it makes sense to add an ebook only library setting.
The "Continue Reading" and "Read Again" shelves were added but removed in v2.3.x due to performance issues on the home page when changing databases. The original issue for that was here https://github.com/advplyr/audiobookshelf/issues/1782
It will be easier to add those back in if we have an ebook only library setting then we don't have to do additional queries.
@danielb2 commented on GitHub (Aug 10, 2024):
ebooks are single files and do not need to be organized the same way in folders. For example, a common way to organize files is having files in subfolders in authors for epub, but not a subfolder per book. Current behavior means books are grouped together which is undesired.
Consider the difference here:
Example result current behavior:

Clearly these should be separate books, and I think for ebooks a simple recursive search will do.
Alternatively instead of a ebooks only setting, just handle epub differently
Future Implementation (Screenshot)
add ebooks only option here to force simple recursive scan for ebooks. I'm not sure if cbr or other formats are handled differently, but needing a folder per book for epub doesn't make so much sense
@advplyr commented on GitHub (Aug 10, 2024):
There are a bunch of other factors to consider that make it difficult to simply handle epub files differently. I would like to support more folder structure options in the future.
@danielb2 commented on GitHub (Aug 10, 2024):
What are some of the concerns?
@advplyr commented on GitHub (Aug 10, 2024):
Storing metadata/covers with books.
Ebook file in a subfolder that also has subfolders with other ebook or audio files.
Subfolders that have audio file(s) and multiple ebook files.
@danielb2 commented on GitHub (Aug 10, 2024):
I'll just throw some ideas out there...
Seems it's using the embedded image file now. You mean as a secondary source ? Naming convention can be same filename but different extension (which is a common convention). i.e title1.epub and title1.jpg, title2.epub, title2.jpg. but I believe most ePub has it embedded anyway.
The app could also support embedding so the user can set their own cover.
@advplyr commented on GitHub (Aug 10, 2024):
Abs supports fetching covers from external sources and you can choose if you want to store that cover with the item in the same folder. Also store metadata.json file with the item.
If all epub are treated as a separate book than that would be removing the feature of allowing audiobook and ebook to be the same item in Abs. It would also remove the feature of having supplementary ebook files alongside of audiobooks/ebooks.
@danielb2 commented on GitHub (Aug 11, 2024):
would that be acceptable behavior for when a
Ebook onlyswitch is toggled for a library?@petruut commented on GitHub (Aug 15, 2024):
seems like a good idea to make Ebooks a first-class feature
@LadyHaywood commented on GitHub (Jan 29, 2025):
I was just looking if audiobookshelf could do exactly this. I wanted to make two separate libraries (one for audiobooks and the other for ebooks) but have them both in the same author folder.
@Timo-1979 commented on GitHub (May 8, 2025):
Maybe it would be good to handle .epub and .mp3 in the same way and allow single files (epub/mp3) in the Authors-Folder ord Series Folder as separate books. Like the diretory structure at the end.
This would be great for storing epub in the same directory as the audiobooks, without the need to have directories for just one file. And it would also enable to store singele file books also directly into the authors/series folder.
And with the naming convention (same base-name, but different extension) - it would also be possible to store some addtional file alongside the book.
Maybe this could be configureable scanner-settings (files in authors and series folders are separate books). (A Series folder is located in a Authors-Folder and contains at least one sub-folder (that's not matching "(CD|Disc|Disk)\n+"))
With this directory-structure support, there shouldn't be any problem to add the filter-option: ebook-only.
@Timo-1979 commented on GitHub (Dec 14, 2025):
With the structure proposed by me in the last comment. It would be possible to include metadata for authors and series. In folders for authors the „metadata.json“ could contain metadata about the author. A file „portrait.png“ will hold the photo of the author.
In a series folder a metadata.json could hold metadata about the series (maybe a short general description of the series) and an image(s) for the series.
Metadata for single-file-books could be hold in a .json file with the same base name (i.e.: Book_4.json and )
Series_Book_04.json).