0
0
mirror of https://github.com/cucumber-sp/yandex-music-linux.git synced 2024-12-24 14:34:39 +03:00
yandex-music-linux/utility/extract_release_notes.py
Andrey Onishchenko 1f0975300f Release notes
2024-02-09 17:35:17 +03:00

50 lines
1.7 KiB
Python

import sys
import json
if len(sys.argv) < 3:
print("Usage: python extract_release_notes.py <file_name>")
sys.exit(1)
file_name = sys.argv[1]
save_file_name = sys.argv[2]
def build_html(data, first_launch=False):
html = ""
for i, element in enumerate(data):
if element['type'] == 0:
if first_launch and i == 0:
html += f"<h2>{element['value']}</h2>".replace('\n', '<br/>')
continue
if element['value'] == '\n':
html += "<br/>"
else:
html += f"<span>{element['value']}</span>".replace('\n', '<br/>')
elif element['type'] == 8:
html += f"<{element['value']}>{build_html(element['children'])}</{element['value']}>"
return html
with open(file_name, "r", encoding='utf-8') as file:
full_text = file.read()
notes = {}
position = full_text.find("desktop-release-notes.")
while position != -1:
start_position = position
while full_text[position] != '"':
position += 1
name = full_text[start_position:position]
position += 2
start_position = position
braces_count = 1
while braces_count > 0:
position += 1
if full_text[position] == '{' or full_text[position] == '[':
braces_count += 1
elif full_text[position] == '}' or full_text[position] == ']':
braces_count -= 1
data = full_text[start_position:position + 1]
notes[name] = build_html(json.loads(data), True)
position = full_text.find("desktop-release-notes.", position)
with open(save_file_name, "w", encoding='utf-8') as file:
file.write(json.dumps(notes, ensure_ascii=False, indent=4))