From 7cf576794940973ef31772b8524ff3c4ff82d09c Mon Sep 17 00:00:00 2001 From: Joe Rogers <1337joe@gmail.com> Date: Wed, 17 Nov 2021 22:03:52 +0100 Subject: [PATCH 1/5] Query media streams by type instead of filtering --- MediaBrowser.Controller/Entities/Audio/Audio.cs | 9 --------- MediaBrowser.Controller/Entities/BaseItem.cs | 8 +++++++- MediaBrowser.Providers/MediaInfo/AudioImageProvider.cs | 5 +---- .../MediaInfo/EmbeddedImageProvider.cs | 2 +- MediaBrowser.Providers/MediaInfo/VideoImageProvider.cs | 2 +- .../MediaInfo/EmbeddedImageProviderTests.cs | 2 +- .../MediaInfo/VideoImageProviderTests.cs | 2 +- 7 files changed, 12 insertions(+), 18 deletions(-) diff --git a/MediaBrowser.Controller/Entities/Audio/Audio.cs b/MediaBrowser.Controller/Entities/Audio/Audio.cs index 536668e508..2f3af84e7b 100644 --- a/MediaBrowser.Controller/Entities/Audio/Audio.cs +++ b/MediaBrowser.Controller/Entities/Audio/Audio.cs @@ -126,15 +126,6 @@ namespace MediaBrowser.Controller.Entities.Audio return base.GetBlockUnratedType(); } - public List GetMediaStreams(MediaStreamType type) - { - return MediaSourceManager.GetMediaStreams(new MediaStreamQuery - { - ItemId = Id, - Type = type - }); - } - public SongInfo GetLookupInfo() { var info = GetItemLookupInfo(); diff --git a/MediaBrowser.Controller/Entities/BaseItem.cs b/MediaBrowser.Controller/Entities/BaseItem.cs index a76ca23055..853488a1d0 100644 --- a/MediaBrowser.Controller/Entities/BaseItem.cs +++ b/MediaBrowser.Controller/Entities/BaseItem.cs @@ -1107,10 +1107,16 @@ namespace MediaBrowser.Controller.Entities } public virtual List GetMediaStreams() + { + return GetMediaStreams(null); + } + + public virtual List GetMediaStreams(MediaStreamType? type) { return MediaSourceManager.GetMediaStreams(new MediaStreamQuery { - ItemId = Id + ItemId = Id, + Type = type }); } diff --git a/MediaBrowser.Providers/MediaInfo/AudioImageProvider.cs b/MediaBrowser.Providers/MediaInfo/AudioImageProvider.cs index 8c81b08db7..6b662ebc44 100644 --- a/MediaBrowser.Providers/MediaInfo/AudioImageProvider.cs +++ b/MediaBrowser.Providers/MediaInfo/AudioImageProvider.cs @@ -49,10 +49,7 @@ namespace MediaBrowser.Providers.MediaInfo { var audio = (Audio)item; - var imageStreams = - audio.GetMediaStreams(MediaStreamType.EmbeddedImage) - .Where(i => i.Type == MediaStreamType.EmbeddedImage) - .ToList(); + var imageStreams = audio.GetMediaStreams(MediaStreamType.EmbeddedImage); // Can't extract if we didn't find a video stream in the file if (imageStreams.Count == 0) diff --git a/MediaBrowser.Providers/MediaInfo/EmbeddedImageProvider.cs b/MediaBrowser.Providers/MediaInfo/EmbeddedImageProvider.cs index 186e55f1dc..e27fd094c4 100644 --- a/MediaBrowser.Providers/MediaInfo/EmbeddedImageProvider.cs +++ b/MediaBrowser.Providers/MediaInfo/EmbeddedImageProvider.cs @@ -139,7 +139,7 @@ namespace MediaBrowser.Providers.MediaInfo } // Fall back to EmbeddedImage streams - var imageStreams = item.GetMediaStreams().FindAll(i => i.Type == MediaStreamType.EmbeddedImage); + var imageStreams = item.GetMediaStreams(MediaStreamType.EmbeddedImage); if (imageStreams.Count == 0) { diff --git a/MediaBrowser.Providers/MediaInfo/VideoImageProvider.cs b/MediaBrowser.Providers/MediaInfo/VideoImageProvider.cs index d226182c09..a90ef4739d 100644 --- a/MediaBrowser.Providers/MediaInfo/VideoImageProvider.cs +++ b/MediaBrowser.Providers/MediaInfo/VideoImageProvider.cs @@ -83,7 +83,7 @@ namespace MediaBrowser.Providers.MediaInfo ? TimeSpan.FromTicks(item.RunTimeTicks.Value / 10) : TimeSpan.FromSeconds(10); - var videoStream = item.GetDefaultVideoStream() ?? item.GetMediaStreams().FirstOrDefault(i => i.Type == MediaStreamType.Video); + var videoStream = item.GetDefaultVideoStream() ?? item.GetMediaStreams(MediaStreamType.Video).FirstOrDefault(); if (videoStream == null) { diff --git a/tests/Jellyfin.Providers.Tests/MediaInfo/EmbeddedImageProviderTests.cs b/tests/Jellyfin.Providers.Tests/MediaInfo/EmbeddedImageProviderTests.cs index 38eac28a22..ede285c2e2 100644 --- a/tests/Jellyfin.Providers.Tests/MediaInfo/EmbeddedImageProviderTests.cs +++ b/tests/Jellyfin.Providers.Tests/MediaInfo/EmbeddedImageProviderTests.cs @@ -147,7 +147,7 @@ namespace Jellyfin.Providers.Tests.MediaInfo movie.Setup(item => item.GetMediaSources(It.IsAny())) .Returns(new List { new () { MediaAttachments = mediaAttachments } } ); - movie.Setup(item => item.GetMediaStreams()) + movie.Setup(item => item.GetMediaStreams(MediaStreamType.EmbeddedImage)) .Returns(mediaStreams); return movie.Object; diff --git a/tests/Jellyfin.Providers.Tests/MediaInfo/VideoImageProviderTests.cs b/tests/Jellyfin.Providers.Tests/MediaInfo/VideoImageProviderTests.cs index 0f51a2b8f8..5af167f116 100644 --- a/tests/Jellyfin.Providers.Tests/MediaInfo/VideoImageProviderTests.cs +++ b/tests/Jellyfin.Providers.Tests/MediaInfo/VideoImageProviderTests.cs @@ -167,7 +167,7 @@ namespace Jellyfin.Providers.Tests.MediaInfo movie.Setup(item => item.GetDefaultVideoStream()) .Returns(defaultStream!); - movie.Setup(item => item.GetMediaStreams()) + movie.Setup(item => item.GetMediaStreams(MediaStreamType.Video)) .Returns(mediaStreams); return movie.Object; From 97124f5fcec4b1a1bf1f81bccaaa3282029c40e1 Mon Sep 17 00:00:00 2001 From: Joe Rogers <1337joe@gmail.com> Date: Thu, 18 Nov 2021 07:42:04 +0100 Subject: [PATCH 2/5] Add missed override --- MediaBrowser.Controller/LiveTv/LiveTvChannel.cs | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/MediaBrowser.Controller/LiveTv/LiveTvChannel.cs b/MediaBrowser.Controller/LiveTv/LiveTvChannel.cs index 074e023e8d..d01009a536 100644 --- a/MediaBrowser.Controller/LiveTv/LiveTvChannel.cs +++ b/MediaBrowser.Controller/LiveTv/LiveTvChannel.cs @@ -154,6 +154,11 @@ namespace MediaBrowser.Controller.LiveTv return new List(); } + public override List GetMediaStreams(MediaStreamType? type) + { + return new List(); + } + protected override string GetInternalMetadataPath(string basePath) { return System.IO.Path.Combine(basePath, "livetv", Id.ToString("N", CultureInfo.InvariantCulture), "metadata"); From bff5ff0cb82ed4431031db015acb35df807ecbd7 Mon Sep 17 00:00:00 2001 From: Joe Rogers <1337joe@gmail.com> Date: Tue, 16 Nov 2021 00:36:31 +0100 Subject: [PATCH 3/5] Merge similar tests with Theories --- .../MediaInfo/VideoImageProviderTests.cs | 121 ++++++------------ 1 file changed, 36 insertions(+), 85 deletions(-) diff --git a/tests/Jellyfin.Providers.Tests/MediaInfo/VideoImageProviderTests.cs b/tests/Jellyfin.Providers.Tests/MediaInfo/VideoImageProviderTests.cs index 5af167f116..3a2daf9f2c 100644 --- a/tests/Jellyfin.Providers.Tests/MediaInfo/VideoImageProviderTests.cs +++ b/tests/Jellyfin.Providers.Tests/MediaInfo/VideoImageProviderTests.cs @@ -2,6 +2,7 @@ using System; using System.Collections.Generic; using System.Threading; using System.Threading.Tasks; +using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.Entities.Movies; using MediaBrowser.Controller.MediaEncoding; using MediaBrowser.Model.Drawing; @@ -16,64 +17,53 @@ namespace Jellyfin.Providers.Tests.MediaInfo { public class VideoImageProviderTests { - [Fact] - public async void GetImage_InputIsPlaceholder_ReturnsNoImage() + private static TheoryData