Files
ersatztv/ErsatzTV.Infrastructure/Metadata/LanguageCodeCache.cs
Jason Dove 08cbf59527 lower gop size and keyframe interval (#2832)
* lower gop size and keyframe interval

* update changelog

* fix build using latest dotnet sdk

* fixes
2026-02-19 13:35:27 -06:00

60 lines
1.8 KiB
C#

using System.Reflection;
using ErsatzTV.Core.Interfaces.Metadata;
namespace ErsatzTV.Infrastructure.Metadata;
public class LanguageCodeCache : ILanguageCodeCache
{
public IReadOnlyDictionary<string, string[]> CodeToGroupLookup { get; private set; }
public IReadOnlyList<string[]> AllGroups { get; private set; }
public async Task Load(CancellationToken cancellationToken)
{
var lookup = new Dictionary<string, string[]>();
var allGroups = new List<string[]>();
var assembly = Assembly.GetEntryAssembly();
if (assembly != null)
{
await using Stream resource = assembly.GetManifestResourceStream("ErsatzTV.Resources.ISO-639-2_utf-8.txt");
if (resource != null)
{
using var reader = new StreamReader(resource);
string line;
while ((line = await reader.ReadLineAsync(cancellationToken)) is not null)
{
if (string.IsNullOrWhiteSpace(line))
{
continue;
}
string[] split = line.Split("|");
if (split.Length != 5)
{
continue;
}
string[] group = new[] { split[0], split[1] }
.Where(c => !string.IsNullOrWhiteSpace(c))
.Distinct()
.ToArray();
if (group.Length > 0)
{
allGroups.Add(group);
foreach (string code in group)
{
lookup[code] = group;
}
}
}
}
}
CodeToGroupLookup = lookup;
AllGroups = allGroups;
}
}