All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog.
- Fixing
[Errno 18] Invalid cross-device link
when downloading files using the--output-dir
option. This error is fixed by creating the resume file on the same location as the target file.
- The
--chapter-type
option is added to the download command. Chapter can now be downloaded asflat
ortree
type.tree
is the default. A default chapter type can be set in the config file.
- Improved podcast ignore feature in download command
- make
--ignore-podcasts
and--resolve-podcasts
options of download command mutual exclusive - Switched from a HEAD to a GET request without loading the body in the downloader class. This change improves the program's speed, as the HEAD request was taking considerably longer than a GET request on some Audible pages.
models.LibraryItem.get_content_metadatata
now accept achapter_type
argument. Additional keyword arguments to this method are now passed through the metadata request.- Update httpx version range to >=0.23.3 and <0.28.0.
- fix typo from
resolve_podcats
toresolve_podcasts
models.Library.resolve_podcats
is now deprecated and will be removed in a future version
- fix a
TypeError
on some Python versions when callingimportlib.metadata.entry_points
with group argument
- Added a resume feature when downloading aaxc files.
- New
downlaoder
module which contains a rework of the Downloader class. - If necessary, large audiobooks are now downloaded in parts.
- Plugin command help page now contains additional information about the source of the plugin.
- Command help text now starts with ´(P)` for plugin commands.
- Rework plugin module
- using importlib.metadata over setuptools (pkg_resources) to get entrypoints
- Update marketplace choices in
manage auth-file add
command. Now all available marketplaces are listed.
- Avoid tqdm progress bar interruption by logger’s output to console.
- Fixing an issue with unawaited coroutines when the download command exited abnormal.
- Update httpx version range to >=0.23.3 and <0.26.0.
- add
freeze_support
to pyinstaller entry script (#78)
- Dynamically load available marketplaces from the
audible package
. Allows to implement a new marketplace without updatingaudible-cli
.
- Allow download multiple cover sizes at once. Each cover size must be provided with the
--cover-size
option
- Rework start_date and end_date option
- In some cases, the purchase date is None. This results in an exception. Now check for purchase date or date added and skip, if date is missing
--start-date
and--end-date
option todownload
command--start-date
and--end-date
option tolibrary export
andlibrary list
command- better error handling for license requests
- verify that a download link is valid
- make sure an item is published before downloading the aax, aaxc or pdf file
--ignore-errors
flag of the download command now continue, if an item failed to download
- PDFs could not be found using the download command (#112)
library
command now outputs theextended_product_description
field
- by default a licenserequest (voucher) will not include chapter information by default
- moved licenserequest part from
models.LibraryItem.get_aaxc_url
to its ownmodels.LibraryItem.get_license
function - allow book titles with hyphens (#96)
- if there is no title fallback to an empty string (#98)
- reduce
response_groups
for the download command to speed up fetching the library (#109)
Extreme
quality is not supported by the Audible API anymore (#107)- download command continued execution after error (#104)
- Currently, paths with dots will break the decryption (#97)
models.Library.from_api_full_sync
calledmodels.Library.from_api
with incorrect keyword arguments
- reworked
cmd_remove-encryption
plugin command (e.g. support nested chapters, use chapter file for aaxc files) - added explanation in README.md for creating a second profile
--aax-fallback
option todownload
command to download books in aax format and fallback to aaxc, if the book is not available as aax--annotation
option todownload
command to get bookmarks and notesquestionary
package to dependenciesadd
andremove
subcommands to wishlistfull_response_callback
toutils
export_to_csv
toutils
run_async
todecorators
pass_client
todecorators
profile_option
todecorators
password_option
todecorators
timeout_option
todecorators
bunch_size_option
todecorators
ConfigFile.get_profile_option
get the value for an option for a given profileSession.selected.profile
to get the profile name for the current sessionSession.get_auth_for_profile
to get an auth file for a given profilemodels.BaseItem.create_base_filename
to build a filename in given modemodels.LibraryItem.get_annotations
to get annotations for a library item
- bump
audible
to v0.8.2 to fix a bug in httpx - rework plugin examples in
plugin_cmds
- rename
config.Config
toconfig.ConfigFile
- move
click_verbosity_logger
from_logging
todecorators
and rename it toverbosity_option
- move
wrap_async
fromutils
todecorators
- move
add_param_to_session
fromconfig
todecorators
- move
pass_session
fromconfig
todecorators
download
command let you now select items when using--title
option
- the
library export
andwishlist export
command will now export tocsv
correctly
- fix a bug with the registration url
- bump Audible to v0.7.1 to fix a bug when register a new device with pre-Amazon account
- the
--version
option now checks if an update foraudible-cli
is available - build macOS releases in
onedir
mode
- fix a bug where counting an item if the download fails
- fix an issue where some items could not be downloaded do tue wrong content type
- fix an issue where an aax downloaded failed with a
codec doesn't support full file assembly
message
- add the
api
command to make requests to the AudibleAPI - a counter of downloaded items for the download command
- the
--verbosity/-v
option; default is INFO - the
--bunch-size
option to the download, library export and library list subcommand; this is only needed on slow internet connections wishlist
subcommand- the
--resolve-podcasts
flag to download subcommand; all episodes of a podcast will be fetched at startup, so a single episode can be searched via his title or asin - the
--ignore-podcasts
flag to download subcommand; if a podcast contains multiple episodes, the podcast will be ignored - the
models.Library.resolve_podcasts
method to append all podcast episodes to given library. - the
models.LibraryItem.get_child_items
method to get all episodes of a podcast item or parts for a MultiPartBook. - the
models.BaseItem
now holds a list ofresponse_groups
in the_response_groups
attribute. - the
--format
option tolibrary export
subcommand - the
models.Catalog
class - the
models.Library.from_api_full_sync
method to fetch the full library
- the
--aaxc
flag of the download command now try to check if a voucher file exists before alicenserequest
is make (issue #60) - the
--aaxc
flag of the download command now downloads mp3/m4a files if theaaxc
format is not available and thelicenserequest
offers this formats - the
download
subcommand now download podcasts - Remove sync code where async code are available. All plugins should take care about this!!!
- Bump
audible
to v0.7.0 - rebuild
models.LibraryItem.get_aax_url
to build the aax download url in another way models.BaseItem.full_title
now contains publication name for podcast episodesmodels.LibraryItem
now checks the customer rights when callingLibraryItem._is_downloadable
models.BaseItem
andmodels.BaseList
now holds theapi_client
instead thelocale
andauth
- rename
models.Wishlist.get_from_api
tomodels.Wishlist.from_api
- rename
models.Library.get_from_api
tomodels.Library.from_api
; this method does not fetch the full library for now
- bump click to v8
- removing an error using the
--output
option of thelibrary export
command - fixing some other bugs
- bugfix error adding/removing auth file
- bugfix errors in utils.py
- utils.py: Downloading pdf files was broken. Downloader now follows a redirect when downloading a file.
- Add spec file to create binary with pyinstaller
- Add binary for some platforms
- Add timeout option to download command
- models.py: If no supported codec is found when downloading aax files, no url is returned now.
- utils.py: Downloading a file with the
Downloader
class now checks the response status code, the content type and compares the file size. - models.py: Now all books are fetched if the library is greater than 1000. This works for the download and library command.
- cmd_library.py: If library does not contain a cover url, audible-cli has raised an Exception. Now the cover url field will set to '-' if no cover url is available.