Fixed: Computing most common author now we have multiple authors

This commit is contained in:
ta264 2021-07-25 21:39:59 +01:00
parent 85e945430b
commit b1e92e7f73
2 changed files with 18 additions and 11 deletions

View file

@ -285,7 +285,13 @@ public IEnumerable<CandidateEdition> GetRemoteCandidates(LocalEdition localEditi
}
else
{
authorTags.AddRange(localEdition.LocalBooks.MostCommon(x => x.FileTrackInfo.Authors));
// the most common list of authors reported by a file
var authors = localEdition.LocalBooks.Select(x => x.FileTrackInfo.Authors.Where(a => a.IsNotNullOrWhiteSpace()).ToList())
.GroupBy(x => x.ConcatToString())
.OrderByDescending(x => x.Count())
.First()
.First();
authorTags.AddRange(authors);
}
var bookTag = localEdition.LocalBooks.MostCommon(x => x.FileTrackInfo.BookTitle) ?? "";

View file

@ -23,19 +23,20 @@ public static Distance BookDistance(List<LocalBook> localTracks, Edition edition
{
var dist = new Distance();
var authors = new List<string>();
// the most common list of authors reported by a file
var fileAuthors = localTracks.Select(x => x.FileTrackInfo.Authors.Where(a => a.IsNotNullOrWhiteSpace()).ToList())
.GroupBy(x => x.ConcatToString())
.OrderByDescending(x => x.Count())
.First()
.First();
var fileAuthors = localTracks.MostCommon(x => x.FileTrackInfo.Authors);
if (fileAuthors?.Any() ?? false)
var authors = new List<string>(fileAuthors);
foreach (var author in fileAuthors)
{
authors.AddRange(fileAuthors);
foreach (var author in fileAuthors)
if (author.Contains(','))
{
if (author.Contains(','))
{
authors.Add(authors[0].Split(',', 2).Select(x => x.Trim()).Reverse().ConcatToString(" "));
}
authors.Add(authors[0].Split(',', 2).Select(x => x.Trim()).Reverse().ConcatToString(" "));
}
}