* refactor(pdf): update PDFBox usage for 3.x compatibility and improve file handling
- Use RandomAccessReadBufferedFile and RandomAccessStreamCache for loading PDFs
- Update methods to use new PDFBox 3.x APIs for reading and writing
- Add pdfbox-io dependency to build.gradle
- Add comments regarding compressed mode in PDFBox 3.x
Signed-off-by: Balázs Szücs <bszucs1209@gmail.com>
* test(pdf): remove outdated comments about PDFBox 3.x default compression in save operations
Signed-off-by: Balázs Szücs <bszucs1209@gmail.com>
* test(pdf): remove outdated comments about PDFBox 3.x default compression in save operations
Signed-off-by: Balázs Szücs <bszucs1209@gmail.com>
---------
Signed-off-by: Balázs Szücs <bszucs1209@gmail.com>
* fix(opds): add mime type support for FB2 and CBX formats based on file extension
Signed-off-by: Balázs Szücs <bszucs1209@gmail.com>
* fix(opds): return correct MIME types for all supported book formats in feed links
Signed-off-by: Balázs Szücs <bszucs1209@gmail.com>
* fix(opds): remove incorrect MIME type mapping for DJVU and default fallback
Signed-off-by: Balázs Szücs <bszucs1209@gmail.com>
* test(opds): add unit tests for correct MIME type mapping in catalog feed generation
Signed-off-by: Balázs Szücs <bszucs1209@gmail.com>
---------
Signed-off-by: Balázs Szücs <bszucs1209@gmail.com>
* fix(comicvine): handle API rate limiting by skipping requests and logging warning when limit is reached
Signed-off-by: Balázs Szücs <bszucs1209@gmail.com>
* fix(comicvine): improve rate limit handling by supporting Retry-After header and 429 status code
Signed-off-by: Balázs Szücs <bszucs1209@gmail.com>
---------
Signed-off-by: Balázs Szücs <bszucs1209@gmail.com>
- Introduced support for context-specific series collapse preferences for libraries, shelves, and magic shelves.
- Improved backward compatibility with legacy preference structures.
- Added JSON aliasing for `seriesCollapse` to maintain API compatibility.
- Extended entity selection in view preferences to include magic shelves.
- Enhanced error handling in app settings service to filter null values.
- Optimized series collapse preference management, ensuring local and global overrides persist accurately.
Signed-off-by: Balázs Szücs <bszucs1209@gmail.com>
* fix(cbz): exclude macOS metadata and hidden files from image extraction
Signed-off-by: Balázs Szücs <bszucs1209@gmail.com>
* refactor(cbz): restrict isContentEntry method visibility to private in CbxReaderService
Signed-off-by: Balázs Szücs <bszucs1209@gmail.com>
* test(cbz): add unit tests for macOS metadata file exclusion in CbxReaderService
Signed-off-by: Balázs Szücs <bszucs1209@gmail.com>
---------
Signed-off-by: Balázs Szücs <bszucs1209@gmail.com>
* fix(upload): preserve original filename as title when metadata extraction returns temp file name
Signed-off-by: Balázs Szücs <bszucs1209@gmail.com>
* fix(upload): set original filename as title directly when extracted title is temp name
Signed-off-by: Balázs Szücs <bszucs1209@gmail.com>
---------
Signed-off-by: Balázs Szücs <bszucs1209@gmail.com>
* fix(metadata-viewer): show only allowed other actions and localize amazon link
* fix(metadata-viewer): simplify permission checks for displaying other actions
Previously if any file in the epub was invalid-ly packed into the zip
container, the covers will fail to fetch due to the EpubReader trying to
load everything in the file into memory.
This patch fixes this by making the EpubReader lazy-load all of the
files in the epub so we only actually try to read the strictly-necesasry
files to find the cover. This should also improve loading times ever so
slightly by not needing to read everything in for no reason.
* feat: add LubimyCzytac metadata provider
- Add LubimyCzytac parser with web scraping for lubimyczytac.pl
- Extract book metadata including title, authors, description, ratings
- Parse JSON-LD structured data for reliable metadata extraction
- Add database migration with columns and JSON property name updates
- Add comprehensive test coverage for parser
* feat: add LubimyCzytac UI integration
- Add LC ID and LC Rating fields to metadata picker
- Update settings page with Lubimyczytac provider toggle
- Add LubimyCzytac to metadata searcher provider list
- Display Lubimyczytac in all metadata viewer sections
- Add Lubimyczytac to advanced fetch options
- Update TypeScript models to match backend serialization
* Fix(metadata): Don't import creators with a non-author role as author
Looks at either the meta tag for the creators or the opf role attribute
to determine the role of a creator. If no role is specified its assumed
to be an author.
Also only prunes handled created roles when writing the epub data back
out to prevent clobbering any extra data that might be present in the
epub already.
* Fix(metadata): Add testcases for non-author creator handling
Just adds testcases for the previous changes to the extraction and
writer logic.