public List <Artist> AddArtists(List <Artist> newArtists) { var added = DateTime.UtcNow; var artistsToAdd = new List <Artist>(); foreach (var s in newArtists) { // TODO: Verify if adding skyhook data will be slow try { var artist = AddSkyhookData(s); artist = SetPropertiesAndValidate(artist); artist.Added = added; artistsToAdd.Add(artist); } catch (Exception ex) { // Catch Import Errors for now until we get things fixed up _logger.Error(ex, "Failed to import id: {0} - {1}", s.Metadata.Value.ForeignArtistId, s.Metadata.Value.Name); } } // add metadata _artistMetadataService.UpsertMany(artistsToAdd.Select(x => x.Metadata.Value).ToList()); artistsToAdd.ForEach(x => x.ArtistMetadataId = x.Metadata.Value.Id); return(_artistService.AddArtists(artistsToAdd)); }
public List <Artist> AddArtists(List <Artist> newArtists, bool doRefresh = true, bool ignoreErrors = false) { var added = DateTime.UtcNow; var artistsToAdd = new List <Artist>(); foreach (var s in newArtists) { try { var artist = AddSkyhookData(s); artist = SetPropertiesAndValidate(artist); artist.Added = added; if (artistsToAdd.Any(f => f.ForeignArtistId == artist.ForeignArtistId)) { _logger.Debug("Musicbrainz ID {0} was not added due to validation failure: Artist already exists on list", s.ForeignArtistId); continue; } artistsToAdd.Add(artist); } catch (ValidationException ex) { if (!ignoreErrors) { throw; } // Catch Import Errors for now until we get things fixed up _logger.Debug(ex, "Failed to import id: {0} - {1}", s.Metadata.Value.ForeignArtistId, s.Metadata.Value.Name); } } // add metadata _artistMetadataService.UpsertMany(artistsToAdd.Select(x => x.Metadata.Value).ToList()); artistsToAdd.ForEach(x => x.ArtistMetadataId = x.Metadata.Value.Id); return(_artistService.AddArtists(artistsToAdd, doRefresh)); }