from pathlib import Path

from d4dj_utils.master.card_master import CardMaster
from d4dj_utils.master.chart_master import ChartMaster
from d4dj_utils.master.event_master import EventMaster
from d4dj_utils.master.music_master import MusicMaster

from miyu_bot.bot.master_asset_manager import hash_master


def _get_asset_path(master, parent, path):
    return str((Path(parent) / f'{path.stem}_{hash_master(master)}{path.suffix}').as_posix())


music_dir = Path('.') / 'music'
chart_dir = music_dir / 'charts'
jacket_dir = music_dir / 'jacket'
card_dir = Path('.') / 'cards'
card_icon_dir = card_dir / 'icons'
card_art_dir = card_dir / 'art'
event_dir = Path('.') / 'events'
event_logo_dir = event_dir / 'logos'


def get_music_jacket_path(music: MusicMaster):
    return _get_asset_path(music, jacket_dir, music.jacket_path)


def get_chart_image_path(chart: ChartMaster):
    return _get_asset_path(chart, chart_dir, chart.image_path)


def get_chart_mix_path(chart: ChartMaster):
    return _get_asset_path(chart, chart_dir, chart.mix_path)


def get_card_art_path(card: CardMaster, lb):
    return _get_asset_path(card, card_art_dir, card.art_path(lb))


def get_card_icon_path(card: CardMaster, lb):
    return _get_asset_path(card, card_icon_dir, card.icon_path(lb))


def get_event_logo_path(event: EventMaster):
    return _get_asset_path(event, event_logo_dir, event.logo_path)