• Stars
    star
    2,612
  • Rank 17,531 (Top 0.4 %)
  • Language
    Python
  • License
    GNU General Publi...
  • Created over 2 years ago
  • Updated 6 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Download all your kindle books script.

Kindle_download_helper

Download all your kindle books script.

image

安装 Kindle_download_helper

GUI 程序下载

Release 页面查看最新版本,获取对应系统的二进制文件下载解压即可。

Help

  • 若打开二进制遇到问题,请参考 #25
  • kindle 无法下载问题,触发了亚马逊风控见 #69
  • Mac 新手指南 by @chongiscool,见 #76

Cli 安装使用

  1. python3
  2. requirements
python3 --version  # 查看 python 版本
pip3 install kindle_download  # 使用 pip 安装
git clone https://github.com/yihong0618/Kindle_download_helper.git && cd Kindle_download_helper
pip3 install -r requirements.txt
python kindle.py -h # 查看使用参数

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
                        dwonload output dir
  -od OUTDEDRMDIR, --outdedrmdir OUTDEDRMDIR
                        dwonload 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

下载 kindle 书籍

尝试自动获取 cookie、csrfToken 进行下载

python3 kindle.py  --dedrm --cn  ## --dedrm 移除 DRM

(推荐) 手动输入 cookie、csrfToken 进行下载

python3 kindle.py ${csrfToken} --cookie ${cookie} --dedrm --cn #下载国区 Kindle 书籍并移除 DRM
python3 kindle.py ${csrfToken} --cookie ${cookie} --dedrm #下载美区 Kindle 书籍

默认下载所有文件,可以输入如下命令行来手动选择需要下载的书籍

python3 kindle.py --mode sel # "python3 kindle.py --pdoc --mode sel" for personal document

等程序获取到书籍列表后,程序会要求输入要下载的书籍序号:

Input the index of books you want to download, split by space (q to quit, l to list books).

此时,在命令行中输入字母"q",然后回车则会退出下载;输入字母"l",再回车则会重新输出所有书籍列表。 如要下载书籍,查看该书籍对应的 Index,然后在命令行输入(假设想下载第7,10,20本书):

7 10 20

用空格隔开,最后回车即可。输入还支持range,比如输入

4 5 10:12 15

此时程序会下载第4,5,10,11,12,15本书籍。

获取 cookie

若默认情况下提示 cookie 无效,你也可以手动输入 cookie。 在上述 全部书籍 列表页面,按 F12 或右键点击——检查,进入网络面板 (Network),在 Name 栏找到任意一个 ajax 请求,右键复制 Request Headers 里的 Cookie 即可。同时也能在 Payload 里找到 csrfToken

然后,执行

python3 kindle.py --cn --cookie ${cookie}

你也可以把 cookie 保存为文本文件,执行 python3 kindle.py --cookie-file ${cookie_file} 下载书籍。

获取 CSRF Token

若执行过程中提示获取 CSRF token 失败,你可以手动输入 CSRF Token。

CSRF Token 可以在页面源码中找到。在 全部书籍 列表页面右键点击,选择查看网页源码,再利用文本匹配工具 (Ctrl + F) 查找 csrfToken,将等号右边引号中的值复制出来,加到命令行参数中。

# CSRF Token
python3 kindle.py --cn ${csrfToken}
# Both cookie and CSRF Token
python3 kindle.py --cn --cookie ${cookie} ${csrfToken}

自动获取 cookie

如果你的运行环境是本机,项目可以使用 browser-cookie3 库自动从浏览器中获取 cookie。

使用 amazon.cn

  1. 登陆 amazon.cn
  2. 访问 https://www.amazon.cn/hz/mycd/myx#/home/content/booksAll/dateDsc/
  3. 右键查看源码,搜索 csrfToken 复制后面的 value
  4. 执行 python3 kindle.py --cn
  5. 如果下载推送文件 python3 kindle.py --cn --pdoc
  6. 如果想直接 dedrm 解密 (不保证好用) python3 kindle.py --cn --pdoc --dedrm

how to amazon.com

  1. login amazon.com
  2. visit https://www.amazon.com/hz/mycd/myx#/home/content/booksAll/dateDsc/
  3. right click this page source then find csrfToken value copy
  4. run: python3 kindle.py
  5. if is doc file python3 kindle.py --pdoc

how to amazon.de

  1. login amazon.de
  2. visit https://www.amazon.de/hz/mycd/myx#/home/content/booksAll/dateDsc/
  3. right click this page source then find csrfToken value copy
  4. run: python3 kindle.py --de
  5. if is doc file python3 kindle.py --de --pdoc

how to amazon.co.uk

  1. login amazon.co.uk
  2. visit https://www.amazon.co.uk/hz/mycd/myx#/home/content/booksAll/dateDsc/
  3. right click this page source then find csrfToken value copy
  4. run: python3 kindle.py --uk
  5. if is doc file python3 kindle.py --uk --pdoc

amazon.jp を使用する

  1. amazon.co.jp にログインする。
  2. ホームページ https://www.amazon.co.jp/hz/mycd/myx#/home/content/booksAll/dateDsc/)にアクセスする。
  3. ソースコード上で右クリックし、csrfTokenを検索して、それ以降の値をコピーします。
  4. python3 kindle.py --jp を実行する。
  5. プッシュファイルをダウンロードする場合 python3 kindle.py --jp --pdoc

