mirror of
https://github.com/advplyr/audiobookshelf.git
synced 2026-05-30 23:40:40 +02:00
[Enhancement]: Nested Series or add a whole Series to a collection #556
Open
opened 2026-04-24 23:12:43 +02:00 by adam
·
24 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
enhancement
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#556
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 @woolmonkey on GitHub (Jul 29, 2022).
Describe the feature/enhancement
So for books that have series or multiple series in it would be great to have a overall group then when you go there it shows you the Seasons then when clicking the Season it shows the book. Example the Dr. who books,
@advplyr commented on GitHub (Jul 29, 2022):
Do you have some idea of how this would look in the UI? It's a fine idea but the UI/UX is the difficult part.
@Benni-chan commented on GitHub (Jul 30, 2022):
maybe if a series could have its own metadata. once a series is created, add an edit button to the series to change the name, description, cover image (upload an image or select which cover should be used). (i know this should be a new request)
use the same multiselect for series, as you used for individual books. allow to add to a collection here.
not quite sure yet how to implement to collection view (haven't used it much). i think changing the order should only be allowed for whole series or books without a series.
@advplyr commented on GitHub (Jul 30, 2022):
For editing series there is a request open for this but doesn't include cover image like you mentioned. Changing the cover image of a series would be difficult in the UI because right now all the series are the same width which helps when calculating how many series display on a row/page.
It does seem that updating collections so they can store series as a single entity would be ideal for this but completely changes the collections data model so would be a big rewrite. We would have to really plan that out to make sure it's what we want first.
@chyron8472 commented on GitHub (Aug 3, 2022):
This would be a useful addition for certain cases where there are series within a series. Like in Star Wars there is Canon and Legends; in Star Wars Legends there is the Darth Bane Trilogy, the Thrawn Trilogy, and Rogue Squadron. In the Enderverse (the Ender's Game universe) there is the Ender Quintet, the Shadow Quintet, the First Formic War and the Second Formic War.
@wtanksleyjr commented on GitHub (Aug 4, 2022):
One way to implement "Nested Series" using only the current data structures would be to add a couple of UI actions to the current Series screen (and possibly also as a "..." menu to every Series displayed, currently you can do nothing with a Series except click to enter the Series screen).
In the current Series screen, you can currently see all books in the series, and mark all as read. Some new features might be:
This obviously doesn't do everything that complete support for nested series might imply, but it's a start and doesn't require data structure changes aside from the screen itself.
@andrewdunndev commented on GitHub (Sep 13, 2022):
Just to chime in with a use case: The Chronicles of Thomas Covenant is broken into sub-series.
@KaiStarkk commented on GitHub (Feb 27, 2023):
My issue #1501 was a duplicate of this.
Interested to understand how others are currently handling authors with sub-series, what is the workaround? I imagine this is something everyone must come across after a few days of using ABS.
@wtanksleyjr commented on GitHub (Feb 27, 2023):
An example of an author with nested subseries is Feist's Riftwar; even more complex is Forgotten Realms, which has a preposterous number of different authors (although I suppose if I tried to manage my Star Wars books I'd find it even more complex).
What I do right now is click into a book in the series and then click the series name, and then click "Collapse Series" in the top right (in the web interface, I don't think this is possible in the app). You will then see any book that belongs to a different series (as well as the main series) displayed with a number tag that's different-looking from the books that ONLY belong to the main series, and if there are multiple books belonging to the same "subseries" it'll show all of their numbers inside that number tag.
Anyhow, that's how you can SEE subseries. Being able to INPUT them is a completely different matter; right now there are two ways I know of. Either you can input them by hand (by bulk editing or individually, just add multiple series to each book), or you can use Match specifically from Audible (none of the other match engines provide series information) -- the latter is most convenient to me, although annoyingly inconstant (audible makes minor changes to series names all the time, like adding "The " to the beginning or " Series" to the end, or even changing upper to lower case, ANYTHING will make the new book not match series with all of the other books).
It's also possible to import multiple series into a book by creating the book with an ABS file, but I haven't experimented enough with it to be sure what other implications that has ... I spent some time trying, but wound up using OPF for other reasons, and OPF can't handle multiple series (that I know of). ABS files have some complexities I haven't figured out and I probably should.
@asoluter commented on GitHub (Mar 4, 2023):
A related request may be multi-author series which doesn't seem possible right now
@wtanksleyjr commented on GitHub (Mar 4, 2023):
I have a ton of multi-author series, Wheel of Time and Star Wars for
example. You have to make the books belonging to each author appear under
that author, and in my experience the series will be combined. Do you not
see that?
Adding multiple series to one book cannot be done from outside of the app,
but you can do it by hand-editing the books (including bulk editing). The
result will be subseries -- for example, I added a "Star Wars" series to
all my existing books, and when you open that series in the Library and
click "collapse series" you'll see all of the subseries shown together. You
can also see that result in the ABS files.
-Wm
On Fri, Mar 3, 2023 at 3:15 PM Ihor Sofiichenko @.***>
wrote:
@alexedwards565 commented on GitHub (Aug 4, 2023):
I am currently trying to implement Audiobookshelf as a tool to manage my Doctor Who Big Finish and Audiobook collection.
I am using a separate library to work around the multi author issue and am using the author as the field for the each series, For example: The 'Main Range', 'The Eighth Doctor Adventures' or 'Gallifrey'.
Then within that I am using a series for each season (Box Set / Release) of that range. For example within 'The Eighth doctor adventures' would be 'Series 1', 'Dark Eyes 1' or 'Stranded 2'.
That way each 'episode' appears as a separate book and has separate album art.
This works fine, although being able to use extra layers of categorisation would be good (Being able to combine all the Dark Eyes seasons for example, although I believe the sub series system can handle this well.)
I think this system will also be able to integrate my Doctor Who audio books when I have sorted that collection out.
It would be ideal to have a separate library type for this, with 'author' renamed to something more appropriate. My immediate approach would be to use TV as an analogue and go with series/season, although in a perfect world these would be configurable in the library settings.
I can see that outside of large extended universes like Doctor Who and Star Wars, a separate library may not be ideal. Perhaps being able to create and delete series separately to books and giving each series an independent options dialogue with a boolean option for multi-author series would be a good approach. This could also allow us to set artwork for each series in the future (which I would love)! This could be a lot of work on the back end though, I truly have very limited experience in that regard.
@Hallo951 commented on GitHub (Sep 10, 2023):
I have an idea how to solve the problem with the subseries in a simple way.
Currently, I do it in such a way that I also enter the main series in the "Series" field for each sub-series. This has the effect that all sub-series are displayed within the main series when the "collapse series" option is activated.
The problem with this solution is that in this case the subseries are shown twice in the library view. Once within the main series and once as independent series in the general library view.
One solution to this problem would be to mark the sub-series. To do this, one would have to enter a kind of code word, e.g. "sub-series", in the series input field where one enters the series name(s) for an audio book. This firmly defined code word causes Abs not to create a new series, but to remove the series marked in this way from the general library view but not from the main series. The series marked in this way would then only be visible within the main series and would no longer appear twice in the database.
@KaiStarkk commented on GitHub (Nov 6, 2023):
It looks like this has been implemented @advplyr is that right? If so, amazing news! Will give it a try tonight.
https://www.audiobookshelf.org/guides/subseries/
@KaiStarkk commented on GitHub (Nov 6, 2023):
It’s really close to being perfect for my use case and those described above.
Couple points of feedback:
would be great if the scanner could infer this from folder structure
would be great to have a checkbox in series view for “Hide subseries” (i.e. only show series that are top level series. I guess in ABS implementation that would mean the union of: “series that contain other series”, and “series where books are not contained in any other series”)
Also noticed that the app doesn’t have sort and filter options in the series tab, is that a bug?
@MikeBishop commented on GitHub (Nov 29, 2023):
@KaiStarkk, that's more or less how it's been for a while -- you can add a book to multiple series. The remaining UI ask is being able to hide the subseries in contexts where the overarching series also appears.
@KaiStarkk commented on GitHub (Nov 30, 2023):
@MikeBishop Am I correct that you still have to manually add it to multiple series, and that the scanner doesn’t infer this from folder structure? For example using @andrewgdunn ’s example above, Lord Fouls Bane is only given the series The First Chronicles. It isn’t given the series The Chronicles of Thomas Covenant, unless I’m mistaken.
I’ve tried a rescan and rematch, still doesn’t seem to work.
@wtanksleyjr commented on GitHub (Nov 30, 2023):
Scan can only add a book to multiple series if your scanner supports
multiple series -- so the directory-name scanner and ODM scanner cannot do
that, but the Audiobookshelf metadata scanner can (you can create those by
hand, which I do from Libation's data).
Matching can add a book to multiple series, but only if your data source
happens to HAVE them. I think Audible is the only source that actually
includes multiple series, and it's inconsistent about them and changes the
series names in frustrating ways at random times (like adding the word
"The" to the front, or the word "Series" to the back). Most of the time the
multiple series are trivial, like one being chronological and the other
publication-order. But sometimes you luck out. I'm actually not remembering
any examples :(.
So generally you have to maintain your own series. I do this with Great
Courses, Star Wars, and Discworld, for example.
-Wm
On Wed, Nov 29, 2023 at 4:20 PM Kieran Hannigan @.***>
wrote:
@KaiStarkk commented on GitHub (Dec 1, 2023):
Yep sounds good, so the remaining enhancement request is as per
https://github.com/advplyr/audiobookshelf/issues/870#issuecomment-1794449502
@wtanksleyjr commented on GitHub (Dec 1, 2023):
Specifically what is the request? I don't see anything aside from observing that directory structure cannot specify multiple series. Do you want it to? Do you have any ideas for how it could?
My answer was intended to offer the only two ways I know of to add two series to one book, aside from manual entry: either use ABS's metadata.json format, or luck out with running a Match using Audible.com.
@KaiStarkk commented on GitHub (Dec 1, 2023):
If the folder structure is:
Then:
The series property on Book should include A and B.
@KaiStarkk commented on GitHub (Dec 1, 2023):
Extending the wishlist: ideally any number of folders nested between the Book and the Author folder should be added, e.g.:
Should add A, B, C, D and so on to the series property of the Book.
@KaiStarkk commented on GitHub (Dec 16, 2023):
Related to #2092
Would require changes to the data model per my comment there, as well as an update to scandir() as below:
https://github.com/advplyr/audiobookshelf/blob/0a08f479429a2ed4945a1550ae8ee6ba0851b759/server/utils/scandir.js#L238
@KaiStarkk commented on GitHub (Dec 16, 2023):
@advplyr I've had a go at showing the "blue sky pipe dream" UI, if #870 and #2092 were resolved with a hierarchical series data model:
@DoctorDalek1963 commented on GitHub (Oct 26, 2025):
Is there any progress on series enhancement? I think the simplest solution is to allow series to be hidden, so that sub-series can be used to organise items, but don't show up in the series tab. For example, I would have the overarching "Gallifrey" series, and several other series "Gallifrey Season 1", "Gallifrey Season 2", etc., which are all hidden. So only the overarching series appears in the UI, but the sub-series can be collapsed and each have their own page, accessible from the parent series. Of course each item in the sub series would also be part of the parent series.
This is exactly the same as the current sub-series solution, but with the ability to hide the sub-series so that they don't clutter up the library. This solution seems easier to implement than some of the more ambitious ideas, and would probably satisfy most people who want this.