Discover Serato smart crate definitions
This commit is contained in:
@@ -28,18 +28,28 @@ def build_sample(output: Optional[Path] = None) -> Path:
|
||||
)
|
||||
|
||||
for crate in manifest["crates"]:
|
||||
folder_name = "Smartcrates" if crate["type"] == "smart" else "Subcrates"
|
||||
is_smart = crate["type"] == "smart"
|
||||
folder_name = "SmartCrates" if is_smart else "Subcrates"
|
||||
crate_root = serato_root / folder_name
|
||||
crate_root.mkdir(parents=True, exist_ok=True)
|
||||
other_folder = "Subcrates" if folder_name == "Smartcrates" else "Smartcrates"
|
||||
stale_path = serato_root / other_folder / crate["name"]
|
||||
if stale_path.exists():
|
||||
stale_path.unlink()
|
||||
output_name = (
|
||||
Path(crate["name"]).with_suffix(".scrate").name
|
||||
if is_smart
|
||||
else crate["name"]
|
||||
)
|
||||
for other_folder in ("Subcrates", "Smartcrates", "SmartCrates"):
|
||||
for stale_name in (
|
||||
crate["name"],
|
||||
Path(crate["name"]).with_suffix(".scrate").name,
|
||||
):
|
||||
stale_path = serato_root / other_folder / stale_name
|
||||
if stale_path.exists() and stale_path != crate_root / output_name:
|
||||
stale_path.unlink()
|
||||
records = "".join(
|
||||
f"{SERATO_PATH_PREFIX}{relative_path}otrk"
|
||||
for relative_path in crate["references"]
|
||||
)
|
||||
(crate_root / crate["name"]).write_bytes(records.encode("utf-16-le"))
|
||||
(crate_root / output_name).write_bytes(records.encode("utf-16-le"))
|
||||
|
||||
return root
|
||||
|
||||
|
||||
Reference in New Issue
Block a user