feat(api,web): support CBR — extraction RAR, scan et lecture d'albums
- api: cbr utilitaire (extraction RAR), scanner/métadonnées (+ tests), books, schéma - web: ReaderPage/locators (+ tests), mockData, types partagés - deps: pnpm-lock Refs: #17
This commit is contained in:
@ -40,7 +40,7 @@ export class ScannerService {
|
||||
|
||||
private async ingestFile(libraryId: number, filePath: string): Promise<void> {
|
||||
const stats = statSync(filePath);
|
||||
let metadata = extractMetadata(filePath, this.database.config.storageDir);
|
||||
let metadata = await extractMetadata(filePath, this.database.config.storageDir);
|
||||
if (this.database.config.openLibraryEnabled) {
|
||||
try {
|
||||
metadata = { ...metadata, ...(await this.openLibrary.enrich(metadata)) };
|
||||
@ -84,15 +84,16 @@ function* walkBooks(root: string): Generator<string> {
|
||||
}
|
||||
if (!entry.isFile()) continue;
|
||||
const extension = extname(entry.name).toLowerCase();
|
||||
if (extension === ".epub" || extension === ".pdf" || extension === ".cbz") {
|
||||
if (extension === ".epub" || extension === ".pdf" || extension === ".cbz" || extension === ".cbr") {
|
||||
yield path;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function bookFormatFromPath(filePath: string): "epub" | "pdf" | "cbz" {
|
||||
function bookFormatFromPath(filePath: string): "epub" | "pdf" | "cbz" | "cbr" {
|
||||
const extension = extname(filePath).toLowerCase();
|
||||
if (extension === ".epub") return "epub";
|
||||
if (extension === ".cbz") return "cbz";
|
||||
if (extension === ".cbr") return "cbr";
|
||||
return "pdf";
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user