From 80e7ddb15792f6bcdc9b68b2abc4a9c418ad807a Mon Sep 17 00:00:00 2001 From: Jason Dove Date: Thu, 11 Feb 2021 21:09:52 -0600 Subject: [PATCH] catch ffprobe errors parsing statistics (#11) --- .../Metadata/LocalStatisticsProvider.cs | 20 +++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/ErsatzTV.Core/Metadata/LocalStatisticsProvider.cs b/ErsatzTV.Core/Metadata/LocalStatisticsProvider.cs index bb06a9f72..cb611e4f4 100644 --- a/ErsatzTV.Core/Metadata/LocalStatisticsProvider.cs +++ b/ErsatzTV.Core/Metadata/LocalStatisticsProvider.cs @@ -7,6 +7,7 @@ using ErsatzTV.Core.Domain; using ErsatzTV.Core.Interfaces.Metadata; using ErsatzTV.Core.Interfaces.Repositories; using LanguageExt; +using Microsoft.Extensions.Logging; using Newtonsoft.Json; using static LanguageExt.Prelude; @@ -15,15 +16,26 @@ namespace ErsatzTV.Core.Metadata public class LocalStatisticsProvider : ILocalStatisticsProvider { private readonly IMediaItemRepository _mediaItemRepository; + private readonly ILogger _logger; - public LocalStatisticsProvider(IMediaItemRepository mediaItemRepository) => + public LocalStatisticsProvider(IMediaItemRepository mediaItemRepository, ILogger logger) + { _mediaItemRepository = mediaItemRepository; + _logger = logger; + } public async Task RefreshStatistics(string ffprobePath, MediaItem mediaItem) { - FFprobe ffprobe = await GetProbeOutput(ffprobePath, mediaItem); - MediaMetadata metadata = ProjectToMediaMetadata(ffprobe); - await ApplyStatisticsUpdate(mediaItem, metadata); + try + { + FFprobe ffprobe = await GetProbeOutput(ffprobePath, mediaItem); + MediaMetadata metadata = ProjectToMediaMetadata(ffprobe); + await ApplyStatisticsUpdate(mediaItem, metadata); + } + catch (Exception ex) + { + _logger.LogWarning(ex, "Failed to refresh statistics for media item at {Path}", mediaItem.Path); + } } private async Task ApplyStatisticsUpdate(