Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[FEATURE] Folder Structure #254

Open
Silther opened this issue Feb 1, 2024 · 14 comments
Open

[FEATURE] Folder Structure #254

Silther opened this issue Feb 1, 2024 · 14 comments
Labels
enhancement New feature or request

Comments

@Silther
Copy link

Silther commented Feb 1, 2024

Is your feature request related to a problem? Please describe.
My Folder structure is something like:

Library 1
|-- Author 1
|   |-- Series 1
|   |   |-- Book 1
|   |   |   |-- Book 1.epub
|   |   |   |-- Cover.jpg
|   |   |   |-- Metadata
|   |   |-- Book 2
|   |   |   |-- Book 2.epub
|   |   |   |-- Cover.jpg
|   |   |   |-- Metadata
|   |-- Series 2
|   |   |-- ...
|-- Author 2
|   |-- ...
Library 2
|-- ...

The folder structure is used by Audiobookshelf and is pretty similar to Calibre.
The problem is, that Stump reads the Series only from the the folder Structure and not the metadata, which leads either to every book being in it's on series, or the author being the series, both is not ideal.

Describe the solution you'd like
Add the folder structure as a third option, or only read series from the metadata

Describe alternatives you've considered
probably the easiest option would be to allow books be placed in a book-folder and the book-folder into a series-folder

@Silther Silther added the enhancement New feature or request label Feb 1, 2024
@aaronleopold
Copy link
Collaborator

The problem is, that Stump reads the Series only from the the folder Structure and not the metadata, which leads either to every book being in it's on series, or the author being the series, both is not ideal.
...
Add the folder structure as a third option, or only read series from the metadata

You're correct, Stump does not currently support building a library from metadata. Rather, it is the file structure. The metadata is used afterwards, e.g. filtering. I am not necessarily opposed to adding support for the former (library from metadata), however the requirements for how it should work would need to be thoroughly laid out (namely, what does the metadata look, where is valid placement throughout the different file structures, and how should Stump reconcile parsed metadata with what it indexes on disk).

As for supporting the other file structure explicitly, I'll consider it. To be completely honest, assuming I am understanding correctly, it is almost exactly what the Collection priority pattern achieves. The only difference is that, in your case, you'd like the first child directory of the library root to be ignored. Supporting that in and of itself is not too much, but it just means supporting yet another pattern to maintain. I am currently rewriting the scanner, so I'll have a better idea towards the end of that effort what supporting that structure might look like.

As a side note, I think I'll need catchier names for these patterns because I can't think of what this proposed one would be called relative to what Stump supports today (Collection vs Series priority) 😅

@aaronleopold
Copy link
Collaborator

Somewhat related, as well, to #196, perhaps it would make sense down the road to just support a library pattern that supports generating of nested series. This way, you could have a library where the root level series are authors, and each author would have a sub series for each book series.

E.g. something like:

ROOT
|-- Sanderson, Brandon
|   |-- Mistborn
|   |   |-- The Final Empire
|   |   |-- The Well of Ascension
|   |   |-- etc.
|   |-- Stormlight Archive
|   |   |-- The Way of Kings
|   |   |-- Words of Radiance
|   |   |-- etc.
|-- Some Other Author
|   |-- Some Other Series
|   |   |-- Some Other Book

Which would more naturally represent the data structure of a library:

{
  "library": {
    "series": [
      {
        "name": "Sanderson, Brandon",
        "books": [
          // All of the books in the series (author) and sub-series (actual book series)
        ],
        "subseries": [
          {
            "name": "Mistborn",
            "books": [
              // All of the books in the sub-series (actual book series)
            ]
          },
          {
            "name": "Stormlight Archive",
            "books": [
              // All of the books in the sub-series (actual book series)
            ]
          }
        ]
      },
    ]
  }
}

That's a very large paradigm shift, though. Wanted to throw it out there.

@Silther
Copy link
Author

Silther commented Feb 7, 2024

Somewhat related, as well, to #196

yes, that would be a similar library

This way, you could have a library where the root level series are authors, and each author would have a sub series for each book series.

