Move cover download to processable

This commit is contained in:
Michael Bucari-Tovo 2022-05-09 23:53:10 -06:00
parent 82b5daa809
commit 48ffc40abb
2 changed files with 31 additions and 17 deletions

View File

@ -5,6 +5,7 @@ using System.Threading.Tasks;
using DataLayer;
using Dinah.Core;
using Dinah.Core.ErrorHandling;
using LibationFileManager;
namespace FileLiberator
{
@ -47,9 +48,38 @@ namespace FileLiberator
= (await ProcessAsync(libraryBook))
?? new StatusHandler { "Processable should never return a null status" };
if (status.IsSuccess)
DownloadCoverArt(libraryBook);
return status;
}
private void DownloadCoverArt(LibraryBook libraryBook)
{
var destinationDir = AudibleFileStorage.Audio.GetDestinationDirectory(libraryBook);
var coverPath = FileManager.FileUtility.GetValidFilename(System.IO.Path.Combine(destinationDir, "Cover.jpg"), "", true);
if (System.IO.File.Exists(coverPath)) return;
try
{
(string picId, PictureSize size) = libraryBook.Book.PictureId_1215 is null ?
(libraryBook.Book.PictureId, PictureSize._500x500) :
(libraryBook.Book.PictureId_1215, PictureSize._1215x1215);
var picBytes = PictureStorage.GetPictureSynchronously(new PictureDefinition(picId, size));
if (picBytes.Length > 0)
System.IO.File.WriteAllBytes(coverPath, picBytes);
}
catch (Exception ex)
{
//Failure to download cover art should not be
//considered a failure to download the book
Serilog.Log.Logger.Error(ex.Message);
}
}
public async Task<StatusHandler> TryProcessAsync(LibraryBook libraryBook)
=> Validate(libraryBook)
? await ProcessAsync(libraryBook)

View File

@ -1,4 +1,4 @@
using System;
using System;
using System.Threading.Tasks;
using System.Windows.Forms;
using DataLayer;
@ -201,23 +201,7 @@ namespace LibationWinForms.BookLiberation
var statusHandler = await Processable.ProcessSingleAsync(libraryBook, validate);
if (statusHandler.IsSuccess)
{
var destinationDir = AudibleFileStorage.Audio.GetDestinationDirectory(libraryBook);
var coverPath = FileManager.FileUtility.GetValidFilename(System.IO.Path.Combine(destinationDir, "Cover.jpg"), "", true);
try
{
var picBytes = PictureStorage.GetPictureSynchronously(new PictureDefinition(libraryBook.Book.PictureId_1215, PictureSize._1215x1215));
System.IO.File.WriteAllBytes(coverPath, picBytes);
}
catch(Exception ex)
{
LogMe.Error(ex.Message);
}
//Failure to download cover art should not be
//considered a failure to download the book
return true;
}
foreach (var errorMessage in statusHandler.Errors)
LogMe.Error(errorMessage);