-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathfestival.py
More file actions
107 lines (93 loc) · 4.62 KB
/
festival.py
File metadata and controls
107 lines (93 loc) · 4.62 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
import json
import requests
from datetime import datetime
import time
import os
def transform_data(input_data, output_file):
transformed_data = {"tracks": [], "lastModified": 0}
wbhk = os.getenv('WKFL')
for track_id, track_data in input_data.items():
if track_id == "lastModified":
unix_timestamp = datetime.strptime(track_data, "%Y-%m-%dT%H:%M:%S.%fZ").timestamp()
transformed_data["lastModified"] = unix_timestamp
if not isinstance(track_data, dict):
continue
transformed_track = {}
transformed_track['lastModified'] = datetime.strptime(track_data["lastModified"], "%Y-%m-%dT%H:%M:%S.%fZ").timestamp()
transformed_track['active'] = datetime.strptime(track_data["_activeDate"], "%Y-%m-%dT%H:%M:%S.%fZ").timestamp()
transformed_track['language'] = track_data.get("_locale", 'LOLCAT')
track_info = track_data['track']
transformed_track['dict_id'] = track_id
transformed_track['id'] = track_info.get('sn', 'FNLOOKUP_NOSN')
transformed_track['title'] = track_info.get('tt', 'FNLOOKUP_NOTITLE')
transformed_track['artist'] = track_info.get('an', 'FNLOOKUP_NOARTIST')
transformed_track['album'] = track_info.get('ab', "")
transformed_track['genres'] = track_info.get('ge', [])
transformed_track['year'] = track_info.get('ry', 2000)
transformed_track['duration'] = track_info.get('dn', 0)
transformed_track['instrument_defaults'] = {
'vocals': track_info.get('siv', ""),
'bass': track_info.get('sib', ""),
'drums': track_info.get('sid', ""),
'guitar': track_info.get('sig', "")
}
transformed_track['gameplay_tags'] = track_info.get('gt', [])
transformed_track['join_code'] = track_info.get('jc', "")
transformed_track['item_id'] = track_info.get('ti', "")
transformed_track['difficulties'] = {
'plastic_bass': track_info['in'].get('pb', 0),
'plastic_drums': track_info['in'].get('pd', 0),
'plastic_guitar': track_info['in'].get('pg', 0),
'vocals': track_info['in'].get('vl', 0),
'guitar': track_info['in'].get('gr', 0),
'drums': track_info['in'].get('ds', 0),
'bass': track_info['in'].get('ba', 0)
}
transformed_track['scale'] = track_info.get('mm', 'Minor')
transformed_track['album_image'] = track_info.get('au', '')
transformed_track['bpm'] = track_info.get('mt', 120)
transformed_track['key'] = track_info.get('mk', 'A')
transformed_track['event_id'] = track_info.get('su', None)
transformed_track['isrc'] = track_info.get('isrc', "")
transformed_track['rating'] = track_info.get('ar', "") # ESRB
track_qi = json.loads(track_info.get("qi", '{"ph": 0, "lol": "epic why"}'))
transformed_track['preview_start'] = track_qi.get('preview', {'ph': 0}).get("starttime", 123456)
transformed_track['resources'] = [
{
'url': track_info.get('mu', ''),
'type': 'Sparks_Encrypted_Midi'
},
{
'url': track_info.get('ld', ""),
'type': 'Sparks_Lip_Sync'
},
{
'url': track_qi.get('sid', ''),
'type': 'Pilgrim_Streaming_ID_Song'
},
{
'url': track_qi.get('pid', ''),
'type': 'Pilgrim_Streaming_ID_Prev'
}
]
transformed_data["tracks"].append(transformed_track)
ogstuff = open(output_file, 'r').read()
with open(output_file, 'w') as f:
alltransform = json.dumps(transformed_data, indent=4)
f.write(alltransform)
if __name__ == "__main__":
api_url = "https://fortnitecontent-website-prod07.ol.epicgames.com/content/api/pages/fortnite-game/spark-tracks"
print("Receiving data from", api_url)
response = requests.get(api_url)
if response.status_code == 200:
print("Data received. Converting...")
input_data = response.json()
output_file = "festival/jam_tracks.json"
output_original = "festival/spark-tracks.json"
transform_data(input_data, output_file)
print("Data transformation complete. Transformed data saved to", output_file)
with open(output_original, 'w') as f:
json.dump(input_data, f, indent=4)
print("Original Saved")
else:
print("Failed to fetch data from Fortnite Content: Status code ", response.status_code)