aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Providers/MediaInfo/FFProbeAudioInfo.cs
diff options
context:
space:
mode:
Diffstat (limited to 'MediaBrowser.Providers/MediaInfo/FFProbeAudioInfo.cs')
-rw-r--r--MediaBrowser.Providers/MediaInfo/FFProbeAudioInfo.cs73
1 files changed, 31 insertions, 42 deletions
diff --git a/MediaBrowser.Providers/MediaInfo/FFProbeAudioInfo.cs b/MediaBrowser.Providers/MediaInfo/FFProbeAudioInfo.cs
index cb0075b33..b3fc2a9d7 100644
--- a/MediaBrowser.Providers/MediaInfo/FFProbeAudioInfo.cs
+++ b/MediaBrowser.Providers/MediaInfo/FFProbeAudioInfo.cs
@@ -10,10 +10,12 @@ using MediaBrowser.Model.MediaInfo;
using MediaBrowser.Model.Serialization;
using System.Collections.Generic;
using System.Globalization;
-using System.IO;
using System.Threading;
using System.Threading.Tasks;
using System.Linq;
+using MediaBrowser.Model.Dto;
+using System;
+using MediaBrowser.Controller.Providers;
namespace MediaBrowser.Providers.MediaInfo
{
@@ -24,65 +26,52 @@ namespace MediaBrowser.Providers.MediaInfo
private readonly IApplicationPaths _appPaths;
private readonly IJsonSerializer _json;
private readonly ILibraryManager _libraryManager;
+ private readonly IMediaSourceManager _mediaSourceManager;
private readonly CultureInfo _usCulture = new CultureInfo("en-US");
- public FFProbeAudioInfo(IMediaEncoder mediaEncoder, IItemRepository itemRepo, IApplicationPaths appPaths, IJsonSerializer json, ILibraryManager libraryManager)
+ public FFProbeAudioInfo(IMediaSourceManager mediaSourceManager, IMediaEncoder mediaEncoder, IItemRepository itemRepo, IApplicationPaths appPaths, IJsonSerializer json, ILibraryManager libraryManager)
{
_mediaEncoder = mediaEncoder;
_itemRepo = itemRepo;
_appPaths = appPaths;
_json = json;
_libraryManager = libraryManager;
+ _mediaSourceManager = mediaSourceManager;
}
- public async Task<ItemUpdateType> Probe<T>(T item, CancellationToken cancellationToken)
+ public async Task<ItemUpdateType> Probe<T>(T item, MetadataRefreshOptions options,
+ CancellationToken cancellationToken)
where T : Audio
{
- var result = await GetMediaInfo(item, cancellationToken).ConfigureAwait(false);
+ var path = item.Path;
+ var protocol = item.PathProtocol ?? MediaProtocol.File;
- cancellationToken.ThrowIfCancellationRequested();
-
- Fetch(item, cancellationToken, result);
-
- return ItemUpdateType.MetadataImport;
- }
+ if (!item.IsShortcut || options.EnableRemoteContentProbe)
+ {
+ if (item.IsShortcut)
+ {
+ path = item.ShortcutPath;
+ protocol = _mediaSourceManager.GetPathProtocol(path);
+ }
- private const string SchemaVersion = "3";
+ var result = await _mediaEncoder.GetMediaInfo(new MediaInfoRequest
+ {
+ MediaType = DlnaProfileType.Audio,
+ MediaSource = new MediaSourceInfo
+ {
+ Path = path,
+ Protocol = protocol
+ }
- private async Task<Model.MediaInfo.MediaInfo> GetMediaInfo(BaseItem item, CancellationToken cancellationToken)
- {
- cancellationToken.ThrowIfCancellationRequested();
-
- //var idString = item.Id.ToString("N");
- //var cachePath = Path.Combine(_appPaths.CachePath,
- // "ffprobe-audio",
- // idString.Substring(0, 2), idString, "v" + SchemaVersion + _mediaEncoder.Version + item.DateModified.Ticks.ToString(_usCulture) + ".json");
-
- //try
- //{
- // return _json.DeserializeFromFile<Model.MediaInfo.MediaInfo>(cachePath);
- //}
- //catch (FileNotFoundException)
- //{
-
- //}
- //catch (DirectoryNotFoundException)
- //{
- //}
-
- var result = await _mediaEncoder.GetMediaInfo(new MediaInfoRequest
- {
- InputPath = item.Path,
- MediaType = DlnaProfileType.Audio,
- Protocol = MediaProtocol.File
+ }, cancellationToken).ConfigureAwait(false);
- }, cancellationToken).ConfigureAwait(false);
+ cancellationToken.ThrowIfCancellationRequested();
- //Directory.CreateDirectory(_fileSystem.GetDirectoryName(cachePath));
- //_json.SerializeToFile(result, cachePath);
+ Fetch(item, cancellationToken, result);
+ }
- return result;
+ return ItemUpdateType.MetadataImport;
}
/// <summary>
@@ -156,7 +145,7 @@ namespace MediaBrowser.Providers.MediaInfo
if (!audio.LockedFields.Contains(MetadataFields.Genres))
{
- audio.Genres.Clear();
+ audio.Genres = Array.Empty<string>();
foreach (var genre in data.Genres)
{