public static int CalculateMatchScore(AlbumModel model, MusicBrainzAlbumsResultRow result) { int score = 0; if (String.Equals(model.Name, result.Name, StringComparison.OrdinalIgnoreCase)) score += 3; if (String.Equals(model.Artist, result.Artist, StringComparison.OrdinalIgnoreCase)) score += 2; if (result.Score > 90) score += 2; if (model.SongsCount == result.NumberOfTracks) { score += 2; } else { if (Math.Abs(model.SongsCount - result.NumberOfTracks) < 2) score += 1; else score -= 1; } return score; }
public async Task<String> GetAlbumArtUrl(MusicBrainzAlbumsResultRow fromModel) { HttpClient client = new HttpClient(); var stringBody = await client.GetStringAsync(fromModel.Url); client.Dispose(); HtmlDocument document = HtmlDocumentFactory.LoadFromString(stringBody); string imgUrl = string.Empty; var coverArtDiv = document.DocumentNode.Descendants("div") .FirstOrDefault(d => d.Attributes.Contains("class") && d.Attributes["class"].Value.Contains("cover-art")); if (coverArtDiv != null) { imgUrl = coverArtDiv.Descendants("a").First().Attributes["href"].Value; } return imgUrl; }
public static int CalculateScoreFromRules(AlbumModel model, MusicBrainzAlbumsResultRow result) { return Rules.Sum(rule => rule(model, result)); }