-
Notifications
You must be signed in to change notification settings - Fork 1
/
converter.py
61 lines (49 loc) · 1.62 KB
/
converter.py
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
# -*- coding: utf-8 -*-
import os
import csv
import json
from format_data import read_songs_wikipedia, to_song_dict
def to_alfred_dict(sd):
"""
- title
- subtitle
- arg
"""
subtitle = '{} / {} / {}'.format(sd['vocals'], sd['year'], sd['album'])
return {
'title': sd['title'],
'subtitle': subtitle,
'arg': subtitle,
}
ALFRED_CSV_PATH = './plugins/alfred/list_filter.csv'
PY_CLI_PATH = './beatles_song/beatles_song.py'
PY_CLI_TMPL_PATH = './beatles_song/code_template.txt'
def main():
py_cli_version = os.environ.get('PY_CLI_VERSION', '0.1.0')
sd_list = []
rows = []
for i in read_songs_wikipedia():
sd = to_song_dict(i)
sd_list.append(sd)
rows.append(to_alfred_dict(sd))
sd_list = sorted(sd_list, key=lambda x: x['title'])
print('Writing {}'.format(ALFRED_CSV_PATH))
with open(ALFRED_CSV_PATH, 'w') as fo:
w = csv.DictWriter(fo, fieldnames=['title', 'subtitle', 'arg'])
w.writeheader()
for row in rows:
w.writerow(row)
print('Writing {}'.format(PY_CLI_PATH))
with open(PY_CLI_TMPL_PATH, 'r') as ftmpl:
code_tmpl = ftmpl.read()
with open(PY_CLI_PATH, 'w') as fpy:
songs_def = '{\n'
for sd in sd_list:
# keep only letter
signature = ''.join(i for i in sd['title'] if i.isalpha()).lower()
songs_def += '"{}": {},\n'.format(signature, json.dumps(sd, ensure_ascii=False, sort_keys=True))
songs_def += '}'
code = code_tmpl.format(py_cli_version, songs_def)
fpy.write(code)
if __name__ == '__main__':
main()