How rmcrackan/libation works
Libation is a cross-platform desktop and CLI application for scanning and organizing an Audible library, then downloading and decrypting selected audiobooks into managed files. Its main user workflow runs from account access and library discovery through searchable library records to download/decryption and file storage; import, export, and Audiobookshelf upload are related capabilities. Search uses a Lucene index backed by library records. The README establishes the product capabilities; several subsystem connections below are documented or reflected by module responsibilities, but unsampled implementations are not verified in detail.
Main entry points: MainVM.cs Desktop app · DownloadDecryptBook.cs Book download · LibraryCommands.cs Library scan · LibationContext.cs Library records
Components 20
User interfaces
- Desktop app
Source/LibationAvalonia/ViewModels/MainVM.cs - CLI
Source/LibationCli/Program.cs
Audible access
- Account auth
Source/AudibleUtilities/Account.cs - Audible API
Source/AudibleUtilities/ApiExtended.cs
Library services
- Library scan
Source/ApplicationServices/LibraryCommands.cs - Library import
Source/DtoImporterService/LibraryBookImporter.cs - Library records
Source/DataLayer/LibationContext.cs - Search commands
Source/ApplicationServices/SearchEngineCommands.cs - Search index
Source/LibationSearchEngine/SearchEngine.cs - Library export
Source/ApplicationServices/LibraryExporter.cs
Download and files
- Download queue
Source/LibationUiBase/ProcessQueue/ProcessQueueViewModel.cs - Book download
Source/FileLiberator/DownloadDecryptBook.cs - AAX decryption
Source/AaxDecrypter/AaxcDownloadSingleConverter.cs - Audio storage
Source/LibationFileManager/AudibleFileStorage.cs - File organization
Source/FileManager/NamingTemplate/NamingTemplate.cs
Persistence and integrations
- Database provider
Source/DataLayer/LibationContextFactory.cs - Token storage
Source/AudibleUtilities/IdentityTokenStorageWiring.cs - Audiobookshelf
Source/FileLiberator/UploadToAudiobookshelf.cs - CSV export
Source/ApplicationServices/CsvWriter.cs
Other components
- User
Connections 23
- User → Desktop app: uses
- User → CLI: uses
- Desktop app → Library scan: requests scan
- CLI → Library scan: requests scan
- Account auth → Audible API: authenticates
- Library scan → Audible API: retrieves library
- Desktop app → Library import: imports library
- Library scan → Library records: updates records
- Library import → Library records: imports records
- Database provider → Library records: creates context
- Search commands → Search index: queries and updates
- Search index → Library records: indexes records
- Desktop app → Search commands: searches library
- Desktop app → Library export: exports library
- Library export → CSV export: writes CSV
- Desktop app → Download queue: queues books
- Download queue → Book download: dispatches books
- Book download → Audible API: retrieves audio
- Book download → AAX decryption: decrypts audio
- Book download → Audio storage: stores output
- File organization → Book download: names output
- Account auth → Token storage: persists tokens
- Book download → Audiobookshelf: uploads book