@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/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)