mirror of
https://gitea.cookies.4d.ink/Cookies/CookiesChartConverter.git
synced 2025-10-26 03:02:39 +00:00
68 lines
2.5 KiB
Python
68 lines
2.5 KiB
Python
import xml.etree.ElementTree as ET
|
|
|
|
PLUS = "+"
|
|
EMPTY = ""
|
|
level_name = ["Basic","Advanced","Expert","Master","Re:Master"]
|
|
def parse_music_xml(file_path):
|
|
# 解析 XML 文件
|
|
tree = ET.parse(file_path)
|
|
root = tree.getroot()
|
|
|
|
# 获取音乐ID
|
|
name_elem = root.find("name/id")
|
|
id = name_elem.text if name_elem is not None else "?"
|
|
|
|
# 获取音乐名称
|
|
name_elem = root.find("name/str")
|
|
music_name = name_elem.text if name_elem is not None else "?"
|
|
|
|
# 获取艺术家名称
|
|
artist_elem = root.find("artistName/str")
|
|
artist_name = artist_elem.text if artist_elem is not None else "?"
|
|
|
|
version_elem = root.find("AddVersion/str")
|
|
version_name = version_elem.text if version_elem is not None else "?"
|
|
|
|
# 提取启用谱面信息(设计者 + 等级)
|
|
note_infos = []
|
|
notes_data = root.find("notesData")
|
|
if notes_data is not None:
|
|
for note in notes_data.findall("Notes"):
|
|
# 判断是否启用
|
|
is_enable_elem = note.find("isEnable")
|
|
if is_enable_elem is not None and is_enable_elem.text.lower() == "true":
|
|
# 提取设计者
|
|
designer_elem = note.find("notesDesigner/str")
|
|
designer = designer_elem.text if (designer_elem is not None and designer_elem.text) else "-"
|
|
|
|
# 提取等级
|
|
level_elem = note.find("level")
|
|
level_decimal_elem = note.find("levelDecimal")
|
|
level = level_elem.text if level_elem is not None else "0"
|
|
level_decimal = level_decimal_elem.text if level_decimal_elem is not None else "0"
|
|
|
|
# 组合信息
|
|
note_infos.append({
|
|
"designer": designer,
|
|
"level": f"{level}.{level_decimal}",
|
|
"levelshow": f"{level}{PLUS if int(level_decimal) > 6 else EMPTY}",
|
|
})
|
|
|
|
return id,music_name, artist_name, note_infos , version_name
|
|
|
|
|
|
if __name__ == "__main__":
|
|
file_path = "/Users/bennett/Downloads/SDEZ/Package/Sinmai_Data/StreamingAssets/A000/music/music011663/Music.xml"
|
|
id,music_name, artist_name, note_infos,version_name = parse_music_xml(file_path)
|
|
print("ID:",id)
|
|
print("音乐名称:", music_name)
|
|
print("艺术家名称:", artist_name)
|
|
print("启用谱面列表:")
|
|
for i in range(len(note_infos)):
|
|
print(level_name[i])
|
|
print(f"等级:{note_infos[i]['levelshow']}")
|
|
print(f"定数:{note_infos[i]['level']}")
|
|
print(f"铺师:{note_infos[i]['designer']}")
|
|
print()
|
|
|