141 lines
4.4 KiB
Markdown
141 lines
4.4 KiB
Markdown
A justfile containing recipes to help download, convert, rename, file and archive your audiobook collection.
|
|
|
|
The use of these recipes in intended for the sole purpose of maintaining a PERSONAL archive, and the resulting `.m4b` files should not be redistributed where doing so would violate your contract with the supplier of the original `.aax` and `.aaxc` files.
|
|
|
|
## Requirements
|
|
|
|
- [mise-en-place](https://mise.jdx.dev)
|
|
|
|
Mise will be used to install the other dependencies. If you don't want to use `mise`, then you need to install the following:
|
|
|
|
- [just](https://just.systems/)
|
|
- [audible-cli](https://github.com/mkb79/audible-cli) (recommended installation instuctions below)
|
|
- [fd](https://github.com/sharkdp/fd)
|
|
- [fzf](https://github.com/junegunn/fzf)
|
|
- [jq](https://jqlang.github.io/jq/)
|
|
- [ffmpeg](https://ffmpeg.org)
|
|
- [refile-m4b](https://crates.io/crates/refile-m4b)
|
|
|
|
### Transitive Dependencies
|
|
|
|
For `refile-m4b` you will also need these libraries (or the equivalent for your OS):
|
|
|
|
- libtag1-dev
|
|
- libtagc0-dev
|
|
|
|
#### Debian
|
|
|
|
```shell
|
|
sudo apt install libtag1-dev libtagc0-dev
|
|
```
|
|
|
|
### Install `mise`
|
|
|
|
```shell
|
|
curl https://mise.run | sh
|
|
~/.local/bin/mise --version
|
|
```
|
|
|
|
### Install dependencies with `mise`
|
|
|
|
```shell
|
|
mise install
|
|
```
|
|
|
|
This will use the `.mise.toml` file to install all the required dependencies.
|
|
|
|
### Note on Installing `audible-cli` Manually
|
|
|
|
If you aren't using `mise` to install the `audible-cli` then note that the latest version (`v0.3.1`) doesn't work (at least for me), so I recommend using the latest version in the `master` branch.
|
|
|
|
## Usage
|
|
|
|
### Check prerequisites
|
|
|
|
Run the `doctor` recipe to verify prerequisites:
|
|
|
|
```shell
|
|
just doctor
|
|
```
|
|
|
|
e.g.:
|
|
|
|
```text
|
|
Verify required executables are on the path:
|
|
- OKAY : audible => ~/.local/share/mise/installs/pipx-mkb79-audible-cli/master/bin/audible
|
|
- OKAY : just => ~/.local/share/mise/installs/just/latest/bin/just
|
|
- OKAY : fzf => ~/.local/share/mise/installs/go-github-com-junegunn-fzf/latest/bin/fzf
|
|
- OKAY : jq => ~/.local/share/mise/installs/jq/latest/bin/jq
|
|
- OKAY : ffmpeg => ~/.local/share/mise/installs/ffmpeg/latest/bin/ffmpeg
|
|
- OKAY : refile-m4b => ~/.local/share/mise/installs/cargo-refile-m4b/latest/bin/refile-m4b
|
|
```
|
|
|
|
### Authenticate & Register
|
|
|
|
When prompted to name your profile, use the default: '`audible`'.
|
|
We use that name to locate the file `~/.audible/audible.json` when converting AAX files.
|
|
|
|
```shell
|
|
audible quickstart
|
|
audible activation-bytes
|
|
```
|
|
|
|
This will log in to you account, register a pseudo device in your account and store the details in `~/.audible/`.
|
|
|
|
### Fetch Library
|
|
|
|
Once you have bought a title or otherwise added to your account's library, you need to fetch a copy of the latest library list.
|
|
|
|
```shell
|
|
just fetch-library
|
|
```
|
|
|
|
This will create a new file `library-{date}.txt`, that contains a list of everything available in your account.
|
|
|
|
On subsequent runs (on a different day!) it will create a file `library-recent.txt` that contains any new additions to your
|
|
library since the previous run.
|
|
|
|
### Select, download and convert
|
|
|
|
The recommended workflow is to run the default recipe which will present you with a searchable list of your library.
|
|
From here you can select items to download by pressing `TAB` (for selecting mutliple titles), or `ENTER` to select just the one.
|
|
|
|
```shell
|
|
just
|
|
# or
|
|
just recent
|
|
```
|
|
|
|
This will use the `library-recent.txt` file, showing only new additions to your library.
|
|
|
|
To select from your full library:
|
|
|
|
```shell
|
|
just full
|
|
```
|
|
|
|
Once you have made your selection, the `.aax` and/or `.aaxc/.voucher` files will be downloaded, via a `./TEMP/` directory,
|
|
before being moved to either the `./AAX/` or `./AAXC/` directories.
|
|
|
|
Once downloaded they will be automatically converted to DRM free `.m4b` files in the `./M4B/` directory.
|
|
|
|
NOTE: After being converted the source files in the `./AAX/` and `./AAXC/` directories are deleted.
|
|
|
|
The files in `./M4B/` will then be refiled, by `refile-m4b`, into directories based on the author, series and title.
|
|
|
|
### Review
|
|
|
|
You are now free to rename and/or move the files to more closely fit your own prefered archival needs.
|
|
|
|
### Archive
|
|
|
|
Once you are happy you can run the '`archive`' recipe to move the files into your archive.
|
|
|
|
```shell
|
|
export AUDIOBOOK_ARCHIVE=/mnt/external/audio-books/
|
|
just archive
|
|
```
|
|
|
|
Set the `AUDIOBOOK_ARCHIVE` environment variable to the directory where you want your `.m4b` files to be stored.
|
|
|
|
NOTE: Once the files have been copied, the files in the `M4B` directory are deleted.
|