advplyr / audiobookshelf

Self-hosted audiobook and podcast server
https://audiobookshelf.org
GNU General Public License v3.0
6.69k stars 472 forks source link

[Enhancement]: Nested Series or add a whole Series to a collection #870

Open woolmonkey opened 2 years ago

woolmonkey commented 2 years ago

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 2 years ago

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 2 years ago

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 2 years ago

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 2 years ago

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 2 years ago

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:

  1. A heading under which is all related series. (This means all series to which any of the books in this series belong, so if I'm looking at the original Thrawn Trilogy I'd two rectangles for "Star Wars" and "Star Wars: Rogue Squadron", since at least some books I'm looking at belong to at least one of those as well as to "The Thrawn Trilogy".)
  2. An action to change the name of the current series (which means each book belonging to the current series will be changed). This might have the effect of merging it with another series - fixing the old problem where I have 4 books in "Dresden Files" and 5 in "The Dresden Files" and no simple way to merge them except editing them one at a time.

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.

andrewgdunn commented 2 years ago

Just to chime in with a use case: The Chronicles of Thomas Covenant is broken into sub-series.


[Donaldson, Stephen]$ tree -d
.
├── The Chronicles of Thomas Covenant
│   ├── The First Chronicles
│   │   ├── Book 1 - Lord Fouls Bane (1977)
│   │   ├── Book 2 - Illearth War (1977)
│   │   └── Book 3 - Power That Preserves (1979)
│   ├── The Last Chronicles
│   │   ├── Book 1 - The Runes of the Earth (2004)
│   │   ├── Book 2 - Fatal Revenant (2007)
│   │   ├── Book 3 - Against All Things Ending (2010)
│   │   └── Book 4 - The Last Dark (2013)
│   └── The Second Chronicles
│       ├── Book 1 - Wounded Land (1980)
│       ├── Book 2 - The One Tree (1982)
│       └── Book 3 - White Gold Wielder (1983)
└── The Gap Series
    ├── Book 1 - The Gap Into Conflict - The Real Story (1991)
    ├── Book 2 - The Gap Into Vision - Forbidden Knowledge (1991)
    ├── Book 3 - The Gap Into Power - A Dark And Hungry God Arises (1992)
    ├── Book 4 - The Gap Into Madness - Chaos and Order (1994)
    └── Book 5 - The Gap Into Ruin - This Day All Gods Die (1996)
KaiStarkk commented 1 year ago

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 1 year ago

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 1 year ago

A related request may be multi-author series which doesn't seem possible right now

wtanksleyjr commented 1 year ago

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:

A related request may be multi-author series which doesn't seem possible right now

— Reply to this email directly, view it on GitHub https://github.com/advplyr/audiobookshelf/issues/870#issuecomment-1454250717, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAJ7H6NOAS7AOIGHX4IUB6TW2J3QXANCNFSM547QNX7A . You are receiving this because you commented.Message ID: @.***>

alexedwards565 commented 1 year ago

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 1 year ago

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 1 year ago

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 1 year ago

It’s really close to being perfect for my use case and those described above.

Couple points of feedback:

  1. would be great if the scanner could infer this from folder structure

  2. 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”)

  3. Also noticed that the app doesn’t have sort and filter options in the series tab, is that a bug?

MikeBishop commented 11 months ago

@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 11 months ago

@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.

@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 11 months ago

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 https://github.com/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.

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 https://github.com/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 add multiple series.

— Reply to this email directly, view it on GitHub https://github.com/advplyr/audiobookshelf/issues/870#issuecomment-1832905799, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAJ7H6P73ZQCOCAYOGRY4U3YG7GN5AVCNFSM547QNX7KU5DIOJSWCZC7NNSXTN2JONZXKZKDN5WW2ZLOOQ5TCOBTGI4TANJXHE4Q . You are receiving this because you commented.Message ID: @.***>

KaiStarkk commented 11 months ago

Yep sounds good, so the remaining enhancement request is as per https://github.com/advplyr/audiobookshelf/issues/870#issuecomment-1794449502

wtanksleyjr commented 11 months ago

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 11 months ago

If the folder structure is:

Library root
└ ── Author
    └ ── A
        └ ── B
            └ ── Book
                └ ── Book files.mp3

Then: The series property on Book should include A and B.

KaiStarkk commented 11 months ago

Extending the wishlist: ideally any number of folders nested between the Book and the Author folder should be added, e.g.:

Library root
└ ── Author
    └ ── A
        └ ── …
            └ ── Z
                └ ── Book
                    └ ── Book files.mp3

Should add A, B, C, D and so on to the series property of the Book.

KaiStarkk commented 10 months ago

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 10 months ago

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.

@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:

audiobookshelf-mockup