Add label for external audio/sub tracks

This commit is contained in:
Joe Rogers 2022-03-10 22:20:35 +01:00
parent 388e0cba9f
commit 1a307db7eb
No known key found for this signature in database
GPG Key ID: 0074AD57B8FDBBB4
5 changed files with 62 additions and 21 deletions

View File

@ -5970,6 +5970,7 @@ AND Type = @InternalPersonType)");
item.LocalizedUndefined = _localization.GetLocalizedString("Undefined");
item.LocalizedDefault = _localization.GetLocalizedString("Default");
item.LocalizedForced = _localization.GetLocalizedString("Forced");
item.LocalizedExternal = _localization.GetLocalizedString("External");
}
return item;

View File

@ -12,6 +12,7 @@
"Default": "Default",
"DeviceOfflineWithName": "{0} has disconnected",
"DeviceOnlineWithName": "{0} is connected",
"External": "External",
"FailedLoginAttemptWithUserName": "Failed login try from {0}",
"Favorites": "Favorites",
"Folders": "Folders",

View File

@ -706,6 +706,7 @@ namespace MediaBrowser.MediaEncoding.Probing
stream.LocalizedUndefined = _localization.GetLocalizedString("Undefined");
stream.LocalizedDefault = _localization.GetLocalizedString("Default");
stream.LocalizedForced = _localization.GetLocalizedString("Forced");
stream.LocalizedExternal = _localization.GetLocalizedString("External");
if (string.IsNullOrEmpty(stream.Title))
{

View File

@ -140,6 +140,8 @@ namespace MediaBrowser.Model.Entities
public string LocalizedForced { get; set; }
public string LocalizedExternal { get; set; }
public string DisplayTitle
{
get
@ -184,6 +186,11 @@ namespace MediaBrowser.Model.Entities
attributes.Add(string.IsNullOrEmpty(LocalizedDefault) ? "Default" : LocalizedDefault);
}
if (IsExternal)
{
attributes.Add(string.IsNullOrEmpty(LocalizedExternal) ? "External" : LocalizedExternal);
}
if (!string.IsNullOrEmpty(Title))
{
var result = new StringBuilder(Title);
@ -274,6 +281,11 @@ namespace MediaBrowser.Model.Entities
attributes.Add(Codec.ToUpperInvariant());
}
if (IsExternal)
{
attributes.Add(string.IsNullOrEmpty(LocalizedExternal) ? "External" : LocalizedExternal);
}
if (!string.IsNullOrEmpty(Title))
{
var result = new StringBuilder(Title);

View File

@ -5,23 +5,24 @@ namespace Jellyfin.Model.Tests.Entities
{
public class MediaStreamTests
{
public static TheoryData<MediaStream, string> Get_DisplayTitle_TestData()
public static TheoryData<string, MediaStream> Get_DisplayTitle_TestData()
{
var data = new TheoryData<MediaStream, string>();
var data = new TheoryData<string, MediaStream>();
data.Add(
new MediaStream
{
Type = MediaStreamType.Subtitle,
Title = "English",
Language = string.Empty,
IsForced = false,
IsDefault = false,
Codec = "ASS"
},
"English - Und - ASS");
"English - Und - ASS",
new MediaStream
{
Type = MediaStreamType.Subtitle,
Title = "English",
Language = string.Empty,
IsForced = false,
IsDefault = false,
Codec = "ASS"
});
data.Add(
"English - Und",
new MediaStream
{
Type = MediaStreamType.Subtitle,
@ -30,10 +31,10 @@ namespace Jellyfin.Model.Tests.Entities
IsForced = false,
IsDefault = false,
Codec = string.Empty
},
"English - Und");
});
data.Add(
"English",
new MediaStream
{
Type = MediaStreamType.Subtitle,
@ -42,10 +43,10 @@ namespace Jellyfin.Model.Tests.Entities
IsForced = false,
IsDefault = false,
Codec = string.Empty
},
"English");
});
data.Add(
"English - Default - Forced - SRT",
new MediaStream
{
Type = MediaStreamType.Subtitle,
@ -54,10 +55,23 @@ namespace Jellyfin.Model.Tests.Entities
IsForced = true,
IsDefault = true,
Codec = "SRT"
},
"English - Default - Forced - SRT");
});
data.Add(
"Title - EN - Default - Forced - SRT - External",
new MediaStream
{
Type = MediaStreamType.Subtitle,
Title = "Title",
Language = "EN",
IsForced = true,
IsDefault = true,
Codec = "SRT",
IsExternal = true
});
data.Add(
"Und",
new MediaStream
{
Type = MediaStreamType.Subtitle,
@ -66,15 +80,27 @@ namespace Jellyfin.Model.Tests.Entities
IsForced = false,
IsDefault = false,
Codec = null
},
"Und");
});
data.Add(
"Title - AAC - Default - External",
new MediaStream
{
Type = MediaStreamType.Audio,
Title = "Title",
Language = null,
IsForced = false,
IsDefault = true,
Codec = "AAC",
IsExternal = true
});
return data;
}
[Theory]
[MemberData(nameof(Get_DisplayTitle_TestData))]
public void Get_DisplayTitle_should_return_valid_title(MediaStream mediaStream, string expected)
public void Get_DisplayTitle_should_return_valid_title(string expected, MediaStream mediaStream)
{
Assert.Equal(expected, mediaStream.DisplayTitle);
}