-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathstrapi_to_mdx_converter.py
executable file
·79 lines (56 loc) · 2.24 KB
/
strapi_to_mdx_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
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
#!/bin/env python3.9
import requests as rq
import json
import os
from tqdm import tqdm
PATHS_URL = "https://unit.tmshv.com/unit-4-pages/paths"
CONTENT_PAGE_URL = "https://unit.tmshv.com/unit-4-pages?slug="
def save_dir_init(directory):
if not os.path.exists(directory):
os.makedirs(directory)
def save_mdx_files(slug_filename, json_data, en_flag=False):
save_dir_init("data")
json_contents = json_data[0]
excerpt = json_contents.get("excerpt")
title_key = "title"
text_key = "text"
filename = f"./data/{slug_filename}.ru.mdx"
if en_flag:
title_key += "_en"
text_key += "_en"
filename = f"./data/{slug_filename}.en.mdx"
with open(filename, "w") as f:
f.write(f"---\ncover: {slug_filename}\nexcerpt: {excerpt}\n---\n\n")
f.write(f"# {json_contents.get(title_key)}\n\n")
for component in json_contents.get("content"):
if component.get("__component") == "unit-4.text":
f.write(f"{component.get(text_key)}\n\n")
if component.get("__component") == "unit-4.image":
f.write(f"<Image src=\"{component.get('image').get('url')}\" alt=\"{component.get('image').get('alternativeText')}\" />\n\n")
if component.get("__component") == "unit-4.carousel":
f.write(f"<Carousel effect={component.get('switchType')}>\n")
for carousel_photo in component.get('media'):
f.write(f"\t<Image src=\"{carousel_photo.get('url')}\" alt=\"{carousel_photo.get('alternativeText')}\" />\n")
f.write(f"</Carousel>\n\n")
def main():
try:
resp = rq.get(PATHS_URL)
except Exception as e:
exit(e)
if not resp.ok:
exit(1)
try:
all_pages = [i.get('slug') for i in resp.json() if i is not None]
for page in tqdm(all_pages):
slug = page.replace("/", "")
try:
json_page_data = rq.get(f"{CONTENT_PAGE_URL}/{slug}").json()
except Exception as e:
print(e)
continue
save_mdx_files(slug, json_page_data)
save_mdx_files(slug, json_page_data, True)
except KeyboardInterrupt:
exit()
if __name__ == "__main__":
main()