All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog.
- The
—-filename-lengthoption is added to the download command. Defaults to 230. - Added the
asin_onlymode to functionmodels.BaseItem.create_base_filenameto output the asin as the base filename.
- The function
models.BaseItem.create_base_filenamenow limits the output length to 230 chars by default. The output length can be changed by using themax_lengthargument. - The
—-filename-modeoption of the download command now acceptsasin_onlyas mode.
- switch from setup.py to pyproject.toml
- use uv for development package management
- Fixing
[Errno 18] Invalid cross-device linkwhen downloading files using the--output-diroption. This error is fixed by creating the resume file on the same location as the target file.
- The
--chapter-typeoption is added to the download command. Chapter can now be downloaded asflatortreetype.treeis the default. A default chapter type can be set in the config file.
- Improved podcast ignore feature in download command
- make
--ignore-podcastsand--resolve-podcastsoptions 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_metadatatanow accept achapter_typeargument. 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_podcatstoresolve_podcasts models.Library.resolve_podcatsis now deprecated and will be removed in a future version
- Python 3.6 - 3.9 compatibility
- fix a
TypeErroron some Python versions when callingimportlib.metadata.entry_pointswith group argument
- Added a resume feature when downloading aaxc files.
- New
downlaodermodule 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 addcommand. 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_supportto 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-sizeoption
- 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-dateand--end-dateoption todownloadcommand--start-dateand--end-dateoption tolibrary exportandlibrary listcommand- 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-errorsflag of the download command now continue, if an item failed to download
- PDFs could not be found using the download command (#112)
librarycommand now outputs theextended_product_descriptionfield
- by default a licenserequest (voucher) will not include chapter information by default
- moved licenserequest part from
models.LibraryItem.get_aaxc_urlto its ownmodels.LibraryItem.get_licensefunction - allow book titles with hyphens (#96)
- if there is no title fallback to an empty string (#98)
- reduce
response_groupsfor the download command to speed up fetching the library (#109)
Extremequality 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_synccalledmodels.Library.from_apiwith incorrect keyword arguments
- reworked
cmd_remove-encryptionplugin command (e.g. support nested chapters, use chapter file for aaxc files) - added explanation in README.md for creating a second profile
--aax-fallbackoption todownloadcommand to download books in aax format and fallback to aaxc, if the book is not available as aax--annotationoption todownloadcommand to get bookmarks and notesquestionarypackage to dependenciesaddandremovesubcommands to wishlistfull_response_callbacktoutilsexport_to_csvtoutilsrun_asynctodecoratorspass_clienttodecoratorsprofile_optiontodecoratorspassword_optiontodecoratorstimeout_optiontodecoratorsbunch_size_optiontodecoratorsConfigFile.get_profile_optionget the value for an option for a given profileSession.selected.profileto get the profile name for the current sessionSession.get_auth_for_profileto get an auth file for a given profilemodels.BaseItem.create_base_filenameto build a filename in given modemodels.LibraryItem.get_annotationsto get annotations for a library item
- bump
audibleto v0.8.2 to fix a bug in httpx - rework plugin examples in
plugin_cmds - rename
config.Configtoconfig.ConfigFile - move
click_verbosity_loggerfrom_loggingtodecoratorsand rename it toverbosity_option - move
wrap_asyncfromutilstodecorators - move
add_param_to_sessionfromconfigtodecorators - move
pass_sessionfromconfigtodecorators downloadcommand let you now select items when using--titleoption
- the
library exportandwishlist exportcommand will now export tocsvcorrectly
- 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
--versionoption now checks if an update foraudible-cliis available - build macOS releases in
onedirmode
- 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 assemblymessage
- add the
apicommand to make requests to the AudibleAPI - a counter of downloaded items for the download command
- the
--verbosity/-voption; default is INFO - the
--bunch-sizeoption to the download, library export and library list subcommand; this is only needed on slow internet connections wishlistsubcommand- the
--resolve-podcastsflag 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-podcastsflag to download subcommand; if a podcast contains multiple episodes, the podcast will be ignored - the
models.Library.resolve_podcastsmethod to append all podcast episodes to given library. - the
models.LibraryItem.get_child_itemsmethod to get all episodes of a podcast item or parts for a MultiPartBook. - the
models.BaseItemnow holds a list ofresponse_groupsin the_response_groupsattribute. - the
--formatoption tolibrary exportsubcommand - the
models.Catalogclass - the
models.Library.from_api_full_syncmethod to fetch the full library
- the
--aaxcflag of the download command now try to check if a voucher file exists before alicenserequestis make (issue #60) - the
--aaxcflag of the download command now downloads mp3/m4a files if theaaxcformat is not available and thelicenserequestoffers this formats - the
downloadsubcommand now download podcasts - Remove sync code where async code are available. All plugins should take care about this!!!
- Bump
audibleto v0.7.0 - rebuild
models.LibraryItem.get_aax_urlto build the aax download url in another way models.BaseItem.full_titlenow contains publication name for podcast episodesmodels.LibraryItemnow checks the customer rights when callingLibraryItem._is_downloadablemodels.BaseItemandmodels.BaseListnow holds theapi_clientinstead thelocaleandauth- rename
models.Wishlist.get_from_apitomodels.Wishlist.from_api - rename
models.Library.get_from_apitomodels.Library.from_api; this method does not fetch the full library for now
- bump click to v8
- removing an error using the
--outputoption of thelibrary exportcommand - 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
Downloaderclass 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.