29 lines
1.1 KiB
Markdown
29 lines
1.1 KiB
Markdown
# 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.
|