Merge pull request #810 from Bond-009/localization

Fix loading of rating files
This commit is contained in:
Vasily 2019-02-05 00:19:32 +03:00 committed by GitHub
commit 181de97ce5
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 25 additions and 15 deletions

View File

@ -43,7 +43,7 @@
<EmbeddedResource Include="Localization\iso6392.txt" /> <EmbeddedResource Include="Localization\iso6392.txt" />
<EmbeddedResource Include="Localization\countries.json" /> <EmbeddedResource Include="Localization\countries.json" />
<EmbeddedResource Include="Localization\Core\*.json" /> <EmbeddedResource Include="Localization\Core\*.json" />
<EmbeddedResource Include="Localization\Ratings\*.txt" /> <EmbeddedResource Include="Localization\Ratings\*.csv" />
</ItemGroup> </ItemGroup>
</Project> </Project>

View File

@ -60,29 +60,35 @@ namespace Emby.Server.Implementations.Localization
public async Task LoadAll() public async Task LoadAll()
{ {
const string ratingsResource = "Emby.Server.Implementations.Ratings."; const string ratingsResource = "Emby.Server.Implementations.Localization.Ratings.";
Directory.CreateDirectory(LocalizationPath); Directory.CreateDirectory(LocalizationPath);
var existingFiles = GetRatingsFiles(LocalizationPath).Select(Path.GetFileName); var existingFiles = GetRatingsFiles(LocalizationPath).Select(Path.GetFileName);
// Extract from the assembly // Extract from the assembly
foreach (var resource in _assembly.GetManifestResourceNames() foreach (var resource in _assembly.GetManifestResourceNames())
.Where(i => i.StartsWith(ratingsResource)))
{ {
if (!resource.StartsWith(ratingsResource))
{
continue;
}
string filename = "ratings-" + resource.Substring(ratingsResource.Length); string filename = "ratings-" + resource.Substring(ratingsResource.Length);
if (!existingFiles.Contains(filename)) if (existingFiles.Contains(filename))
{ {
using (var stream = _assembly.GetManifestResourceStream(resource)) continue;
{ }
string target = Path.Combine(LocalizationPath, filename);
_logger.LogInformation("Extracting ratings to {0}", target);
using (var fs = _fileSystem.GetFileStream(target, FileOpenMode.Create, FileAccessMode.Write, FileShareMode.Read)) using (var stream = _assembly.GetManifestResourceStream(resource))
{ {
await stream.CopyToAsync(fs); string target = Path.Combine(LocalizationPath, filename);
} _logger.LogInformation("Extracting ratings to {0}", target);
using (var fs = _fileSystem.GetFileStream(target, FileOpenMode.Create, FileAccessMode.Write, FileShareMode.Read))
{
await stream.CopyToAsync(fs);
} }
} }
} }
@ -289,7 +295,8 @@ namespace Emby.Server.Implementations.Localization
/// <returns>Dictionary{System.StringParentalRating}.</returns> /// <returns>Dictionary{System.StringParentalRating}.</returns>
private async Task LoadRatings(string file) private async Task LoadRatings(string file)
{ {
Dictionary<string, ParentalRating> dict = new Dictionary<string, ParentalRating>(StringComparer.OrdinalIgnoreCase); Dictionary<string, ParentalRating> dict
= new Dictionary<string, ParentalRating>(StringComparer.OrdinalIgnoreCase);
using (var str = File.OpenRead(file)) using (var str = File.OpenRead(file))
using (var reader = new StreamReader(str)) using (var reader = new StreamReader(str))
@ -309,7 +316,10 @@ namespace Emby.Server.Implementations.Localization
dict.Add(parts[0], (new ParentalRating { Name = parts[0], Value = value })); dict.Add(parts[0], (new ParentalRating { Name = parts[0], Value = value }));
} }
#if DEBUG #if DEBUG
_logger.LogWarning("Misformed line in {Path}", file); else
{
_logger.LogWarning("Misformed line in {Path}", file);
}
#endif #endif
} }
} }