Reuse stored genre name selection
This commit is contained in:
@@ -747,8 +747,8 @@ public sealed class MultilangController : ControllerBase
|
||||
|
||||
private bool TryBuildGenresResponse(string media, string locale, out string body)
|
||||
{
|
||||
var rows = _store.GetGenres(media);
|
||||
if (rows.Length == 0)
|
||||
var names = _store.GetGenreNames(media, locale);
|
||||
if (names.Count == 0)
|
||||
{
|
||||
body = string.Empty;
|
||||
return false;
|
||||
@@ -756,15 +756,13 @@ public sealed class MultilangController : ControllerBase
|
||||
|
||||
var culture = GetSortCulture(ResolveSortLocale(locale, locale));
|
||||
var comparer = StringComparer.Create(culture, true);
|
||||
var items = rows
|
||||
.GroupBy(r => r.TmdbId)
|
||||
.Select(g => new { Id = g.Key, Name = PickGenreName(g, locale) })
|
||||
.Where(g => !string.IsNullOrWhiteSpace(g.Name))
|
||||
.OrderBy(g => g.Name, comparer)
|
||||
var items = names
|
||||
.Where(kv => !string.IsNullOrWhiteSpace(kv.Value))
|
||||
.OrderBy(kv => kv.Value, comparer)
|
||||
.Select(g => new JsonObject
|
||||
{
|
||||
["Name"] = g.Name,
|
||||
["Id"] = "tmdb-" + g.Id.ToString(CultureInfo.InvariantCulture),
|
||||
["Name"] = g.Value,
|
||||
["Id"] = "tmdb-" + g.Key.ToString(CultureInfo.InvariantCulture),
|
||||
["Type"] = "Genre",
|
||||
["ChildCount"] = 0,
|
||||
["BackdropImageTags"] = new JsonArray(),
|
||||
@@ -827,18 +825,6 @@ public sealed class MultilangController : ControllerBase
|
||||
item["GenreItems"] = genreItems;
|
||||
}
|
||||
|
||||
private static string PickGenreName(IEnumerable<GenreRow> rows, string locale)
|
||||
{
|
||||
var candidates = rows.ToArray();
|
||||
var requested = (locale ?? string.Empty).Trim();
|
||||
var requestedBase = requested.Split('-', StringSplitOptions.RemoveEmptyEntries).FirstOrDefault() ?? string.Empty;
|
||||
return candidates.FirstOrDefault(r => r.Lang.Equals(requested, StringComparison.OrdinalIgnoreCase)).Name ??
|
||||
candidates.FirstOrDefault(r => !string.IsNullOrWhiteSpace(requestedBase) && r.Lang.Equals(requestedBase, StringComparison.OrdinalIgnoreCase)).Name ??
|
||||
candidates.FirstOrDefault(r => r.Lang.Equals("en-US", StringComparison.OrdinalIgnoreCase)).Name ??
|
||||
candidates.FirstOrDefault(r => r.Lang.Equals("en", StringComparison.OrdinalIgnoreCase)).Name ??
|
||||
candidates.FirstOrDefault().Name;
|
||||
}
|
||||
|
||||
private static void FilterRootByGenres(JsonNode root, IReadOnlyDictionary<string, FactsData> factsByItem, int[] genreIds)
|
||||
{
|
||||
var wanted = genreIds.ToHashSet();
|
||||
|
||||
Reference in New Issue
Block a user