Introduce core library model

This commit is contained in:
Philip Guzman
2026-06-30 10:10:14 -07:00
parent 508eecd0bd
commit 09167e44c7
9 changed files with 108 additions and 32 deletions
+11 -19
View File
@@ -2,6 +2,7 @@ from pathlib import Path
import argparse
from serato_doctor.crate_parser import parse_crates
from serato_doctor.models.library import Library
from serato_doctor.scanner import scan_audio
from serato_doctor.report import write_csv, write_missing_report
@@ -19,27 +20,18 @@ def main():
out = Path(args.out)
report = Path(args.report)
refs = parse_crates(serato / "Subcrates")
disk = scan_audio(music)
library = Library.build(
references=parse_crates(serato / "Subcrates"),
tracks=scan_audio(music),
)
results = library.reconcile_by_filename()
missing_count = sum(1 for result in results if not result.exists_by_filename)
disk_names = {t.filename for t in disk}
write_csv(results, out)
write_missing_report(results, report)
rows = []
for ref in refs:
rows.append({
"crate": str(ref.source),
"serato_path": str(ref.path),
"filename": ref.filename,
"exists_by_filename": ref.filename in disk_names,
})
missing_count = sum(1 for r in rows if not r["exists_by_filename"])
write_csv(rows, out)
write_missing_report(rows, report)
print(f"Crate references: {len(refs)}")
print(f"Disk tracks: {len(disk)}")
print(f"Crate references: {len(library.references)}")
print(f"Disk tracks: {len(library.tracks)}")
print(f"Missing by filename: {missing_count}")
print(f"CSV: {out}")
print(f"Report: {report}")