Merge pull request #7441 from 1337joe/add-external-stream-indicator

Add label for external audio/sub tracks
This commit is contained in:
Cody Robibero 2022-03-11 07:48:23 -07:00 committed by GitHub
commit 28223704f3
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 63 additions and 21 deletions

View File

@ -1,5 +1,6 @@
# Jellyfin Contributors
- [1337joe](https://github.com/1337joe)
- [97carmine](https://github.com/97carmine)
- [Abbe98](https://github.com/Abbe98)
- [agrenott](https://github.com/agrenott)

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

@ -717,6 +717,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);
}