Download all your kindle books script.
2024.01 Amazon has shut down the China storefront homepage. You can download your books by visiting this link: https://www.amazon.cn/hz/mycd/myx#/home/content/booksAll/dateDsc/
2023.06.26 If you don't have a physical Kindle device, you can use the following command. The downloaded EPUB files will be placed in the EPUB folder.
If you encounter the error AttributeError: 'NoneType' object has no attribute 'url'
, please refer to:
#155 (comment)
pip3 install -r requirements.txt
python no_kindle.py -e ${email} -p ${password}
# To download push books
python no_kindle.py -e ${email} -p ${password} --pdoc
# !!!!!! Amazon has taken down the China web storefront.
# You can generate the purchase records and notes of all your e-books for data analysis
python no_kindle.py -e ${email} -p ${password} --memory
# Supports exporting all bookmarks and reading information (Clipping data) #153
python no_kindle.py -e ${email} -p ${password} --bookmark
Go to the Release page, download the binary file for your system and extract it.
- If you encounter issues opening the binary, please refer to #25
- For Kindle download issues (triggered by Amazon risk control), see #69
- Mac beginner's guide by @chongiscool, see #76
- python3
- requirements
python3 --version # check python version
pip3 install kindle_download # install via pip
git clone https://github.com/yihong0618/Kindle_download_helper.git && cd Kindle_download_helper
pip3 install -r requirements.txt
python kindle.py -h # view usage parameters
usage: kindle.py [-h] [--cookie COOKIE | --cookie-file COOKIE_FILE] [--cn] [--jp] [--de] [--uk] [--resume-from INDEX] [--cut-length CUT_LENGTH] [-o OUTDIR] [-od OUTDEDRMDIR] [-s SESSION_FILE] [--pdoc]
[--resolve_duplicate_names] [--readme] [--dedrm] [--list] [--device_sn DEVICE_SN] [--mode MODE]
[csrf_token]
positional arguments:
csrf_token amazon or amazon cn csrf token
optional arguments:
-h, --help show this help message and exit
--cookie COOKIE amazon or amazon cn cookie
--cookie-file COOKIE_FILE
load cookie local file
--cn if your account is an amazon.cn account
--jp if your account is an amazon.co.jp account
--de if your account is an amazon.de account
--uk if your account is an amazon.co.uk account
--resume-from INDEX resume from the index if download failed
--cut-length CUT_LENGTH
truncate the file name
-o OUTDIR, --outdir OUTDIR
download output dir
-od OUTDEDRMDIR, --outdedrmdir OUTDEDRMDIR
download output dedrm dir
-s SESSION_FILE, --session-file SESSION_FILE
The reusable session dump file
--pdoc to download personal documents or ebook
--resolve_duplicate_names
Resolve duplicate names files to download
--readme If you want to generate kindle readme stats
--dedrm If you want to `dedrm` directly
--list just list books/pdoc, not to download
--device_sn DEVICE_SN
Download file for device with this serial number
--mode MODE Mode of download, all : download all files at once, sel: download selected files
Try to automatically retrieve cookie and csrfToken for download
python3 kindle.py --dedrm --cn ## --dedrm to remove DRM
(Recommended) Manually enter cookie and csrfToken for download
python3 kindle.py ${csrfToken} --cookie ${cookie} --dedrm --cn # Download China-market books and remove DRM
python3 kindle.py ${csrfToken} --cookie ${cookie} --dedrm # Download US-market books
By default, all files are downloaded. To manually select which books to download, execute:
python3 kindle.py --mode sel # or "python3 kindle.py --pdoc --mode sel" for personal documents
After retrieving the book list, the program will prompt:
Input the index of books you want to download, split by space (q to quit, l to list books).
To quit, type "q" and press Enter; type "l" and press Enter to re-display the book list. To download books, input the corresponding indices (e.g., 7 10 20):
7 10 20
Indices can also be specified with ranges, for example:
4 5 10:12 15
This downloads books 4, 5, 10, 11, 12, and 15.
If the cookie is reported as invalid by default, you can manually input it.
On the all books page, open the browser's developer tools (F12), go to the Network panel, locate any ajax
request, and copy the Cookie
from its request headers. The csrfToken can also be found in the Payload.
Then run:
python3 kindle.py --cn --cookie ${cookie}
You can also save the cookie to a text file and run python3 kindle.py --cookie-file ${cookie_file}
to download books.
If the process fails to obtain the CSRF token, you can manually input it.
The csrfToken can be found in the page source on the all books page. Right-click, view the page source, and search for csrfToken
to copy its value. Then run:
# CSRF Token
python3 kindle.py --cn ${csrfToken}
# Both cookie and CSRF Token
python3 kindle.py --cn --cookie ${cookie} ${csrfToken}
If you are running on your local machine, the project can use the browser-cookie3 library to automatically retrieve cookies from your browser.
- Log in to amazon.cn
- Visit https://www.amazon.cn/hz/mycd/myx#/home/content/booksAll/dateDsc/
- Right-click the page source and search for
csrfToken
, then copy its value - Run
python3 kindle.py --cn
- To download push files, run
python3 kindle.py --cn --pdoc
- To directly perform DRM removal (may not always work), run
python3 kindle.py --cn --pdoc --dedrm
- Log in to amazon.com
- Visit https://www.amazon.com/hz/mycd/myx#/home/content/booksAll/dateDsc/
- Right-click the page source, find the
csrfToken
and copy its value - Run:
python3 kindle.py
- For document files, run:
python3 kindle.py --pdoc
- Log in to amazon.de
- Visit https://www.amazon.de/hz/mycd/myx#/home/content/booksAll/dateDsc/
- Right-click the page source, find the
csrfToken
and copy its value - Run:
python3 kindle.py --de
- For document files, run:
python3 kindle.py --de --pdoc
- Log in to amazon.co.uk
- Visit https://www.amazon.co.uk/hz/mycd/myx#/home/content/booksAll/dateDsc/
- Right-click the page source, find the
csrfToken
and copy its value - Run:
python3 kindle.py --uk
- For document files, run:
python3 kindle.py --uk --pdoc
- Log in to amazon.co.jp
- Visit https://www.amazon.co.jp/hz/mycd/myx#/home/content/booksAll/dateDsc/
- Right-click the page source, search for
csrfToken
, and copy its value - Run:
python3 kindle.py --jp
- To download push files, run:
python3 kindle.py --jp --pdoc
- Cookie and CSRF token will expire; simply refresh the Amazon page.
- The program will automatically create a
DOWNLOADS
directory in the current working directory; downloaded books will be stored there. - Supports directly dedrm-ing mobi files with
--dedrm
; processed files are saved in theDEDRMS
folder. - If you use DeDRM_tools to decrypt, the key is stored in key.txt.
- Alternatively, you can simply drag the file into Calibre (please google it).
- If the process fails, you can use e.g.
--resume-from ${num}
- If a file name is too long, add
--cut-length 70
to truncate it. - Supports downloading push files with
--pdoc
. - If there are many duplicate pdoc or book names, you can use
--resolve_duplicate_names
to resolve conflicts. - Error logs are recorded in .error_books.log.
- Supports generating a README of recently finished books with
--readme
; the file is generated asmy_kindle_stats.md
. - Supports dedrm-ing mobi files directly using
--dedrm
; the output files are placed inDEDRMS
. - The script
dedrm.py
is used to decrypt downloaded e-book files independently, outputting both azw and epub formats by default.
# For the latter three parameters, only specify if necessary. Usage: python3 dedrm.py <source_directory> <target_directory> <key> <output_format>
# For example, to decrypt files in the "ebook" directory and generate dedrm files in epub format only:
$ python3 dedrm.py ebook DeDRMed "key_string_from_key.txt" epub
- The cookie and csrf token will expire; just refresh the Amazon page.
- The program automatically creates a
DOWNLOADS
directory in the working directory. Books are downloaded there. - If you use DeDRM_tools for decryption, the key is stored in key.txt.
- Alternatively, just drop the file into Calibre—please google it.
- If the process fails, you can use e.g.
--resume-from ${num}
- If file names are too long, add
--cut-length 70
to truncate them. - Supports downloading push files with
--pdoc
- Use
--resolve_duplicate_names
to resolve conflicts with duplicate names. - Error logs are saved in .error_books.log.
- Supports generating a README for recently finished books via
--readme
, which outputs tomy_kindle_stats.md
- Any issue or PR is welcome.
- Run
black kindle.py kindle_gui.py
- @Kindle
- @DeDRM_tools
- @frostming – GUI and many contributions
- @bladewang – PDOC download
- @athrowaway2021 – No need to have a real Kindle
Thank you is enough