aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Providers/MediaInfo/FFProbeAudioInfoProvider.cs
diff options
context:
space:
mode:
Diffstat (limited to 'MediaBrowser.Providers/MediaInfo/FFProbeAudioInfoProvider.cs')
-rw-r--r--MediaBrowser.Providers/MediaInfo/FFProbeAudioInfoProvider.cs30
1 files changed, 17 insertions, 13 deletions
diff --git a/MediaBrowser.Providers/MediaInfo/FFProbeAudioInfoProvider.cs b/MediaBrowser.Providers/MediaInfo/FFProbeAudioInfoProvider.cs
index 3594c53c5..673abea57 100644
--- a/MediaBrowser.Providers/MediaInfo/FFProbeAudioInfoProvider.cs
+++ b/MediaBrowser.Providers/MediaInfo/FFProbeAudioInfoProvider.cs
@@ -3,6 +3,8 @@ using MediaBrowser.Common.MediaInfo;
using MediaBrowser.Controller.Configuration;
using MediaBrowser.Controller.Entities;
using MediaBrowser.Controller.Entities.Audio;
+using MediaBrowser.Controller.Persistence;
+using MediaBrowser.Controller.Providers;
using MediaBrowser.Model.Entities;
using MediaBrowser.Model.Logging;
using MediaBrowser.Model.Serialization;
@@ -19,12 +21,15 @@ namespace MediaBrowser.Providers.MediaInfo
/// </summary>
public class FFProbeAudioInfoProvider : BaseFFProbeProvider<Audio>
{
- public FFProbeAudioInfoProvider(ILogManager logManager, IServerConfigurationManager configurationManager, IMediaEncoder mediaEncoder, IJsonSerializer jsonSerializer)
+ private readonly IItemRepository _itemRepo;
+
+ public FFProbeAudioInfoProvider(ILogManager logManager, IServerConfigurationManager configurationManager, IMediaEncoder mediaEncoder, IJsonSerializer jsonSerializer, IItemRepository itemRepo)
: base(logManager, configurationManager, mediaEncoder, jsonSerializer)
{
+ _itemRepo = itemRepo;
}
- public override async Task<bool> FetchAsync(BaseItem item, bool force, CancellationToken cancellationToken)
+ public override async Task<bool> FetchAsync(BaseItem item, bool force, BaseProviderInfo providerInfo, CancellationToken cancellationToken)
{
var myItem = (Audio)item;
@@ -38,9 +43,9 @@ namespace MediaBrowser.Providers.MediaInfo
cancellationToken.ThrowIfCancellationRequested();
- Fetch(myItem, cancellationToken, result);
+ await Fetch(myItem, cancellationToken, result).ConfigureAwait(false);
- SetLastRefreshed(item, DateTime.UtcNow);
+ SetLastRefreshed(item, DateTime.UtcNow, providerInfo);
return true;
}
@@ -51,22 +56,19 @@ namespace MediaBrowser.Providers.MediaInfo
/// <param name="audio">The audio.</param>
/// <param name="cancellationToken">The cancellation token.</param>
/// <param name="data">The data.</param>
- /// <param name="isoMount">The iso mount.</param>
/// <returns>Task.</returns>
- protected void Fetch(Audio audio, CancellationToken cancellationToken, MediaInfoResult data)
+ protected Task Fetch(Audio audio, CancellationToken cancellationToken, MediaInfoResult data)
{
- if (data.streams == null)
- {
- Logger.Error("Audio item has no streams: " + audio.Path);
- return;
- }
+ var internalStreams = data.streams ?? new MediaStreamInfo[] { };
- audio.MediaStreams = data.streams.Select(s => GetMediaStream(s, data.format))
+ var mediaStreams = internalStreams.Select(s => GetMediaStream(s, data.format))
.Where(i => i != null)
.ToList();
+ audio.HasEmbeddedImage = mediaStreams.Any(i => i.Type == MediaStreamType.Video);
+
// Get the first audio stream
- var stream = data.streams.FirstOrDefault(s => s.codec_type.Equals("audio", StringComparison.OrdinalIgnoreCase));
+ var stream = internalStreams.FirstOrDefault(s => s.codec_type.Equals("audio", StringComparison.OrdinalIgnoreCase));
if (stream != null)
{
@@ -90,6 +92,8 @@ namespace MediaBrowser.Providers.MediaInfo
{
FetchDataFromTags(audio, data.format.tags);
}
+
+ return _itemRepo.SaveMediaStreams(audio.Id, mediaStreams, cancellationToken);
}
/// <summary>