Browse Source

include external subtitles in search index (#1602)

pull/1604/head
Jason Dove 2 years ago committed by GitHub
parent
commit
c743d07425
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
  1. 9
      ErsatzTV.Infrastructure/Search/ElasticSearchIndex.cs
  2. 7
      ErsatzTV.Infrastructure/Search/LuceneSearchIndex.cs
  3. 12
      ErsatzTV/Pages/Index.razor

9
ErsatzTV.Infrastructure/Search/ElasticSearchIndex.cs

@ -46,7 +46,7 @@ public class ElasticSearchIndex : ISearchIndex
return exists.IsValidResponse; return exists.IsValidResponse;
} }
public int Version => 39; public int Version => 40;
public async Task<bool> Initialize( public async Task<bool> Initialize(
ILocalFileSystem localFileSystem, ILocalFileSystem localFileSystem,
@ -777,7 +777,7 @@ public class ElasticSearchIndex : ISearchIndex
foreach (MediaVersion version in mediaVersions.HeadOrNone()) foreach (MediaVersion version in mediaVersions.HeadOrNone())
{ {
var mediaCodes = version.Streams var mediaCodes = version.Streams
.Filter(ms => ms.MediaStreamKind == MediaStreamKind.Subtitle) .Filter(ms => ms.MediaStreamKind is MediaStreamKind.Subtitle or MediaStreamKind.ExternalSubtitle)
.Map(ms => ms.Language) .Map(ms => ms.Language)
.Distinct() .Distinct()
.ToList(); .ToList();
@ -814,7 +814,10 @@ public class ElasticSearchIndex : ISearchIndex
private static List<string> GetSubLanguageTags(IEnumerable<MediaVersion> mediaVersions) => private static List<string> GetSubLanguageTags(IEnumerable<MediaVersion> mediaVersions) =>
mediaVersions mediaVersions
.Map(mv => mv.Streams.Filter(ms => ms.MediaStreamKind == MediaStreamKind.Subtitle).Map(ms => ms.Language)) .Map(
mv => mv.Streams
.Filter(ms => ms.MediaStreamKind is MediaStreamKind.Subtitle or MediaStreamKind.ExternalSubtitle)
.Map(ms => ms.Language))
.Flatten() .Flatten()
.Filter(s => !string.IsNullOrWhiteSpace(s)) .Filter(s => !string.IsNullOrWhiteSpace(s))
.Distinct() .Distinct()

7
ErsatzTV.Infrastructure/Search/LuceneSearchIndex.cs

@ -111,7 +111,7 @@ public sealed class LuceneSearchIndex : ISearchIndex
return Task.FromResult(directoryExists && fileExists); return Task.FromResult(directoryExists && fileExists);
} }
public int Version => 39; public int Version => 40;
public async Task<bool> Initialize( public async Task<bool> Initialize(
ILocalFileSystem localFileSystem, ILocalFileSystem localFileSystem,
@ -515,7 +515,10 @@ public sealed class LuceneSearchIndex : ISearchIndex
await AddLanguages(searchRepository, doc, mediaCodes); await AddLanguages(searchRepository, doc, mediaCodes);
var subMediaCodes = mediaVersions var subMediaCodes = mediaVersions
.Map(mv => mv.Streams.Filter(ms => ms.MediaStreamKind == MediaStreamKind.Subtitle).Map(ms => ms.Language)) .Map(
mv => mv.Streams
.Filter(ms => ms.MediaStreamKind is MediaStreamKind.Subtitle or MediaStreamKind.ExternalSubtitle)
.Map(ms => ms.Language))
.Flatten() .Flatten()
.Filter(c => !string.IsNullOrWhiteSpace(c)) .Filter(c => !string.IsNullOrWhiteSpace(c))
.Distinct() .Distinct()

12
ErsatzTV/Pages/Index.razor

@ -130,7 +130,17 @@
_cts.Dispose(); _cts.Dispose();
} }
private async void OnStartupProgress(object sender, EventArgs e) => await InvokeAsync(StateHasChanged); private async void OnStartupProgress(object sender, EventArgs e)
{
try
{
await InvokeAsync(StateHasChanged);
}
catch (Exception)
{
// do nothing
}
}
protected override async Task OnParametersSetAsync() protected override async Task OnParametersSetAsync()
{ {

Loading…
Cancel
Save