mirror of
https://github.com/rmcrackan/Libation.git
synced 2026-09-13 06:07:30 -04:00
Auto-upload only fires when a book is liberated. Books liberated before Audiobookshelf was configured, or while it was disabled, had no path to the server short of re-downloading the whole library. 'libationcli upload' backfills them from the files already on disk. Bulk or targeted by ASIN. Nothing is re-downloaded and no local file is deleted. Also fixes a latent defect this exposes. Validate() reads a database status (Book.AudioExists) while GetFilesToUpload() read only FilePathCache. A book liberated long ago passes validation but has no cache entry, so the upload found no files and returned success having sent nothing. File lookup now uses AudibleFileStorage.Audio.GetPaths, which unions the cache with a live scan of the Books directory. Other changes: - Validate() now requires LiberatedStatus.Liberated. It previously accepted Error too, whose partial files should not be uploaded. - New OutcomeDetermined event classifies each book as Uploaded, AlreadyExists, NoFilesFound or Failed. Failures travel on this event rather than through StatusHandler: the GUI process queue treats a non-success StatusHandler as a bad book and raises the Abort/Retry/Ignore dialog, and an upload problem must never fail a liberation. - The verb prints an end-of-run summary and exits 0, matching other verbs. No database migration. Duplicate detection already runs server-side inside UploadBookAsync, so repeat runs are safe without local upload state. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2 lines
97 B
C#
2 lines
97 B
C#
[assembly: System.Runtime.CompilerServices.InternalsVisibleTo(nameof(FileLiberator) + ".Tests")]
|