mirror of
https://github.com/advplyr/audiobookshelf.git
synced 2026-05-30 23:40:40 +02:00
[Bug]: ePub books, in unique folders combined into single entry #2425
Closed
opened 2026-04-25 00:06:58 +02:00 by adam
·
9 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
No Label
bug
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#2425
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 @andrewlow on GitHub (Dec 15, 2024).
What happened?
I'm primarily using audiobookshelf to manage ePub books.
I recently grabbed the Humble Bundle of John Scalzi books - 21 of them.
They initially came with not very friendly names.
Ok - so I don't expect the matching to work nicely here - so of course I took the time to rename all of the files to a sensible "directory" per book.
I will note - Starter Villain was already in my library ..
Now, I also got here via iteration - I first tested the Redshirts would work ok - and it did. So I had a Library with Redshirts and Starter Villain
However, after copying the nicely named directories into the location that audiobookshelf is watching.. I got this
What did you expect to happen?
I expected to see my library have all 21 new books listed individually.
This has worked for other authors - but I have a small library, and limited test cases.
Steps to reproduce the issue
{Book name as folder name}/{Book name} - {Author name}.epubAudiobookshelf version
2.17.5
How are you running audiobookshelf?
Docker
What OS is your Audiobookshelf server hosted from?
Linux
If the issue is being seen in the UI, what browsers are you seeing the problem on?
Firefox
Logs
No response
Additional Notes
No response
@andrewlow commented on GitHub (Dec 15, 2024):
Exploring the 'multi entry' version of Starter Villain, I can see that it has somehow combined many epubs into a single entry
@andrewlow commented on GitHub (Dec 15, 2024):
I did find an old bug (close) like this - https://github.com/advplyr/audiobookshelf/issues/834 but it wasn't helpful.
@andrewlow commented on GitHub (Dec 15, 2024):
I can't seem to find the 'Book Scanner' settings in the web app https://www.audiobookshelf.org/guides/book-scanner
Did this go away (and the doc is old?) - or am I just not finding it?
@nichwall commented on GitHub (Dec 15, 2024):
This can happen if you have the watcher enabled and the book is created/updated in the database automatically. If you scroll through all of the files in the table in ABS, do you see any books which are not in a folder correctly? Once the files are attached to the book, there isn't really a good way to remove them from the book due to ABS alerting users of "missing files" in case something gets deleted on accident.
To force the database to fix the library item, you can delete the problem book from ABS (make sure the checkbox is unmarked to not delete the files from your file system) and scan the library again.
The "metadata order of precedence" is in the settings for the library. Settings -> Libraries -> Edit -> Scanner tab.
@andrewlow commented on GitHub (Dec 15, 2024):
Thanks for the reply.
I do have the watcher enabled.
I'm do not understand this comment.
I know exactly what the filesystem looks like - every book is a single .epub file, and each of those .epub files are in a unique directory (one per book).
Selecting the 2nd copy of 'Starter Villain' which was the messed up entry - and NOT allowing the deletion of the files - then deleting the entry. Then manually re-scanning the library resulted in all of the 'new' books being found and added correctly. [This fixed my problem]
I've disabled the watcher - as it seems like it was my root problem here. I can live with manually scanning to find new books, I rarely add them.
Thank you for pointing this out. I was able to find this.
It is unclear if this is a bug with the "Watcher" or if I'm doing things in a weird way. If there is more data I can gather to help identify the issue I'm willing to dig around, otherwise we can close this as my problem is solved.
@advplyr commented on GitHub (Dec 21, 2024):
If I'm understanding this correctly the steps you mentioned to reproduce the issue is missing the most important step.
Let me know if this is incorrect.
When you first added those epubs in your file system they were all under a single subfolder.
The watcher will scan those in as a single book.
Then you moved the epubs into separate folders.
The watcher will detect the file path changed on those files and update the file paths.
Does that sound right?
@andrewlow commented on GitHub (Dec 23, 2024):
Darn - I did initially have them all as a single sub-folder.. but with different names.
When I moved them to unique sub-folders - I changed the names of each of them. Yes - it was a
mvoperation to movebut yes - if the system was able to identify the file by something other than the name.. it could have all been a single ebook...
@advplyr commented on GitHub (Dec 23, 2024):
Abs uses the filesystems inode value so that if you rename the file Abs knows it is the same file.
This case is specific to the ebooks already being in a subfolder and already being scanned into the system. Since you can have a book in a folder that has subfolders like "CD01" to break out the files Abs allows you to move ebook/audio files into subfolders of the existing book.
I'm not sure if that makes sense. We don't necessarily want to remove the existing book that was scanned in and create separate books anytime an ebook/audio file is moved into a subfolder
@andrewlow commented on GitHub (Dec 23, 2024):
Well - if it's using the inode, yeah - renaming the file doesn't change that. I clearly just got confused initially when I bulk added the files - then didn't 'reset' things by deleting them - and re-creating them as a new thing.
Let's close this issue.