@tyleretters/discography 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +24 -0
- package/dist/data.json +2467 -0
- package/package.json +11 -0
- package/src/convert.py +64 -0
- package/src/data.yml +1575 -0
package/package.json
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@tyleretters/discography",
|
|
3
|
+
"version": "0.0.1",
|
|
4
|
+
"description": "A canonical discography of the music of Tyler Etters in JSON.",
|
|
5
|
+
"main": "dist/index.js",
|
|
6
|
+
"repository": {
|
|
7
|
+
"type": "git",
|
|
8
|
+
"url": "git+https://github.com/tyleretters/discography.git"
|
|
9
|
+
},
|
|
10
|
+
"author": "Tyler Etters"
|
|
11
|
+
}
|
package/src/convert.py
ADDED
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
|
|
3
|
+
'''
|
|
4
|
+
convert the yml to json.
|
|
5
|
+
|
|
6
|
+
see README.md for more information.
|
|
7
|
+
'''
|
|
8
|
+
|
|
9
|
+
import yaml
|
|
10
|
+
import json
|
|
11
|
+
import re
|
|
12
|
+
import hashlib
|
|
13
|
+
from datetime import datetime
|
|
14
|
+
|
|
15
|
+
def make_id(str):
|
|
16
|
+
md5_hash = hashlib.md5()
|
|
17
|
+
md5_hash.update(str.encode("utf-8"))
|
|
18
|
+
return md5_hash.hexdigest()
|
|
19
|
+
|
|
20
|
+
special_maps = {
|
|
21
|
+
"ΑΙΓΑΙΙΣ": "AIGAIIS",
|
|
22
|
+
"nausicaä": "nausicaa"
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
def make_slug(str):
|
|
26
|
+
if str in special_maps:
|
|
27
|
+
str = special_maps[str]
|
|
28
|
+
str = str.lower()
|
|
29
|
+
# convert & to and
|
|
30
|
+
str = re.sub(r'&', 'and', str)
|
|
31
|
+
# only alphanumeric characters, spaces, and hyphens
|
|
32
|
+
str = re.sub(r'[^a-zA-Z0-9\s-]', '', str)
|
|
33
|
+
# replace spaces with hyphens
|
|
34
|
+
str = re.sub(r'\s+', '-', str)
|
|
35
|
+
return str
|
|
36
|
+
|
|
37
|
+
# load data
|
|
38
|
+
with open("./data.yml", "r") as yml_file:
|
|
39
|
+
data = yaml.safe_load(yml_file)
|
|
40
|
+
|
|
41
|
+
# enrich data
|
|
42
|
+
for release in data:
|
|
43
|
+
# generate a release slug
|
|
44
|
+
release["release_slug"] = make_slug(release["title"])
|
|
45
|
+
|
|
46
|
+
# generate a project slug
|
|
47
|
+
release["project_slug"] = make_slug(release["project"])
|
|
48
|
+
|
|
49
|
+
# generate an id
|
|
50
|
+
release["id"] = make_id(release["project"] + release["title"])
|
|
51
|
+
|
|
52
|
+
# generate a slug for each track
|
|
53
|
+
if "tracks" in release:
|
|
54
|
+
for track in release["tracks"]:
|
|
55
|
+
|
|
56
|
+
# generate a track slug
|
|
57
|
+
track["track_slug"] = make_slug(track["title"])
|
|
58
|
+
|
|
59
|
+
# generate an id (ARTIST + RELEASE + NUMBER + TITLE + LENGTH)
|
|
60
|
+
track["id"] = make_id(release["project"] + release["title"] + str(track["number"]) + track["title"] + track["length"])
|
|
61
|
+
|
|
62
|
+
# write data
|
|
63
|
+
with open("../dist/data.json", "w") as json_file:
|
|
64
|
+
json.dump(data, json_file, indent=2)
|