Add read-only database V2 parser
This commit is contained in:
@@ -0,0 +1,28 @@
|
||||
# Database V2 Read-only Parser
|
||||
|
||||
## Problem
|
||||
|
||||
Crates and files do not explain every orange track in Serato. The legacy
|
||||
`database V2` contains Serato's library-level track paths and metadata, so it must
|
||||
be inspected independently from crate references.
|
||||
|
||||
## Architecture
|
||||
|
||||
The parser reads the file as a big-endian tag-length-value stream. Top-level
|
||||
`otrk` records contain nested fields including `pfil` (path), `tsng` (title),
|
||||
`tart` (artist), `talb` (album), and `tgen` (genre). Text is UTF-16 big-endian.
|
||||
|
||||
Analysis reports total database entries, entries whose filenames occur in the
|
||||
selected music scan, entries outside that scan, scanned tracks absent from the
|
||||
database, and duplicate database paths. “Outside scan” is deliberately not called
|
||||
missing because Serato databases can include samples and tracks from other roots.
|
||||
|
||||
## Safety
|
||||
|
||||
The parser calls only `read_bytes`; it never opens the database for writing. No
|
||||
metadata values or personal paths are sent to logs or the dashboard.
|
||||
|
||||
## Verification
|
||||
|
||||
Synthetic TLV fixtures cover version, paths, metadata, incomplete records, and
|
||||
health integration. The sample library includes a generated ten-entry database.
|
||||
Reference in New Issue
Block a user