Handle exception for unexpected audio file YEAR tag values (#11621)

pull/11670/head
Nathan McCrina 9 months ago committed by GitHub
parent f396a95f05
commit d5dc4435d9
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

@ -255,3 +255,4 @@
- [JPUC1143](https://github.com/Jpuc1143/) - [JPUC1143](https://github.com/Jpuc1143/)
- [0x25CBFC4F](https://github.com/0x25CBFC4F) - [0x25CBFC4F](https://github.com/0x25CBFC4F)
- [Robert Lützner](https://github.com/rluetzner) - [Robert Lützner](https://github.com/rluetzner)
- [Nathan McCrina](https://github.com/nfmccrina)

@ -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))

@ -103,6 +103,7 @@ namespace MediaBrowser.Providers.MediaInfo
_subtitleResolver); _subtitleResolver);
_audioProber = new AudioFileProber( _audioProber = new AudioFileProber(
loggerFactory.CreateLogger<AudioFileProber>(),
mediaSourceManager, mediaSourceManager,
mediaEncoder, mediaEncoder,
itemRepo, itemRepo,

Loading…
Cancel
Save