pinout.vvzero.com/api/mkjson.py

84 lines
1.7 KiB
Python
Raw Normal View History

2017-11-23 06:55:22 +08:00
#!/usr/bin/env python
import json
import re
import sys
import unicodedata
2020-08-20 20:30:33 +08:00
import glob
2019-01-29 04:11:26 +08:00
import markdown
2017-11-23 06:55:22 +08:00
2019-01-29 04:11:26 +08:00
sys.path.insert(0, "../")
2020-08-20 20:30:33 +08:00
BASE_DIR = "../"
2017-11-23 06:55:22 +08:00
import markjaml
import pinout
reload(sys)
sys.setdefaultencoding('utf8')
lang = "en"
if len(sys.argv) > 1:
lang = sys.argv[1]
pinout.load(lang)
2020-08-20 20:30:33 +08:00
overlays = glob.glob("{}src/{}/overlay/*.md".format(BASE_DIR, lang))
2017-11-23 06:55:22 +08:00
pages = {}
def cssify(value):
value = slugify(value)
if value[0] == '3' or value[0] == '5':
value = 'pow' + value
return value
def slugify(value):
"""
Normalizes string, converts to lowercase, removes non-alpha characters,
and converts spaces to hyphens.
"""
value = unicode(value)
value = unicodedata.normalize('NFKD', value).encode('ascii', 'ignore').decode('ascii')
value = re.sub('[^\w\s-]', '', value).strip().lower()
return re.sub('[-\s]+', '_', value)
def load_overlay(overlay):
try:
2020-08-20 20:30:33 +08:00
data = markjaml.load(overlay)
2019-01-29 04:11:26 +08:00
slug = slugify(data['data']['name'])
2017-11-23 06:55:22 +08:00
2019-01-29 04:11:26 +08:00
filename = 'v1/detail/{}.json'.format(slug)
web_url = "https://pinout.xyz/pinout/{}".format(slug),
2017-11-23 06:55:22 +08:00
2019-01-29 04:11:26 +08:00
data['api_output_file'] = filename
data['data']['pinout_url'] = web_url
2017-11-23 06:55:22 +08:00
2019-01-29 04:11:26 +08:00
loaded = data
2017-11-23 06:55:22 +08:00
except IOError:
2019-01-29 04:11:26 +08:00
return None
2017-11-23 06:55:22 +08:00
2019-01-29 04:11:26 +08:00
return loaded
2017-11-23 06:55:22 +08:00
overlays = map(load_overlay, overlays)
2019-01-29 04:11:26 +08:00
for overlay in overlays:
for t in ['power', 'ground']:
try:
overlay['data'][t] = overlay['data'][t].keys()
except (KeyError, AttributeError):
pass
filename = overlay['api_output_file']
data = json.dumps(overlay['data'], sort_keys=True)
#print("Writing: {}".format(filename))
#print(data)
f = open(filename, 'w')
f.write(data)
f.close()