private Album AddSkyhookData(Album newAlbum) { Tuple <string, Album, List <ArtistMetadata> > tuple = null; try { tuple = _albumInfo.GetAlbumInfo(newAlbum.ForeignAlbumId); } catch (AlbumNotFoundException) { _logger.Error("Album with MusicBrainz Id {0} was not found, it may have been removed from Musicbrainz.", newAlbum.ForeignAlbumId); throw new ValidationException(new List <ValidationFailure> { new ValidationFailure("MusicbrainzId", "An album with this ID was not found", newAlbum.ForeignAlbumId) }); } newAlbum.UseMetadataFrom(tuple.Item2); newAlbum.Added = DateTime.UtcNow; var metadata = tuple.Item3.Single(x => x.ForeignArtistId == tuple.Item1); newAlbum.ArtistMetadata = metadata; return(newAlbum); }
protected override RemoteData GetRemoteData(Album local, List <Album> remote) { var result = new RemoteData(); // remove not in remote list and ShouldDelete is true if (remote != null && !remote.Any(x => x.ForeignAlbumId == local.ForeignAlbumId || x.OldForeignAlbumIds.Contains(local.ForeignAlbumId)) && ShouldDelete(local)) { return(result); } Tuple <string, Album, List <ArtistMetadata> > tuple = null; try { tuple = _albumInfo.GetAlbumInfo(local.ForeignAlbumId); } catch (AlbumNotFoundException) { return(result); } if (tuple.Item2.AlbumReleases.Value.Count == 0) { _logger.Debug($"{local} has no valid releases, removing."); return(result); } result.Entity = tuple.Item2; result.Entity.Id = local.Id; result.Metadata = tuple.Item3; return(result); }