public async Task <MusicBrainzSearchResult> GetTracks(MusicBrainzSearchResult release) { if (release.Equals(MusicBrainzSearchResult.Empty)) { throw new ArgumentException("Id is empty!"); } if (release.Id == Guid.Empty) { throw new ArgumentException("Id is empty!"); } try { var res = await _query.LookupReleaseAsync(release.Id, Include.Genres | Include.Media | Include.Recordings); if (res == null || !res.Media.Any()) { return(MusicBrainzSearchResult.Empty); } release.Genre = res.Media[0].Tracks?[0].Recording.Genres?.FirstOrDefault()?.Name; release.Tracks = res.Media[0].Tracks?.Count > 0 ? res.Media[0].Tracks.Select(x => x.Title) : Enumerable.Empty <string>(); return(release); } catch { return(release); } }
private void ApplyOnlineMetatags(MusicBrainzSearchResult musicBrainz) { if (musicBrainz.Tracks == null || !musicBrainz.Tracks.Any()) { return; } for (int i = 0; i < Files.Length; i++) { if (!string.IsNullOrEmpty(musicBrainz.Artist)) { Files[i].Artist = musicBrainz.Artist; } if (!string.IsNullOrEmpty(musicBrainz.Release)) { Files[i].Album = musicBrainz.Release; } if (!string.IsNullOrEmpty(musicBrainz.Year)) { Files[i].Year = string.IsNullOrEmpty(musicBrainz.Year) ? 0 : int.Parse(musicBrainz.Year); } if (!string.IsNullOrEmpty(musicBrainz.Genre)) { Files[i].Genre = musicBrainz.Genre; } if (!string.IsNullOrEmpty(musicBrainz.Tracks.ElementAtOrDefault(i))) { Files[i].TrackName = musicBrainz.Tracks.ElementAt(i); Files[i].TrackNumber = i + 1; } Files[i].Tags = MetatagsHelpers.CreateMetatags( Files[i].Artist, Files[i].Album, Files[i].Year.HasValue ? Files[i].Year.ToString() : string.Empty, Files[i].Genre, Files[i].TrackName, Files[i].TrackNumber.HasValue ? Files[i].TrackNumber.ToString() : string.Empty); } dgFilesSelected.Refresh(); }