mirror of
https://github.com/jellyfin/jellyfin.git
synced 2026-05-27 19:08:27 +01:00
Improve OriginalLanguage normalization and inheritance (#16829)
Some checks failed
CodeQL / Analyze (csharp) (push) Has been cancelled
Format / format-check (push) Has been cancelled
Tests / run-tests (macos-latest) (push) Has been cancelled
Tests / run-tests (ubuntu-latest) (push) Has been cancelled
Tests / run-tests (windows-latest) (push) Has been cancelled
OpenAPI Publish / OpenAPI - Publish Artifact (push) Has been cancelled
OpenAPI Publish / OpenAPI - Publish Unstable Spec (push) Has been cancelled
OpenAPI Publish / OpenAPI - Publish Stable Spec (push) Has been cancelled
Project Automation / Project board (push) Has been cancelled
Merge Conflict Labeler / Labeling (push) Has been cancelled
Some checks failed
CodeQL / Analyze (csharp) (push) Has been cancelled
Format / format-check (push) Has been cancelled
Tests / run-tests (macos-latest) (push) Has been cancelled
Tests / run-tests (ubuntu-latest) (push) Has been cancelled
Tests / run-tests (windows-latest) (push) Has been cancelled
OpenAPI Publish / OpenAPI - Publish Artifact (push) Has been cancelled
OpenAPI Publish / OpenAPI - Publish Unstable Spec (push) Has been cancelled
OpenAPI Publish / OpenAPI - Publish Stable Spec (push) Has been cancelled
Project Automation / Project board (push) Has been cancelled
Merge Conflict Labeler / Labeling (push) Has been cancelled
Improve OriginalLanguage normalization and inheritance
This commit is contained in:
@@ -440,10 +440,6 @@ namespace Emby.Server.Implementations.Library
|
||||
|
||||
if (string.Equals(user.AudioLanguagePreference, "OriginalLanguage", StringComparison.OrdinalIgnoreCase))
|
||||
{
|
||||
originalLanguage = !string.IsNullOrWhiteSpace(originalLanguage)
|
||||
? originalLanguage.Split(',').FirstOrDefault()
|
||||
: null;
|
||||
|
||||
if (user.PlayDefaultAudioTrack)
|
||||
{
|
||||
source.DefaultAudioStreamIndex = MediaStreamSelector.GetDefaultAudioStreamIndex(
|
||||
@@ -498,17 +494,7 @@ namespace Emby.Server.Implementations.Library
|
||||
|
||||
var allowRememberingSelection = item is null || item.EnableRememberingTrackSelections;
|
||||
|
||||
var originalLanguage = item?.OriginalLanguage ?? item switch
|
||||
{
|
||||
Episode episode => episode.Series.OriginalLanguage,
|
||||
Video video => video.GetOwner() switch
|
||||
{
|
||||
Episode ownerEpisode => ownerEpisode.OriginalLanguage ?? ownerEpisode.Series.OriginalLanguage,
|
||||
BaseItem owner => owner.OriginalLanguage,
|
||||
null => null
|
||||
},
|
||||
_ => null
|
||||
};
|
||||
var originalLanguage = item?.GetInheritedOriginalLanguage();
|
||||
|
||||
SetDefaultAudioStreamIndex(source, userData, user, allowRememberingSelection, originalLanguage);
|
||||
SetDefaultSubtitleStreamIndex(source, userData, user, allowRememberingSelection);
|
||||
|
||||
@@ -94,6 +94,8 @@ namespace MediaBrowser.Controller.Entities
|
||||
|
||||
private string _name;
|
||||
|
||||
private string _originalLanguage;
|
||||
|
||||
public const char SlugChar = '-';
|
||||
|
||||
protected BaseItem()
|
||||
@@ -217,7 +219,11 @@ namespace MediaBrowser.Controller.Entities
|
||||
public string OriginalTitle { get; set; }
|
||||
|
||||
[JsonIgnore]
|
||||
public string OriginalLanguage { get; set; }
|
||||
public string OriginalLanguage
|
||||
{
|
||||
get => _originalLanguage;
|
||||
set => _originalLanguage = LocalizationManager?.FindLanguageInfo(value)?.TwoLetterISOLanguageName ?? value;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets the id.
|
||||
@@ -1564,7 +1570,7 @@ namespace MediaBrowser.Controller.Entities
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Gets the preferred metadata language.
|
||||
/// Gets the preferred metadata country code.
|
||||
/// </summary>
|
||||
/// <returns>System.String.</returns>
|
||||
public string GetPreferredMetadataCountryCode()
|
||||
@@ -1598,6 +1604,15 @@ namespace MediaBrowser.Controller.Entities
|
||||
return lang;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Gets the original language of the item, inheriting from parent items if necessary.
|
||||
/// </summary>
|
||||
/// <returns>System.String.</returns>
|
||||
public virtual string GetInheritedOriginalLanguage()
|
||||
{
|
||||
return OriginalLanguage;
|
||||
}
|
||||
|
||||
public virtual bool IsSaveLocalMetadataEnabled()
|
||||
{
|
||||
if (SourceType == SourceType.Channel)
|
||||
|
||||
@@ -153,6 +153,12 @@ namespace MediaBrowser.Controller.Entities.TV
|
||||
return 16.0 / 9;
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
public override string GetInheritedOriginalLanguage()
|
||||
{
|
||||
return OriginalLanguage ?? Series?.GetInheritedOriginalLanguage();
|
||||
}
|
||||
|
||||
public override List<string> GetUserDataKeys()
|
||||
{
|
||||
var list = base.GetUserDataKeys();
|
||||
|
||||
@@ -128,6 +128,12 @@ namespace MediaBrowser.Controller.Entities.TV
|
||||
return result;
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
public override string GetInheritedOriginalLanguage()
|
||||
{
|
||||
return OriginalLanguage ?? Series?.GetInheritedOriginalLanguage();
|
||||
}
|
||||
|
||||
public override string CreatePresentationUniqueKey()
|
||||
{
|
||||
if (IndexNumber.HasValue)
|
||||
|
||||
@@ -278,6 +278,17 @@ namespace MediaBrowser.Controller.Entities
|
||||
return linkedVersionCount + localVersionCount + 1;
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
public override string GetInheritedOriginalLanguage()
|
||||
{
|
||||
if (ExtraType.GetValueOrDefault() == Model.Entities.ExtraType.Trailer)
|
||||
{
|
||||
return GetOwner()?.GetInheritedOriginalLanguage();
|
||||
}
|
||||
|
||||
return OriginalLanguage ?? GetOwner()?.GetInheritedOriginalLanguage();
|
||||
}
|
||||
|
||||
public override List<string> GetUserDataKeys()
|
||||
{
|
||||
var list = base.GetUserDataKeys();
|
||||
|
||||
@@ -413,7 +413,7 @@ namespace MediaBrowser.Providers.Plugins.Omdb
|
||||
}
|
||||
|
||||
item.Overview = result.Plot;
|
||||
item.OriginalLanguage = result.Language;
|
||||
item.OriginalLanguage = result.Language?.Split(',', StringSplitOptions.RemoveEmptyEntries | StringSplitOptions.TrimEntries).FirstOrDefault();
|
||||
|
||||
if (!Plugin.Instance.Configuration.CastAndCrew)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user