mirror of
https://github.com/cainan-c/TaikoPythonTools.git
synced 2024-11-13 18:10:54 +01:00
Changes
This commit is contained in:
parent
473f5d01fe
commit
5ac874ef8e
@ -593,6 +593,7 @@ def export_data():
|
||||
|
||||
if custom_songs:
|
||||
for item_id in selected_items:
|
||||
|
||||
song_id = tree.item(item_id)["values"][2]
|
||||
custom_fumen_folder_path = os.path.join(custom_data_dir, "fumen", str(song_id))
|
||||
if os.path.exists(custom_fumen_folder_path):
|
||||
@ -797,8 +798,20 @@ def export_data():
|
||||
|
||||
# Find the wordlist items corresponding to song variations
|
||||
word_keys = [f"song_{song_id}", f"song_sub_{song_id}", f"song_detail_{song_id}"]
|
||||
|
||||
def find_word_info(key, word_lists):
|
||||
for word_list in word_lists:
|
||||
word_info = next((item for item in word_list["items"] if item["key"] == key), None)
|
||||
if word_info:
|
||||
return word_info
|
||||
return None
|
||||
|
||||
word_lists = [word_list]
|
||||
if custom_songs:
|
||||
word_lists.append(custom_word_list)
|
||||
|
||||
for key in word_keys:
|
||||
word_info = next((item for item in word_list["items"] if item["key"] == key), None)
|
||||
word_info = find_word_info(key, word_lists)
|
||||
if word_info:
|
||||
selected_wordlist.append(word_info)
|
||||
|
||||
@ -834,8 +847,6 @@ def export_data():
|
||||
if os.path.exists(f"song_{song_id}.mp3.at9"):
|
||||
os.remove(f"song_{song_id}.mp3.at9")
|
||||
print(f"Deleted song_{song_id}.mp3.at9")
|
||||
else:
|
||||
print(f"Error: File song_{song_id}.mp3.at9 not found.")
|
||||
|
||||
# Check if preview_pos or custom_preview_pos is not None and run conversion
|
||||
if preview_pos is not None or (custom_songs and custom_preview_pos is not None):
|
||||
@ -899,8 +910,6 @@ def export_data():
|
||||
if os.path.exists(f"song_{song_id}.mp3.idsp"):
|
||||
os.remove(f"song_{song_id}.mp3.idsp")
|
||||
print(f"Deleted song_{song_id}.mp3.idsp")
|
||||
else:
|
||||
print(f"Error: File song_{song_id}.mp3.idsp not found.")
|
||||
|
||||
# Check if preview_pos or custom_preview_pos is not None and run conversion
|
||||
if preview_pos is not None or (custom_songs and custom_preview_pos is not None):
|
||||
|
@ -4,6 +4,7 @@ import shutil
|
||||
from pydub import AudioSegment
|
||||
import subprocess
|
||||
import concurrent.futures
|
||||
from concurrent.futures import ThreadPoolExecutor
|
||||
import argparse
|
||||
import logging
|
||||
from threading import Lock
|
||||
@ -238,10 +239,20 @@ def move_and_rename_bin_files(tja_path, output_dir, unique_id):
|
||||
output_path = os.path.join(output_dir, f"fumen/cs{unique_id:04d}")
|
||||
os.makedirs(output_path, exist_ok=True)
|
||||
|
||||
for difficulty in ["_e", "_n", "_h", "_x", "_m"]:
|
||||
difficulties = ["_e", "_n", "_h", "_x", "_m"]
|
||||
any_bin_file_moved = False
|
||||
|
||||
for difficulty in difficulties:
|
||||
bin_file = f"{os.path.splitext(tja_path)[0]}{difficulty}.bin"
|
||||
if os.path.exists(bin_file):
|
||||
shutil.move(bin_file, os.path.join(output_path, f"cs{unique_id:04d}{difficulty}.bin"))
|
||||
any_bin_file_moved = True
|
||||
|
||||
if not any_bin_file_moved:
|
||||
# Move the generic .bin file as cs{unique_id:04d}_m.bin
|
||||
generic_bin_file = f"{os.path.splitext(tja_path)[0]}.bin"
|
||||
if os.path.exists(generic_bin_file):
|
||||
shutil.move(generic_bin_file, os.path.join(output_path, f"cs{unique_id:04d}_m.bin"))
|
||||
|
||||
def process_song_charts(dir_path, file, output_folder, unique_id):
|
||||
tja_path = os.path.join(dir_path, file)
|
||||
@ -253,15 +264,32 @@ def process_song_metadata(dir_path, file, genre_no, unique_id, output_folder):
|
||||
info = parse_tja(tja_path)
|
||||
create_json_files(info, genre_no, unique_id, output_folder)
|
||||
|
||||
#def process_song_audio(dir_path, file, unique_id, output_folder):
|
||||
# tja_path = os.path.join(dir_path, file)
|
||||
# info = parse_tja(tja_path)
|
||||
# convert_audio(os.path.join(dir_path, info['WAVE']), os.path.join(output_folder, f"sound/song_cs{unique_id:04d}.mp3"))
|
||||
|
||||
def process_song_audio(dir_path, file, unique_id, output_folder):
|
||||
tja_path = os.path.join(dir_path, file)
|
||||
info = parse_tja(tja_path)
|
||||
convert_audio(os.path.join(dir_path, info['WAVE']), os.path.join(output_folder, f"sound/song_cs{unique_id:04d}.mp3"))
|
||||
|
||||
def process_songs_multithreaded(dir_path, files, output_folder):
|
||||
with ThreadPoolExecutor() as executor:
|
||||
futures = []
|
||||
for unique_id, file in enumerate(files):
|
||||
futures.append(executor.submit(process_song_audio, dir_path, file, unique_id, output_folder))
|
||||
|
||||
# Optionally, wait for all futures to complete
|
||||
for future in futures:
|
||||
future.result()
|
||||
|
||||
|
||||
|
||||
def process_song(dir_path, file, genre_no, unique_id, output_folder):
|
||||
try:
|
||||
process_song_charts(dir_path, file, output_folder, unique_id)
|
||||
process_song_audio(dir_path, file, unique_id, output_folder)
|
||||
process_song_charts(dir_path, file, output_folder, unique_id)
|
||||
process_song_metadata(dir_path, file, genre_no, unique_id, output_folder)
|
||||
#logging.info(f"Processed {file} successfully.")
|
||||
except Exception as e:
|
||||
|
Loading…
Reference in New Issue
Block a user