Base gui, player, side, top nav, song list
Super happy with this
This commit is contained in:
52
scripts/manifest_legacy_to_v1_json.py
Normal file
52
scripts/manifest_legacy_to_v1_json.py
Normal file
@@ -0,0 +1,52 @@
|
||||
"""
|
||||
Converts legacy manifest to v1 json
|
||||
"""
|
||||
|
||||
import uuid
|
||||
import json
|
||||
import sys
|
||||
|
||||
def main(inp: str, out: str):
|
||||
manifest = {
|
||||
"songs": {},
|
||||
"playlists": {}
|
||||
}
|
||||
with open(inp, "r", encoding="utf-8") as f:
|
||||
data = json.load(f)
|
||||
_format = data["format"] # unused
|
||||
for pname in data["playlists"]:
|
||||
pid = str(uuid.uuid4())
|
||||
manifest["playlists"][pid] = {
|
||||
"name": pname,
|
||||
"author": "Unknown",
|
||||
"songs": []
|
||||
}
|
||||
for sname in data["playlists"][pname]["songs"]:
|
||||
asn = sname.split(" - ", 2)
|
||||
author = None
|
||||
name = None
|
||||
if len(asn) < 2:
|
||||
author = "Unknown"
|
||||
name = sname
|
||||
else:
|
||||
author = asn[0]
|
||||
name = asn[1]
|
||||
song = data["playlists"][pname]["songs"][sname]
|
||||
|
||||
sid = str(uuid.uuid4())
|
||||
manifest["playlists"][pid]["songs"].append(sid)
|
||||
manifest["songs"][sid] = {
|
||||
"name": name,
|
||||
"author": author,
|
||||
"url": song["url"],
|
||||
"source_type": song["typ"]
|
||||
}
|
||||
converted = json.dumps(manifest)
|
||||
with open(out, "w", encoding="utf-8") as f:
|
||||
f.write(converted)
|
||||
|
||||
if __name__ == "__main__":
|
||||
if len(sys.argv) < 3:
|
||||
print(f"Usage: {sys.argv[0]} [in] [out]")
|
||||
sys.exit(1)
|
||||
main(sys.argv[1], sys.argv[2])
|
||||
Reference in New Issue
Block a user