fix: media files now support rebuilding

This commit is contained in:
2026-02-10 21:58:27 +01:00
parent 85711bf205
commit 429e70ced5

View File

@@ -528,6 +528,7 @@ export class MediaEngine extends EventEmitter {
} }
async rebuildDatabaseFromFiles(): Promise<void> { async rebuildDatabaseFromFiles(): Promise<void> {
const mediaBaseDir = this.getMediaBaseDir();
const task: Task<void> = { const task: Task<void> = {
id: uuidv4(), id: uuidv4(),
name: 'Rebuild database from media files', name: 'Rebuild database from media files',
@@ -536,23 +537,39 @@ export class MediaEngine extends EventEmitter {
onProgress(0, 'Scanning media directory...'); onProgress(0, 'Scanning media directory...');
const mediaDir = this.getMediaDir(); // Recursively find all .meta files in the media directory tree
let files: string[] = []; const metaFiles: string[] = [];
const scanDir = async (dir: string) => {
try { try {
files = await fs.readdir(mediaDir); const entries = await fs.readdir(dir, { withFileTypes: true });
} catch { for (const entry of entries) {
await fs.mkdir(mediaDir, { recursive: true }); const fullPath = path.join(dir, entry.name);
if (entry.isDirectory()) {
await scanDir(fullPath);
} else if (entry.name.endsWith('.meta')) {
metaFiles.push(fullPath);
} }
const metaFiles = files.filter(f => f.endsWith('.meta')); }
} catch {
// Directory might not exist
}
};
try {
await fs.mkdir(mediaBaseDir, { recursive: true });
} catch {
// Already exists
}
await scanDir(mediaBaseDir);
onProgress(10, `Found ${metaFiles.length} media sidecar files`); onProgress(10, `Found ${metaFiles.length} media sidecar files`);
for (let i = 0; i < metaFiles.length; i++) { for (let i = 0; i < metaFiles.length; i++) {
const metaFile = metaFiles[i]; const sidecarPath = metaFiles[i];
const sidecarPath = path.join(mediaDir, metaFile);
const mediaFilePath = sidecarPath.replace('.meta', ''); const mediaFilePath = sidecarPath.replace('.meta', '');
const metaFileName = path.basename(sidecarPath);
onProgress(10 + (80 * (i / metaFiles.length)), `Processing ${metaFile}...`); onProgress(10 + (80 * (i / metaFiles.length)), `Processing ${metaFileName}...`);
const metadata = await this.readSidecarFile(sidecarPath); const metadata = await this.readSidecarFile(sidecarPath);