You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
55 lines
1.8 KiB
55 lines
1.8 KiB
4 years ago
|
import hashlib
|
||
|
import shutil
|
||
|
from pathlib import Path
|
||
|
|
||
|
from d4dj_utils.manager.asset_manager import AssetManager
|
||
|
from d4dj_utils.master.master_asset import MasterAsset
|
||
|
|
||
|
from miyu_bot.commands.common.master_asset_manager import MasterFilterManager, hash_master
|
||
|
|
||
|
|
||
|
def main():
|
||
|
target_dir = Path('./export')
|
||
|
target_dir.mkdir(parents=True, exist_ok=True)
|
||
|
|
||
|
asset_manager = AssetManager('assets')
|
||
|
|
||
|
music_dir = target_dir / 'music'
|
||
|
chart_dir = music_dir / 'charts'
|
||
|
card_dir = target_dir / 'cards'
|
||
|
card_icon_dir = card_dir / 'icons'
|
||
|
card_art_dir = card_dir / 'art'
|
||
|
|
||
|
music_dir.mkdir(exist_ok=True)
|
||
|
chart_dir.mkdir(exist_ok=True)
|
||
|
card_dir.mkdir(exist_ok=True)
|
||
|
card_icon_dir.mkdir(exist_ok=True)
|
||
|
card_art_dir.mkdir(exist_ok=True)
|
||
|
|
||
|
for music in asset_manager.music_master.values():
|
||
|
for chart in music.charts.values():
|
||
|
try:
|
||
|
chart_hash = hash_master(chart)
|
||
|
chart_path = chart.image_path
|
||
|
target_path = chart_dir / f'{chart_path.stem}_{chart_hash}{chart_path.suffix}'
|
||
|
shutil.copy(chart_path, target_path)
|
||
|
except FileNotFoundError:
|
||
|
pass
|
||
|
|
||
|
for card in asset_manager.card_master.values():
|
||
|
card_hash = hash_master(card)
|
||
|
try:
|
||
|
for lb in range(2):
|
||
|
art_path = card.art_path(lb)
|
||
|
art_target = card_art_dir / f'{art_path.stem}_{card_hash}{art_path.suffix}'
|
||
|
icon_path = card.icon_path(lb)
|
||
|
icon_target = card_icon_dir / f'{icon_path.stem}_{card_hash}{icon_path.suffix}'
|
||
|
shutil.copy(art_path, art_target)
|
||
|
shutil.copy(icon_path, icon_target)
|
||
|
except FileNotFoundError:
|
||
|
pass
|
||
|
|
||
|
|
||
|
if __name__ == '__main__':
|
||
|
main()
|