This commit is contained in:
2025-05-10 11:01:35 +08:00
parent debe1d2102
commit 3687cf2655
2 changed files with 34 additions and 28 deletions

View File

@@ -7,6 +7,7 @@ from ab2png import convert_ab_to_png
from acb2mp3 import convert_awb_to_wav, convert_wav_to_mp3
from search import search_music_by_id
from pv_decode import dat_to_mp4
from loguru import logger
# 假设你已实现以下函数
@@ -78,7 +79,7 @@ def convert_to_simai_folder(result,output_folder):
level = num + 2 # 转换为 Simai 难度等级
convert_results[level] = ma2tosimai(path)
except Exception as e:
print(f"处理 {filename} 时出错: {e}")
logger.error(f"处理 {filename} 时出错: {e}")
convert_awb_to_wav(awb_file,f"work/{id}/temp.wav")
convert_wav_to_mp3(f"work/{id}/temp.wav",f"work/{id}/track.mp3")
@@ -107,9 +108,9 @@ def convert_to_simai_folder(result,output_folder):
dst_file = os.path.join(target_folder, file_name)
if os.path.exists(src_file):
shutil.copy(src_file, dst_file)
print(f"文件 {file_name} 复制成功")
logger.info(f"文件 {file_name} 复制成功")
else:
print(f"文件 {file_name} 不存在,跳过复制")
logger.warning(f"文件 {file_name} 不存在,跳过复制")
if os.path.exists(source_folder):
@@ -133,7 +134,7 @@ def convert_to_simai_folder(result,output_folder):
if __name__ == "__main__":
res = search_music_by_id(input("ID:"))
print(res)
print("Converting...")
logger.info(res)
logger.info("Converting...")
convert_to_simai_folder(res,"result")

View File

@@ -1,4 +1,7 @@
import os
from loguru import logger
from ReadOpt import parse_music_xml, level_name
# 根目录
@@ -7,6 +10,8 @@ streaming_assets = "/Users/bennett/Downloads/SDEZ/Package/Sinmai_Data/StreamingA
def search_music_by_id(search_id):
for asset_dir in os.listdir(streaming_assets):
root_dir = os.path.join(streaming_assets, asset_dir)
rd = os.path.join(streaming_assets, "A000")
music_dir = os.path.join(root_dir, "music")
if not os.path.isdir(music_dir):
continue
@@ -19,68 +24,68 @@ def search_music_by_id(search_id):
music_id, name, artist, notes = parse_music_xml(music_xml_path)
if music_id == search_id:
print(f"\n【找到曲目:{name}")
print(f" ID{music_id}")
print(f" 艺术家:{artist}")
print(f" 所在分区:{asset_dir}")
print(" 谱面信息:")
logger.info(f"\n【找到曲目:{name}")
logger.info(f" ID{music_id}")
logger.info(f" 艺术家:{artist}")
logger.info(f" 所在分区:{asset_dir}")
logger.info(" 谱面信息:")
for i, note in enumerate(notes):
level_str = level_name[i] if i < len(level_name) else f"Diff{i}"
print(f" - {level_str}: 定数 {note['level']} / 显示 {note['levelshow']} / 谱师 {note['designer']}")
logger.info(f" - {level_str}: 定数 {note['level']} / 显示 {note['levelshow']} / 谱师 {note['designer']}")
# ma2 文件
ma2_files = [f for f in os.listdir(sub_path) if f.endswith(".ma2")]
ma2_paths = [os.path.join(sub_path, f) for f in ma2_files]
ma2_paths.sort()
if ma2_files:
print(" MA2 文件:")
logger.info(" MA2 文件:")
for f in ma2_files:
print(f" - {os.path.join(sub_path, f)}")
logger.info(f" - {os.path.join(sub_path, f)}")
else:
print(" MA2 文件:未找到")
logger.warning(" MA2 文件:未找到")
# 曲绘(查 jacket 文件夹)
jacket_dir = os.path.join(root_dir, "AssetBundleImages", "jacket")
jacket_dir = os.path.join(rd, "AssetBundleImages", "jacket")
jacket_ab = f"ui_jacket_00{int(music_id)-10000}.ab"
alt_exts = [".png", ".jpg", ".jpeg"]
alt_jacket = next((f for f in os.listdir(jacket_dir)
if f.startswith(f"ui_jacket_{music_id}")
and os.path.splitext(f)[1].lower() in alt_exts), None)
print(" 曲绘文件:")
logger.info(" 曲绘文件:")
if os.path.exists(os.path.join(jacket_dir, jacket_ab)):
print(f" - {os.path.join(jacket_dir, jacket_ab)}")
logger.info(f" - {os.path.join(jacket_dir, jacket_ab)}")
elif alt_jacket:
print(f" - {os.path.join(jacket_dir, alt_jacket)}")
logger.info(f" - {os.path.join(jacket_dir, alt_jacket)}")
else:
print(" - 未找到")
logger.warning(" - 未找到")
# 音频文件SoundData
sound_dir = os.path.join(root_dir, "SoundData")
sound_dir = os.path.join(rd, "SoundData")
audio_prefix = f"music00{int(music_id)-10000}"
audio_files = [f for f in os.listdir(sound_dir) if f.lower().startswith(audio_prefix)]
print(" 音频文件:")
logger.info(" 音频文件:")
if audio_files:
for f in audio_files:
print(f" - {os.path.join(sound_dir, f)}")
logger.info(f" - {os.path.join(sound_dir, f)}")
else:
print(" - 未找到")
logger.warning(" - 未找到")
audio_lists = []
for f in audio_files:
audio_lists.append(os.path.join(sound_dir, f))
# 视频 dat 文件MovieData
movie_dir = os.path.join(root_dir, "MovieData")
movie_dir = os.path.join(rd, "MovieData")
dat_name = f"00{int(music_id)-10000}.dat"
dat_path = os.path.join(movie_dir, dat_name)
print(" 视频 DAT 文件:")
print(f" - {dat_path}" if os.path.exists(dat_path) else " - 未找到")
logger.info(" 视频 DAT 文件:")
logger.info(f" - {dat_path}" if os.path.exists(dat_path) else " - 未找到")
return [[music_id, name, artist,notes],ma2_paths,os.path.join(jacket_dir, jacket_ab),audio_lists,dat_path]
print(f"\n未找到 ID 为 {search_id} 的曲目信息。")
logger.error(f"\n未找到 ID 为 {search_id} 的曲目信息。")
return None
@@ -89,7 +94,7 @@ def search_music_by_id(search_id):
if __name__ == "__main__":
target_id = input("请输入要搜索的曲目 ID").strip()
result = search_music_by_id(target_id)
print(result)
logger.info(result)