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)
|
private bool TryBuildGenresResponse(string media, string locale, out string body)
|
||||||
{
|
{
|
||||||
var rows = _store.GetGenres(media);
|
var names = _store.GetGenreNames(media, locale);
|
||||||
if (rows.Length == 0)
|
if (names.Count == 0)
|
||||||
{
|
{
|
||||||
body = string.Empty;
|
body = string.Empty;
|
||||||
return false;
|
return false;
|
||||||
@@ -756,15 +756,13 @@ public sealed class MultilangController : ControllerBase
|
|||||||
|
|
||||||
var culture = GetSortCulture(ResolveSortLocale(locale, locale));
|
var culture = GetSortCulture(ResolveSortLocale(locale, locale));
|
||||||
var comparer = StringComparer.Create(culture, true);
|
var comparer = StringComparer.Create(culture, true);
|
||||||
var items = rows
|
var items = names
|
||||||
.GroupBy(r => r.TmdbId)
|
.Where(kv => !string.IsNullOrWhiteSpace(kv.Value))
|
||||||
.Select(g => new { Id = g.Key, Name = PickGenreName(g, locale) })
|
.OrderBy(kv => kv.Value, comparer)
|
||||||
.Where(g => !string.IsNullOrWhiteSpace(g.Name))
|
|
||||||
.OrderBy(g => g.Name, comparer)
|
|
||||||
.Select(g => new JsonObject
|
.Select(g => new JsonObject
|
||||||
{
|
{
|
||||||
["Name"] = g.Name,
|
["Name"] = g.Value,
|
||||||
["Id"] = "tmdb-" + g.Id.ToString(CultureInfo.InvariantCulture),
|
["Id"] = "tmdb-" + g.Key.ToString(CultureInfo.InvariantCulture),
|
||||||
["Type"] = "Genre",
|
["Type"] = "Genre",
|
||||||
["ChildCount"] = 0,
|
["ChildCount"] = 0,
|
||||||
["BackdropImageTags"] = new JsonArray(),
|
["BackdropImageTags"] = new JsonArray(),
|
||||||
@@ -827,18 +825,6 @@ public sealed class MultilangController : ControllerBase
|
|||||||
item["GenreItems"] = genreItems;
|
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)
|
private static void FilterRootByGenres(JsonNode root, IReadOnlyDictionary<string, FactsData> factsByItem, int[] genreIds)
|
||||||
{
|
{
|
||||||
var wanted = genreIds.ToHashSet();
|
var wanted = genreIds.ToHashSet();
|
||||||
|
|||||||
Reference in New Issue
Block a user