"""Asset name transformer for SME Germany assets.""" import os from constants import database as db_const from util.transformers.ingestion_transformer import IngestionTransformer class SuburbanLocalTransform(IngestionTransformer): def __init__(self, asset_list=None): super().__init__(asset_list=asset_list) def transform_audio_assets(self): """Transform the audio asset table into a dict to process.""" master_list = {} return_list = list() relid = None track_count_list = {} track_count = 0 for asset_row in self.asset_list: # Store completed relid (foreign_keys, UPC, etc.) to prevent # dupes later. if relid and asset_row[db_const.source_relid] != relid: master_list[relid] = return_list.copy() return_list = list() track_count_list[relid] = track_count track_count = 0 track_count += 1 # Strange syntax is mandatory: # https://stackoverflow.com/a/26807879/6788688 relid, asset = super( SuburbanLocalTransform, self ).transform_one_audio_asset(asset_row=asset_row) # Fix filenames to have one leading zero for tracks and volumes, # not 2 as default in base class. audio_file_template = '{}_{}_{}.wav' audio_file_template_flac = '{}_{}_{}.flac' asset.source_audio_file = audio_file_template.format( relid, str(asset_row[db_const.volume]), str(asset_row[db_const.track])) asset.source_audio_file_flac = audio_file_template_flac.format( relid, str(asset_row[db_const.volume]), str(asset_row[db_const.track])) # Fix path asset.release_level_key = relid return_list.append(asset) if return_list: master_list[relid] = return_list.copy() track_count_list[relid] = track_count return master_list, track_count_list def transform_cover_assets(self): """Transform the cover asset table into a dict to process.""" return_list = list() for asset_row in self.asset_list: asset = super( SuburbanLocalTransform, self ).transform_one_cover_asset(asset_row) audio_asset_base_name = os.path.splitext( asset_row[db_const.file_name])[0] asset.source_cover_jpg_file = audio_asset_base_name + '.jpg' asset.source_cover_tif_file = audio_asset_base_name + '.tif' return_list.append(asset) return return_list