"""Contains utility functions dealing with tracks.""" SUGGESTED_TRACK_AUDIO_ATTRIBUTE_ID = '0' def select_primary_track(tracks, primary_tuid): """Match primary track to track obj. Args: tracks (list): Tracks on sound recording primary_tuid (int): unique id of primary track """ if tracks: for track in tracks: track['primary'] = (int(track['tuid']) == primary_tuid) num_primary = [x['primary'] for x in tracks].count(True) if num_primary != 1: raise Exception(f'Unexpected primary track count of {num_primary}!') # noqa:E501 def clean_explicit_field(tracks): """Format empty string field into Enum. Args: tracks (list): Tracks on sound recording """ if tracks: for track in tracks: if track['explicit'] == '': track['explicit'] = 'U' def clean_tracks_with_null_product_release_dates(tracks): # noqa: D103 return list(filter(lambda track: not _release_date_is_null(track), tracks)) def _release_date_is_null(track): return track['product'] and track['product']['release_date'] is None def format_label_id_field(tracks): """Format label id field. Args: tracks (list): Tracks on sound recording """ if tracks: for track in tracks: label_id = track['product']['label']['id'] track['product']['label']['id'] = { 'vendor': label_id['vendorId'], 'subaccount': label_id['subaccountId'] } def extract_tracks_isrcs(tracks): """Extract list of unique ISRCs from tracks.""" isrcs = set() for track in tracks: isrc = track.get('isrc') if isrc: isrcs.add(isrc) return list(isrcs)