"""Query to get sound recording metadata based on tuid. Example: query tracksByTuids($tuid: String!){ tuid26335764: track(tuid: "26335764") { ...TrackInfo } tuid28177688: track(tuid: "28177688") { ...TrackInfo } tuid28177618: track(tuid: "28177618") { ...TrackInfo } } fragment TrackInfo on Track { product { status productConfiguration deletions } tuid isrc pInfo durationMinutes durationSeconds trackName trackType version explicit metaLanguageCode language{ iso_639_1_code } primaryArtists{ artistName artistType } writers{ trackWriterName } } """ track_query = ''' query tracksByTuids {{ {tracks_by_tuid} }} fragment TrackInfo on Track {{ product {{ status productConfiguration deletions }} tuid isrc pInfo durationMinutes durationSeconds trackName trackType version explicit metaLanguageCode language {{ iso_639_1_code }} primaryArtists {{ artistName artistType }} writers {{ trackWriterName }} }} ''' tracks_by_tuid = ''' tuid{tuid}: track(tuid: "{tuid}") {{ ...TrackInfo }} ''' def build_track_query(tuids): """Build query string to get track metadata for a list of tuids.""" # todo - if lambda is live, this method should have unit tests formatted_tracks_by_tuid = '' num = 1 for tuid in tuids: formatted_tracks_by_tuid += tracks_by_tuid.format( num=num, tuid=tuid) num += 1 return track_query.format(tracks_by_tuid=formatted_tracks_by_tuid)