注意

  • cookie 和 csrf token 会过期,重新刷新下 amazon 的页面就行
  • 程序会自动在命令执行的目录下创建 DOWNLOADS 目录,书会下载在 DOWNLOADS
  • 支持 mobi 类型的文件直接 dedrm --dedrm 生成的文件在 DEDRMS
  • 如果你用 DeDRM_tools 解密 key 存在 key.txt 里
  • 或者直接拖进 Calibre 里 please google it.
  • 如果过程中失败了可以使用 e.g. --resume-from ${num}
  • 如果出现名字太长的报错可以增加:--cut-length 80 来截断文件名
  • 支持推送文件下载 --pdoc
  • 如果有很多同名 pdoc 或 book 可以使用 --resolve_duplicate_names 解决同名冲突
  • error log 记录在 .error_books.log 中
  • 支持生成最近读完书的 README --readme 生成的文件在 my_kindle_stats.md
  • 支持 mobi 类型的文件直接 dedrm --dedrm 生成的文件在 DEDRMS

Note

  • The cookie and csrf token will expire, just refresh the amazon page again.
  • The program will automatically create DOWNLOADS directory under the command execution directory, the book will be downloaded in DOWNLOADS directory.
  • If you use DeDRM_tools to decrypt the key, it will be stored in key.txt
  • or just drag it into Calibre. Please google it.
  • If the process fails you can use e.g. --resume-from ${num}
  • If the name is too long, you can add: -cut-length 80 to truncate the file name
  • Support push file download --pdoc
  • If there are many pdocs or books with the same name, you can use --resolve_duplicate_names to resolve conflicts with the same name.
  • error log is logged in .error_books.log
  • Support for generating READMEs of recently finished books --readme generated files are in my_kindle_stats.md

image

贡献

  1. Any issues PR welcome
  2. black kindle.py kindle_gui.py

感谢

赞赏

  • 谢谢就够了

Enjoy

More Repositories

1

bilingual_book_maker

Make bilingual epub books Using AI translate
Python
7,286
star
2

xiaogpt

Play ChatGPT and other LLM with Xiaomi AI Speaker
Python
6,039
star
3

running_page

Make your own running home page
Python
3,565
star
4

GitHubPoster

Make everything a GitHub svg poster and Skyline!
Python
1,774
star
5

gitblog

People Die, but Long Live GitHub
Python
1,386
star
6

tg_bot_collections

collections of yihong0618's telegram bot
Python
557
star
7

epubhv

Make your epub books vertical or horizontal.
Python
454
star
8

tg_bing_dalle

Telegram bing bot DALL-E 3
Python
418
star
9

blue

新的 PR(Issue) 来了来了来了!
Python
305
star
10

iBeats

Apple Watch 心率数据采集 - Your Soul, Your Beats!
Python
279
star
11

SunoSongsCreator

About High quality songs generation by https://www.suno.ai/. Reverse engineered API.
Python
276
star
12

2021

关于我的 2021 的一些记录。
Python
274
star
13

2022

2022 gogogo
Python
270
star
14

2023

Another year
Python
204
star
15

iWhat

What is it? Using AI Inspired by pyWhat
Python
190
star
16

shanbay_remember

扇贝自动发送今日新词到 telegram
JavaScript
189
star
17

duolingo_remember

Automatically send new words from duolingo to telegram
Python
166
star
18

2020

2020计划,喜欢的文章,博客,以及其它
C
137
star
19

github-readme-stats

generate my_github status using GitHub Actions
Go
134
star
20

vscode-gcores

VSCode 玩转机核
TypeScript
127
star
21

dalian-IT

『大连互联网』大连基本没啥互联网
114
star
22

gaycore

use command-line to listen gadio
Python
113
star
23

klingCreator

About High quality video and image generation by https://klingai.kuaishou.com and https://klingai.com/ Reverse engineered API.
Python
77
star
24

IdeoImageCreator

About High quality image generation by ideogram. Reverse engineered API.
Python
60
star
25

2024

Change
Python
42
star
26

yihong0618

41
star
27

kai_xin_ci_chang

开心词场帮助程序
Python
33
star
28

nbnhhsh-cli

「能不能好好说话?」 cli 版本
Python
31
star
29

gcores_calendar

gcores audios calendar
JavaScript
30
star
30

pengdu_helper

网易云歌词自动生成《捧读》用的 epub, 帮助学习。(GitHub Actions + shortcuts + telegram)
Go
29
star
31

my_kindle_stats

Show my read on kindle this year
Python
24
star
32

Runtastic

Download all your Runtastic (Adidas Running) activities save to gpx
Python
21
star
33

running_skyline

Generate a 3D Skyline in STL format from your running App
Python
20
star
34

blog

blog
JavaScript
14
star
35

github-readme-stats-server

Server for github-readme-stats
HTML
14
star
36

Python365

Python365天精进计划
Python
11
star
37

run

Python
10
star
38

resume

resume
HTML
4
star
39

remote_mp3_duration

Estimate the duration in seconds of the remote MP3 file without full download(python version)
Python
3
star
40

github_upstream_script

Using script to fetch upstream and sync
Python
2
star
41

500

learn 500 lines from 500lines-rewrite
1
star
42

edocteel001

100days leetcode
JavaScript
1
star