Better method for downloading only 1 book at a time.
This commit is contained in:
parent
2afcaebb78
commit
f68bf2d6b3
@ -50,12 +50,12 @@ namespace LibationWinForms.BookLiberation
|
|||||||
|
|
||||||
public static class ProcessorAutomationController
|
public static class ProcessorAutomationController
|
||||||
{
|
{
|
||||||
public static async Task BackupSingleBookAsync(LibraryBook libraryBook, Action<LibraryBook> onCompleteAction = null)
|
public static async Task BackupSingleBookAsync(LibraryBook libraryBook)
|
||||||
{
|
{
|
||||||
Serilog.Log.Logger.Information($"Begin {nameof(BackupSingleBookAsync)} {{@DebugInfo}}", new { libraryBook?.Book?.AudibleProductId });
|
Serilog.Log.Logger.Information($"Begin {nameof(BackupSingleBookAsync)} {{@DebugInfo}}", new { libraryBook?.Book?.AudibleProductId });
|
||||||
|
|
||||||
var logMe = LogMe.RegisterForm();
|
var logMe = LogMe.RegisterForm();
|
||||||
var backupBook = CreateBackupBook(logMe, onCompleteAction);
|
var backupBook = CreateBackupBook(logMe);
|
||||||
|
|
||||||
// continue even if libraryBook is null. we'll display even that in the processing box
|
// continue even if libraryBook is null. we'll display even that in the processing box
|
||||||
await new BackupSingle(logMe, backupBook, libraryBook).RunBackupAsync();
|
await new BackupSingle(logMe, backupBook, libraryBook).RunBackupAsync();
|
||||||
@ -96,14 +96,13 @@ namespace LibationWinForms.BookLiberation
|
|||||||
await new BackupLoop(logMe, downloadPdf, automatedBackupsForm).RunBackupAsync();
|
await new BackupLoop(logMe, downloadPdf, automatedBackupsForm).RunBackupAsync();
|
||||||
}
|
}
|
||||||
|
|
||||||
private static Processable CreateBackupBook(LogMe logMe, Action<LibraryBook> onCompleteAction = null)
|
private static Processable CreateBackupBook(LogMe logMe)
|
||||||
{
|
{
|
||||||
var downloadPdf = CreateProcessable<DownloadPdf, PdfDownloadForm>(logMe);
|
var downloadPdf = CreateProcessable<DownloadPdf, PdfDownloadForm>(logMe);
|
||||||
|
|
||||||
//Chain pdf download on DownloadDecryptBook.Completed
|
//Chain pdf download on DownloadDecryptBook.Completed
|
||||||
async void onDownloadDecryptBookCompleted(object sender, LibraryBook e)
|
async void onDownloadDecryptBookCompleted(object sender, LibraryBook e)
|
||||||
{
|
{
|
||||||
onCompleteAction?.Invoke(e);
|
|
||||||
await downloadPdf.TryProcessAsync(e);
|
await downloadPdf.TryProcessAsync(e);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -10,6 +10,7 @@ using Dinah.Core.DataBinding;
|
|||||||
using Dinah.Core;
|
using Dinah.Core;
|
||||||
using Dinah.Core.Drawing;
|
using Dinah.Core.Drawing;
|
||||||
using LibationFileManager;
|
using LibationFileManager;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
namespace LibationWinForms
|
namespace LibationWinForms
|
||||||
{
|
{
|
||||||
@ -39,6 +40,7 @@ namespace LibationWinForms
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public bool DownloadInProgress { get; private set; }
|
||||||
public string ProductRating { get; private set; }
|
public string ProductRating { get; private set; }
|
||||||
public string PurchaseDate { get; private set; }
|
public string PurchaseDate { get; private set; }
|
||||||
public string MyRating { get; private set; }
|
public string MyRating { get; private set; }
|
||||||
@ -77,6 +79,16 @@ namespace LibationWinForms
|
|||||||
|
|
||||||
public GridEntry(LibraryBook libraryBook) => setLibraryBook(libraryBook);
|
public GridEntry(LibraryBook libraryBook) => setLibraryBook(libraryBook);
|
||||||
|
|
||||||
|
public async Task DownloadBook()
|
||||||
|
{
|
||||||
|
if (!DownloadInProgress)
|
||||||
|
{
|
||||||
|
DownloadInProgress = true;
|
||||||
|
await BookLiberation.ProcessorAutomationController.BackupSingleBookAsync(LibraryBook);
|
||||||
|
DownloadInProgress = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public void UpdateLibraryBook(LibraryBook libraryBook)
|
public void UpdateLibraryBook(LibraryBook libraryBook)
|
||||||
{
|
{
|
||||||
if (AudibleProductId != libraryBook.Book.AudibleProductId)
|
if (AudibleProductId != libraryBook.Book.AudibleProductId)
|
||||||
|
|||||||
@ -29,7 +29,6 @@ namespace LibationWinForms
|
|||||||
|
|
||||||
public partial class ProductsGrid : UserControl
|
public partial class ProductsGrid : UserControl
|
||||||
{
|
{
|
||||||
private static List<string> bookConversionInProgress = new();
|
|
||||||
public event EventHandler<int> VisibleCountChanged;
|
public event EventHandler<int> VisibleCountChanged;
|
||||||
|
|
||||||
// alias
|
// alias
|
||||||
@ -89,14 +88,8 @@ namespace LibationWinForms
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
//don't try to decrypt the same book at the same time.
|
|
||||||
if (bookConversionInProgress.Contains(libraryBook.Book.AudibleProductId))
|
|
||||||
return;
|
|
||||||
|
|
||||||
bookConversionInProgress.Add(libraryBook.Book.AudibleProductId);
|
|
||||||
|
|
||||||
// else: liberate
|
// else: liberate
|
||||||
await BookLiberation.ProcessorAutomationController.BackupSingleBookAsync(libraryBook, b => bookConversionInProgress.Remove(b.Book.AudibleProductId));
|
await liveGridEntry.DownloadBook();
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void Details_Click(GridEntry liveGridEntry)
|
private static void Details_Click(GridEntry liveGridEntry)
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user