|
|
@ -15,6 +15,7 @@ using MediaBrowser.Model.Dlna;
|
|
|
|
using MediaBrowser.Model.Dto;
|
|
|
|
using MediaBrowser.Model.Dto;
|
|
|
|
using MediaBrowser.Model.Entities;
|
|
|
|
using MediaBrowser.Model.Entities;
|
|
|
|
using MediaBrowser.Model.MediaInfo;
|
|
|
|
using MediaBrowser.Model.MediaInfo;
|
|
|
|
|
|
|
|
using Microsoft.Extensions.Logging;
|
|
|
|
using TagLib;
|
|
|
|
using TagLib;
|
|
|
|
|
|
|
|
|
|
|
|
namespace MediaBrowser.Providers.MediaInfo
|
|
|
|
namespace MediaBrowser.Providers.MediaInfo
|
|
|
@ -27,6 +28,7 @@ namespace MediaBrowser.Providers.MediaInfo
|
|
|
|
private readonly IMediaEncoder _mediaEncoder;
|
|
|
|
private readonly IMediaEncoder _mediaEncoder;
|
|
|
|
private readonly IItemRepository _itemRepo;
|
|
|
|
private readonly IItemRepository _itemRepo;
|
|
|
|
private readonly ILibraryManager _libraryManager;
|
|
|
|
private readonly ILibraryManager _libraryManager;
|
|
|
|
|
|
|
|
private readonly ILogger<AudioFileProber> _logger;
|
|
|
|
private readonly IMediaSourceManager _mediaSourceManager;
|
|
|
|
private readonly IMediaSourceManager _mediaSourceManager;
|
|
|
|
private readonly LyricResolver _lyricResolver;
|
|
|
|
private readonly LyricResolver _lyricResolver;
|
|
|
|
private readonly ILyricManager _lyricManager;
|
|
|
|
private readonly ILyricManager _lyricManager;
|
|
|
@ -34,6 +36,7 @@ namespace MediaBrowser.Providers.MediaInfo
|
|
|
|
/// <summary>
|
|
|
|
/// <summary>
|
|
|
|
/// Initializes a new instance of the <see cref="AudioFileProber"/> class.
|
|
|
|
/// Initializes a new instance of the <see cref="AudioFileProber"/> class.
|
|
|
|
/// </summary>
|
|
|
|
/// </summary>
|
|
|
|
|
|
|
|
/// <param name="logger">Instance of the <see cref="ILogger"/> interface.</param>
|
|
|
|
/// <param name="mediaSourceManager">Instance of the <see cref="IMediaSourceManager"/> interface.</param>
|
|
|
|
/// <param name="mediaSourceManager">Instance of the <see cref="IMediaSourceManager"/> interface.</param>
|
|
|
|
/// <param name="mediaEncoder">Instance of the <see cref="IMediaEncoder"/> interface.</param>
|
|
|
|
/// <param name="mediaEncoder">Instance of the <see cref="IMediaEncoder"/> interface.</param>
|
|
|
|
/// <param name="itemRepo">Instance of the <see cref="IItemRepository"/> interface.</param>
|
|
|
|
/// <param name="itemRepo">Instance of the <see cref="IItemRepository"/> interface.</param>
|
|
|
@ -41,6 +44,7 @@ namespace MediaBrowser.Providers.MediaInfo
|
|
|
|
/// <param name="lyricResolver">Instance of the <see cref="LyricResolver"/> interface.</param>
|
|
|
|
/// <param name="lyricResolver">Instance of the <see cref="LyricResolver"/> interface.</param>
|
|
|
|
/// <param name="lyricManager">Instance of the <see cref="ILyricManager"/> interface.</param>
|
|
|
|
/// <param name="lyricManager">Instance of the <see cref="ILyricManager"/> interface.</param>
|
|
|
|
public AudioFileProber(
|
|
|
|
public AudioFileProber(
|
|
|
|
|
|
|
|
ILogger<AudioFileProber> logger,
|
|
|
|
IMediaSourceManager mediaSourceManager,
|
|
|
|
IMediaSourceManager mediaSourceManager,
|
|
|
|
IMediaEncoder mediaEncoder,
|
|
|
|
IMediaEncoder mediaEncoder,
|
|
|
|
IItemRepository itemRepo,
|
|
|
|
IItemRepository itemRepo,
|
|
|
@ -51,6 +55,7 @@ namespace MediaBrowser.Providers.MediaInfo
|
|
|
|
_mediaEncoder = mediaEncoder;
|
|
|
|
_mediaEncoder = mediaEncoder;
|
|
|
|
_itemRepo = itemRepo;
|
|
|
|
_itemRepo = itemRepo;
|
|
|
|
_libraryManager = libraryManager;
|
|
|
|
_libraryManager = libraryManager;
|
|
|
|
|
|
|
|
_logger = logger;
|
|
|
|
_mediaSourceManager = mediaSourceManager;
|
|
|
|
_mediaSourceManager = mediaSourceManager;
|
|
|
|
_lyricResolver = lyricResolver;
|
|
|
|
_lyricResolver = lyricResolver;
|
|
|
|
_lyricManager = lyricManager;
|
|
|
|
_lyricManager = lyricManager;
|
|
|
@ -275,9 +280,16 @@ namespace MediaBrowser.Providers.MediaInfo
|
|
|
|
audio.ProductionYear = year;
|
|
|
|
audio.ProductionYear = year;
|
|
|
|
|
|
|
|
|
|
|
|
if (!audio.PremiereDate.HasValue)
|
|
|
|
if (!audio.PremiereDate.HasValue)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
try
|
|
|
|
{
|
|
|
|
{
|
|
|
|
audio.PremiereDate = new DateTime(year, 01, 01);
|
|
|
|
audio.PremiereDate = new DateTime(year, 01, 01);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
catch (ArgumentOutOfRangeException ex)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
_logger.LogError(ex, "Error parsing YEAR tag in {File}. '{TagValue}' is an invalid year.", audio.Path, tags.Year);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
if (!audio.LockedFields.Contains(MetadataField.Genres))
|
|
|
|
if (!audio.LockedFields.Contains(MetadataField.Genres))
|
|
|
|