"""Contains utility functions dealing with assets.""" def select_primary_assets(assets): """Choose asset for each extension available. Args: assets (list): Assets per sound recording Returns: dict: selected assets per extension """ asset_map = {} # filter out assets not easily retrievable for delivery assets = [ x for x in assets if x['source'] == 'ows-assets-db' ] # select first occurance of each extension, lowest tuid first for asset in sorted(assets, key=lambda x: min([t['tuid'] for t in x['tracks']])): # noqa:E501 extension = str.lower(asset['extension']) if extension not in asset_map: asset_map[extension] = { 'uuid': asset['asset_id'], 'filename': asset['filename'], 'extension': extension } # list of assets, no duplicates return [v for _, v in sorted(asset_map.items())]