Files
Libation/docs/advanced/command-line-interface.md
2026-03-03 17:18:38 -05:00

150 lines
3.8 KiB
Markdown

# Command Line Interface
Libationcli.exe allows limited access to Libation's functionalities as a CLI.
Warnings about relying solely on on the CLI:
- CLI will not perform any upgrades.
- It will show that there is an upgrade, but that will likely scroll by too fast to notice.
- It will not perform all post-upgrade migrations. Some migrations are only be possible by launching GUI.
## Progress Bar
The **liberate** and **convert** commands show a progress bar in the terminal while downloading or converting (e.g. `[##########----------] 2.5 min remaining`). The progress bar is only shown when the CLI is run interactively with output not redirected.
To **turn off the progress bar** (for scripting, logging, or cleaner output), redirect standard output and/or standard error. The progress bar is automatically disabled when either stream is redirected.
```console
libationcli liberate > log.txt 2>&1
libationcli convert 2> errors.txt
```
Redirecting also avoids progress-bar control characters in log files.
## Help
```console
libationcli --help
```
## Verb-Specific Help
```console
libationcli scan --help
```
## Scan All Libraries
```console
libationcli scan
```
## Scan Only Libraries for Specific Accounts
```console
libationcli scan nickname1 nickname2
```
## Convert All m4b Files to mp3
```console
libationcli convert
```
## Liberate All Books and Pdfs
```console
libationcli liberate
```
## Liberate Pdfs Only
```console
libationcli liberate --pdf
libationcli liberate -p
```
## Force Book(s) to Re-Liberate
```console
libationcli liberate --force
libationcli liberate -f
```
## Liberate using a license file from the `get-license` command
```console
libationcli liberate --license /path/to/license.lic
libationcli liberate --license - < /path/to/license.lic
```
## List Libation Settings
```console
libationcli get-setting
libationcli get-setting -b
libationcli get-setting FileDownloadQuality
```
## Override Libation Settings for the Command
```console
libationcli liberate B017V4IM1G -override FileDownloadQuality=Normal
libationcli liberate B017V4IM1G -o FileDownloadQuality=normal -o UseWidevine=true Request_xHE_AAC=true -f
```
## Copy the Local SQLite Database to Postgres
```console
libationcli copydb --connectionString "my postgres connection string"
libationcli copydb -c "my postgres connection string"
```
## Export Library to File
```console
libationcli export --path "C:\foo\bar\my.json" --json
libationcli export -p "C:\foo\bar\my.json" -j
libationcli export -p "C:\foo\bar\my.csv" --csv
libationcli export -p "C:\foo\bar\my.csv" -c
libationcli export -p "C:\foo\bar\my.xlsx" --xlsx
libationcli export -p "C:\foo\bar\my.xlsx" -x
```
## Set Download Status
Set download statuses throughout library based on whether each book's audio file can be found.
Must include at least one flag: --downloaded , --not-downloaded.
Downloaded: If the audio file can be found, set download status to 'Downloaded'.
Not Downloaded: If the audio file cannot be found, set download status to 'Not Downloaded'
UI: Visible Books \> Set 'Downloaded' status automatically. Visible books. Prompts before saving changes
CLI: Full library. No prompt
```console
libationcli set-status -d
libationcli set-status -n
libationcli set-status -d -n
```
## Get a Content License Without Downloading
```console
libationcli get-license B017V4IM1G
```
## Example Powershell Script to Download Four Different Versions of the Same Book
```powershell
$asin="B017V4IM1G"
$xHE_AAC=@('true', 'false')
$Qualities=@('Normal', 'High')
foreach($q in $Qualities){
foreach($x in $xHE_AAC){
$license = ./libationcli get-license $asin --override FileDownloadQuality=$q --override Request_xHE_AAC=$x
echo $($license | ConvertFrom-Json).ContentMetadata.content_reference
echo $license | ./libationcli liberate --force --license -
}
}
```