Is your feature request related to a problem? Please describe.
Libraries often contain books whose metadata assigns them to a nominal series even though only one book from that series is present. These single-book series can substantially clutter both:
- the Series tab in the CWA web interface (list and grid views); and
- the Series menu and alphabetical indexes in the OPDS catalogue.
The series metadata is still useful and should remain attached to the book, but a series containing only one visible book is generally not useful as a navigation category. Removing the metadata merely to tidy the menus would make the catalogue less accurate.
Describe the solution you'd like
Add an instance-level setting for the minimum number of books required before a series is shown in Series navigation. For example:
Minimum books required to show a series: 1
The default should be 1 to preserve current behaviour. Setting it to 2 would hide single-book series.
The setting should apply consistently to:
- the web Series tab in both list and grid views;
- the web Series alphabetical index/filter;
- the OPDS Series menu; and
- the OPDS Series alphabetical index and letter feeds.
Ideally, the threshold would be evaluated after CWA's normal visibility/common filters, so the count reflects books visible to the current user. A series with two books globally but only one book visible to a particular user should therefore be hidden for that user when the threshold is 2.
This should affect navigation only. Series metadata should remain unchanged, and direct links to an otherwise hidden series could continue to work.
Describe alternatives you've considered
- Removing series metadata from singleton books: this damages valid metadata and affects other Calibre clients.
- Hiding the entire Series section per user: this removes useful multi-book series as well.
- Maintaining local source patches to the grouped queries in
cps/web.py and cps/opds.py: feasible, but brittle across upgrades and better represented as a supported setting.
Additional context
In v4.0.6, the relevant grouped series queries appear in series_list() in cps/web.py and feed_letter_series() / render_element_index() in cps/opds.py. A grouped-count threshold (for example, a HAVING COUNT(...) >= configured_minimum) appears sufficient, provided the alphabetical indexes use the same filtered population.
Is your feature request related to a problem? Please describe.
Libraries often contain books whose metadata assigns them to a nominal series even though only one book from that series is present. These single-book series can substantially clutter both:
The series metadata is still useful and should remain attached to the book, but a series containing only one visible book is generally not useful as a navigation category. Removing the metadata merely to tidy the menus would make the catalogue less accurate.
Describe the solution you'd like
Add an instance-level setting for the minimum number of books required before a series is shown in Series navigation. For example:
The default should be
1to preserve current behaviour. Setting it to2would hide single-book series.The setting should apply consistently to:
Ideally, the threshold would be evaluated after CWA's normal visibility/common filters, so the count reflects books visible to the current user. A series with two books globally but only one book visible to a particular user should therefore be hidden for that user when the threshold is
2.This should affect navigation only. Series metadata should remain unchanged, and direct links to an otherwise hidden series could continue to work.
Describe alternatives you've considered
cps/web.pyandcps/opds.py: feasible, but brittle across upgrades and better represented as a supported setting.Additional context
In v4.0.6, the relevant grouped series queries appear in
series_list()incps/web.pyandfeed_letter_series()/render_element_index()incps/opds.py. A grouped-count threshold (for example, aHAVING COUNT(...) >= configured_minimum) appears sufficient, provided the alphabetical indexes use the same filtered population.