Enhance logging in RefreshShowEpisodesMetadataCommandHandler and TmdbMetadataProvider for image retrieval failures
Updated the RefreshShowEpisodesMetadataCommandHandler to include logging for scenarios where episode still images are not retrieved successfully. Introduced warning logs for missing still URLs and download failures, improving traceability. Additionally, modified the TmdbMetadataProvider to implement a fallback mechanism for episode still images, ensuring that appropriate imagery is displayed even when localized images are unavailable. Updated related tests to verify the correct behavior of these logging enhancements and fallback logic.
This commit is contained in:
+18
-1
@@ -1,5 +1,6 @@
|
||||
using LiteCqrs;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using Microsoft.Extensions.Logging;
|
||||
using TeleWave.Application.Common.Interfaces;
|
||||
using TeleWave.Application.Common.Models;
|
||||
using TeleWave.Application.Library;
|
||||
@@ -12,7 +13,8 @@ public sealed class RefreshShowEpisodesMetadataCommandHandler(
|
||||
IAppDbContext dbContext,
|
||||
IMetadataProviderResolver resolver,
|
||||
IImageDownloader downloader,
|
||||
IImageStore imageStore
|
||||
IImageStore imageStore,
|
||||
ILogger<RefreshShowEpisodesMetadataCommandHandler> logger
|
||||
) : ICommandHandler<RefreshShowEpisodesMetadataCommand, Result<int>>
|
||||
{
|
||||
public async Task<Result<int>> Handle(
|
||||
@@ -99,12 +101,27 @@ public sealed class RefreshShowEpisodesMetadataCommandHandler(
|
||||
CancellationToken cancellationToken
|
||||
)
|
||||
{
|
||||
// Как и с постером шоу: снаружи «кадра нет» неотличимо от «кадр не доехал», а чинится это
|
||||
// по-разному. Подробности отказа скачивания пишет сам загрузчик.
|
||||
if (string.IsNullOrEmpty(meta.StillUrl))
|
||||
{
|
||||
logger.LogWarning(
|
||||
"Кадр серии «{Episode}» не проставлен: источник не вернул ссылку",
|
||||
meta.Title
|
||||
);
|
||||
return null;
|
||||
}
|
||||
|
||||
var downloaded = await downloader.DownloadAsync(meta.StillUrl, cancellationToken);
|
||||
if (downloaded is null)
|
||||
{
|
||||
logger.LogWarning(
|
||||
"Кадр серии «{Episode}» не проставлен: {Url} не скачался",
|
||||
meta.Title,
|
||||
meta.StillUrl
|
||||
);
|
||||
return null;
|
||||
}
|
||||
|
||||
var image = Image.Create(ImageCategory.EpisodeStill, downloaded.Extension, meta.Title);
|
||||
dbContext.Images.Add(image);
|
||||
|
||||
@@ -117,7 +117,9 @@ public sealed class ShowMetadataApplier(
|
||||
downloaded.Content,
|
||||
cancellationToken
|
||||
);
|
||||
logger.LogInformation(
|
||||
// Успех — отладочным уровнем: при массовом обогащении это строка на каждое шоу, а знать
|
||||
// оператору интересно обратное — что постер не доехал.
|
||||
logger.LogDebug(
|
||||
"Постер для «{Show}» сохранён как изображение {ImageId}",
|
||||
show.Name,
|
||||
image.Id
|
||||
|
||||
Reference in New Issue
Block a user