A recursive library there every book is inside its own folder more would make more sense to me as it seems more future proof.
if some day metadata files get implemented they can be added to the book folder instead of having another library only for metadata.

@Silther
Copy link
Author

Silther commented Feb 7, 2024

on a related note, why is one library restricted to one folder and one folder restricted to one library?

@aaronleopold
Copy link
Collaborator

A recursive library there every book is inside its own folder more would make more sense to me as it seems more future proof

This is a prerequisite for the linked ticket (#196). The idea for that one is you can group multiple files of the same book within a single folder, e.g. a PDF and an EPUB, and Stump would recognize the different files while retaining a single media entry in the DB to group them. If it can do that, then it can recognized a folder containing parts of a book. The long word vomit I had above was just a tangent off of that idea that I thought was similar-ish.

on a related note, why is one library restricted to one folder and one folder restricted to one library?

I'm not sure what you mean. Libraries don't currently support multiple sources, if that is the question. Hypothetically it can one day be extended to support it, I imagine it like how Plex works. However, for the second part of your question, why would you want the same folder present for multiple libraries? You would have duplicated media

@Silther
Copy link
Author

Silther commented Feb 8, 2024

why would you want the same folder present for multiple libraries? You would have duplicated media

What I do with my audiobooks in audiobookshelf is, that every user has access to his personal library with a puplic and a private audiobook folder, and all public audiobook folders are in a shared library every body has access to .

So you can keep some audiobooks private and same audiobooks you can share with friends and family.

@cathedralnarwhal
Copy link

Just wanted to say that I'm interested in support for nested series. Thank you for your hard work.

@tenninjas
Copy link

I think nested series are the best way to go.
I also just want to add a +1 as a user who would definitely use multiple sources for a single library.

@aaronleopold
Copy link
Collaborator

aaronleopold commented Feb 27, 2024

I think nested series are the best way to go. I also just want to add a +1 as a user who would definitely use multiple sources for a single library.

I created a separate issue last week to better track the first request 🙂 I like the idea so am planning on tackling it hopefully before 0.2.0. I'll be focusing on general stability and honing the existing features for 0.1.0

As for the multiple sources, I haven't created the ticket. Feel free to create one!

I also want to say that I've been working on some usability improvements for the file explorer, extending it to be re-used for both library and series screens. Since it is just traversing the file system at the relative root, I think it is close to what nested series might look like until it gets worked. So it could be a valid alternative until that point. Currently, those changes are in experimental, but will make its way to nightly and 0.0.2 shortly after.

@beville
Copy link

beville commented Mar 9, 2024

I wanted to throw in a +1 request for supporting imports where the series is based only on comic file metadata (internal tags firstly, then filename parsing), rather than any folder location. This would useful for folks who have meticulously tagged files that aren't organized into a particular folder structure.

Currently I think Codex is the only server app that supports this, but it would be nice to have more options.

(As a experiment, though, I have a test script to build a folder tree based on publisher/series tags, and populate with symlinks to the actual file locations. It's functional with Stump, but less than ideal. )

@aaronleopold
Copy link
Collaborator

aaronleopold commented Mar 9, 2024

I've created a separate issue for folks to better track it: #288

Currently I think Codex is the only server app that supports this, but it would be nice to have more options.

I thought Kavita supports metadata libraries, but I could be mistaken

@beville
Copy link

beville commented Mar 9, 2024

Thanks for considering this!

Re: Kavita, I just had another look to be sure, and seems that it still relies on a strict folder structure: https://wiki.kavitareader.com/en/guides/managing-your-files/scanner#introduction

@Critical-Impact
Copy link

Komga does read metadata as well, https://komga.org/docs/guides/scan-analysis-refresh/
Has a brief rundown of what fields it expects from the metadata files it can read

@aaronleopold
Copy link
Collaborator

Komga does read metadata as well, https://komga.org/docs/guides/scan-analysis-refresh/

Has a brief rundown of what fields it expects from the metadata files it can read

Komga does read metadata, but I don't think there exists an option to completely ignore the underlying filesystem and instead rely solely on metadata to construct the library and series (which is the ask discussed above)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

6 participants