fix: language filter also checks the title's original language (v1.0.0.15)
All checks were successful
Publish Release / release (push) Successful in 9s
All checks were successful
Publish Release / release (push) Successful in 9s
AllowedLanguages only filtered on each video's iso_639_1 tag, and TMDB often tags subtitled foreign trailers as "en". With en,fr selected, 6 of 27 downloaded trailers were Korean, Chinese or Zulu titles. Candidates now also need an allowed original_language (from the list results, so no extra API calls). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -45,7 +45,9 @@
|
||||
<fieldset class="verticalSection verticalSection-extrabottompadding">
|
||||
<legend><h3 class="sectionTitle">Trailer Languages</h3></legend>
|
||||
<p class="fieldDescription">
|
||||
Only download trailers in the selected languages.
|
||||
Only download trailers in the selected languages. Both the trailer and the
|
||||
movie/show itself (its original language) must be in one of them, so a
|
||||
subtitled foreign trailer is skipped.
|
||||
Leave everything unchecked to allow all languages.
|
||||
</p>
|
||||
<div style="display:grid;grid-template-columns:1fr 1fr;gap:0 2em;">
|
||||
|
||||
@@ -3,8 +3,8 @@
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net9.0</TargetFramework>
|
||||
<RootNamespace>Jellyfin.Plugin.CinemaTrailers4Jellyfins</RootNamespace>
|
||||
<AssemblyVersion>1.0.0.14</AssemblyVersion>
|
||||
<FileVersion>1.0.0.14</FileVersion>
|
||||
<AssemblyVersion>1.0.0.15</AssemblyVersion>
|
||||
<FileVersion>1.0.0.15</FileVersion>
|
||||
<Nullable>enable</Nullable>
|
||||
<GenerateDocumentationFile>false</GenerateDocumentationFile>
|
||||
<TreatWarningsAsErrors>false</TreatWarningsAsErrors>
|
||||
|
||||
@@ -177,6 +177,14 @@ namespace Jellyfin.Plugin.CinemaTrailers4Jellyfins.ScheduledTasks
|
||||
continue;
|
||||
}
|
||||
|
||||
// A trailer's own language tag is often "en" just because it has English
|
||||
// subtitles, so also require the title itself to be in an allowed language.
|
||||
if (allowedLanguages != null && !allowedLanguages.Contains(movie.OriginalLanguage))
|
||||
{
|
||||
_logger.LogDebug("|CinemaTrailers4Jellyfins| Skipping '{Title}': original language '{Lang}' is not allowed", movie.Title, movie.OriginalLanguage);
|
||||
continue;
|
||||
}
|
||||
|
||||
var trailers = await _tmdbService.GetTrailersAsync(
|
||||
"movie", movie.Id.ToString(), config.TmdbApiKey, allowedLanguages, cancellationToken).ConfigureAwait(false);
|
||||
|
||||
@@ -284,6 +292,14 @@ namespace Jellyfin.Plugin.CinemaTrailers4Jellyfins.ScheduledTasks
|
||||
continue;
|
||||
}
|
||||
|
||||
// A trailer's own language tag is often "en" just because it has English
|
||||
// subtitles, so also require the title itself to be in an allowed language.
|
||||
if (allowedLanguages != null && !allowedLanguages.Contains(show.OriginalLanguage))
|
||||
{
|
||||
_logger.LogDebug("|CinemaTrailers4Jellyfins| Skipping '{Title}': original language '{Lang}' is not allowed", show.Title, show.OriginalLanguage);
|
||||
continue;
|
||||
}
|
||||
|
||||
var trailers = await _tmdbService.GetTrailersAsync(
|
||||
"tv", show.Id.ToString(), config.TmdbApiKey, allowedLanguages, cancellationToken).ConfigureAwait(false);
|
||||
|
||||
|
||||
@@ -14,7 +14,7 @@ namespace Jellyfin.Plugin.CinemaTrailers4Jellyfins.Services
|
||||
{
|
||||
public record TmdbVideo(string Key, string Name, string Language, bool Official, int Size);
|
||||
|
||||
public record TmdbMediaResult(int Id, string Title, string ReleaseDate)
|
||||
public record TmdbMediaResult(int Id, string Title, string ReleaseDate, string OriginalLanguage)
|
||||
{
|
||||
public int? Year => DateTime.TryParse(ReleaseDate, out var d) ? d.Year : (int?)null;
|
||||
}
|
||||
@@ -170,6 +170,7 @@ namespace Jellyfin.Plugin.CinemaTrailers4Jellyfins.Services
|
||||
var releaseDate = entry.TryGetProperty(dateField, out var rd) ? rd.GetString() ?? string.Empty : string.Empty;
|
||||
var title = entry.TryGetProperty(titleField, out var t) ? t.GetString() ?? string.Empty : string.Empty;
|
||||
var id = entry.GetProperty("id").GetInt32();
|
||||
var originalLanguage = entry.TryGetProperty("original_language", out var ol) ? ol.GetString() ?? string.Empty : string.Empty;
|
||||
|
||||
if (releasedAfter.HasValue && DateTime.TryParse(releaseDate, out var parsed))
|
||||
{
|
||||
@@ -177,7 +178,7 @@ namespace Jellyfin.Plugin.CinemaTrailers4Jellyfins.Services
|
||||
}
|
||||
|
||||
anyInRange = true;
|
||||
results.Add(new TmdbMediaResult(id, title, releaseDate));
|
||||
results.Add(new TmdbMediaResult(id, title, releaseDate, originalLanguage));
|
||||
}
|
||||
|
||||
if (page >= totalPages || (releasedAfter.HasValue && !anyInRange))
|
||||
|
||||
Reference in New Issue
Block a user