advplyr / audiobookshelf

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

[Enhancement]: Ability to move books between libraries #3284

Closed kcclemo closed 2 months ago

kcclemo commented 3 months ago

Type of Enhancement

Web Interface/Frontend

Describe the Feature/Enhancement

It would be nice if we could create a new library and move or copy books from one library to another. I see no way of doing this as of today in the web UI or documentation.

Why would this be helpful?

I was trying to create a "kids" library and move my kids' favorite books to that library and give them access only to that library. But, I would need to re-upload the books to the new library potentially duplicating the content on my server.

Future Implementation (Screenshot)

chrome_X1Sss8jLaH

Audiobookshelf Server Version

2.9.0

Current Implementation (Screenshot)

No response

nichwall commented 3 months ago

There is not a way to do this in the web interface. You could make symlinks for the second library in your file system (so not needing to store the book twice), or add a "Kids" tag to their books and then limit access to that tag for their account.

Related to https://github.com/advplyr/audiobookshelf/issues/312

kcclemo commented 3 months ago

Thank you for the suggestion! I'll give that a try. I am aware that we don't have this tool in the current UI though, that's why I was asking that it be considered as a future new feature.

Thanks, again!

advplyr commented 3 months ago

Did you want the books to be shown in both libraries without duplicating the file or you just want to specify files that belong in another library without moving the file?

I'm not sure what you are requesting exactly but it does seem like you would want to create a user with limited access based on tags.

kcclemo commented 3 months ago

I want to be able to show/hide a book in any given library without moving the file. I can see in the current implementation, that the original upload location of the file itself is not relevant to the path that is stored in the database. I updated the database directly to change the path to a book's file and no change was presented on the UI.

So, filtering based on tags would work, but if I create a new library, I'd simply like a simple way to show/hide books from the entire collection/file system in any library.

For example, I might have a "main" library, and I upload everything to this library. But, then I'd like to copy a book to the "kids" library. I'd like that to be something like a symbolic link. The original file is unchanged, but when I switch to the "kids" library I can see the book that was copied over from the "main" library, but not the rest of the books. It's probably a redundant way of organizing books, but I never thought of tags as an organization tool in that way. Tags, to me, (and I may just be thinking about them incorrectly) are a way of marking a book with a custom category outside of the genre, maybe a sub-genre if you will.

advplyr commented 3 months ago

I think I understand. The way Abs has set up libraries is they are dependent on the file system paths and library items need to be in the library folders.

Libraries as a way of organizing like you are describing was not how it was designed and so building it that way would be a ground-up re-design of the data model.

If you want the kids book to be in a different library it will have to be in a folder for that library.

There are feature requests open that are being considered that would help with moving/renaming files on your file system. Also for more robust account restrictions based on other details, like genre.

Tags are both a way of organizing and a way of categorizing. When I first added tags I didn't realize that Audible used tags as a way of categorizing so originally I thought of it as a way of organizing. I think it makes sense to use it for both. Adding a "Kids" tag or similar seems to serve both functions.