Skip to main content

把极客时间装进 Kindle

Project description

:sparkles: 重要 :sparkles:

  1. 查看 使用文档 获取最新使用信息。
  2. 快手内推直达部门负责人!



本 README.md 不再更新!:point_down:

左耳听风

把极客时间装进 Kindle

travis codecov Python versions PyPI CI & CD

极客时间专栏文章的质量都是非常高的,比如耗子哥的《左耳听风》、朱赟的《朱赟的技术管理课》和王天一的《人工智能基础课》,都是我非常喜欢的专栏。这些专栏深入浅出,将知识和经验传授于读者,都是值得多次阅读的。

然而,每当空闲时间时,都需要掏出手机才能阅读专栏文章,这在某种情况下是很不便的,尤其坐地铁且没有网络时。作为一个kindle党,最好的解决方案就是kindle电子书。于是有了这个项目

把极客时间装进Kindle

现在,这个项目除了将专栏制作成 kindle 电子书,还提供了下载专栏音频的附加功能,具体使用方法见下。

一、项目结构

项目主要包括下边这几个部分:

  • kindle_maker: 一个 mobi 电子书制作工具。用户只需要提供制作电子书的 html 文件,和一个包含目录信息的 toc.md 文件,kindle_maker 即可制作出一本精美的 kindle 电子书。这部分已拎出来放在单独的项目里,具体使用方式见该项目文档 kindle_maker

  • utils: 提供了 mp3/mp4 下载、邮件发送、html 文件生成等功能

  • gk_apis: 封装极客时间 api

  • store_client: 缓存极客时间专栏数据至本地 json 文件

  • cli: 提供若干 cmd 命令,将上面这几个部分连接在一起,最后使用 kindle_maker 制作电子书,或者使用下载器下载相关音频

二、主要依赖

三、安装

虚拟环境 virtualenv

virtualenv -p python3 ~/venv3 && source ~/venv3/bin/activate

代码

pip install -U geektime_dl

# 或者安装最新代码
pip install -U git+https://github.com/jachinlin/geektime_dl.git

四、使用

查看帮助信息

1、查看 cli subcmd

geektime help

2、查看具体 cli subcmd 帮助信息

geektime <subcmd> --help

<subcmd> 为具体的子命令名,可以从 help 子命令查看。

登录

geektime login  [--account=<account>] [--password=<password>] [--area=<area>]

[]表示可选,<>表示相应变量值,下同

  • account: 手机账号,不提供可稍后手动输入
  • password: 账号密码,不提供可稍后手动输入
  • area: 注册手机号所属地区,默认86

查看课程列表

geektime query

执行该命令后,我们可以看到专栏、视频、微课等课程的课程标题、订阅情况、更新频率还有课程ID,这个课程ID很重要,咱们下边的操作就是基于这个ID进行的。

专栏
        课程ID        已订阅       课程标题             更新频率/课时·时长
        49             否         朱赟的技术管理课      (全集)
        48             是         左耳听风      (全集)
        ......
微课
        课程ID        已订阅       课程标题             更新频率/课时·时长
        75             是         深入浅出gRPC  (全集)
        73             否         Service Mesh实践指南  (全集)
        ......
视频
        课程ID        已订阅       课程标题             更新频率/课时·时长
        138            是         Nginx核心知识100讲    (100课时,约600分钟)
        130            否         算法面试通关40讲      (40课时·约500分钟)
        ......
其他
        课程ID        已订阅       课程标题             更新频率/课时·时长
        69             否         零基础入门 Python 机器学习    (None)
        70             否         零基础入门 TensorFlow (None)

制作电子书

geektime ebook <course_id> [--output-folder=<output_folder> [--comments-count=<comments_count>]
  • course_id: 课程ID,可以从 query subcmd 查看
  • output_folder: 电子书存放目录,默认./ebook/
  • comments_count: 在启动评论下载时,设置评论条数,默认0条

notice: 此 subcmd 需要先执行 login subcmd

下载mp3

geektime mp3 <course_id> [--url-only] [--output-folder=<output_folder>]
  • course_id: 课程ID,可以从 query subcmd 查看
  • --url-only: 只保存音频url,不下载音频
  • output_folder: 音频存放目录,默认./mp3/

notice: 此 subcmd 需要先执行 login subcmd

推送到kindle

如果你想把制作完成的电子书推送到kindle的话,需要提供以下 smtp 配置(以qq邮箱为例):

smtp_encryption = ssl
smtp_host = smtp.qq.com
smtp_password = psd
smtp_port = 465
smtp_user = 1234@qq.com
email_to = xxx@kindle.cn

然后在制作电子书 ebook subcmd后添加 --push 以及上面参数即可,例如,

geektime ebook -c 42 --push --smtp-host=smtp.qq.com --smtp-port=465 --smtp-encryption=ssl --smtp-user=1234@qq.com --smtp-user=psd --email-to=xxx@kindle.cn

至于邮箱smtp配置和kindle邮箱配置就自行google吧。

五、Docker

如果你对 Python 不是很了解,我们还提供了 docker 版本,只要安装好 docker ,依次复制下边指令并执行, 就能下载全部已购买专栏文章、mp3,如果专栏更新完毕的话,我们还会把该专栏做成 kindle 电子书。

# 构建
docker build https://github.com/jachinlin/geektime_dl.git -t geektime

# 登录
docker run -v `pwd`:/output -it --rm geektime login

# 下载
docker run -v `pwd`:/output -it --rm geektime ebook all
docker run -v `pwd`:/output --rm geektime mp3 all

六、Todo list

  • [X] 课程音频
  • [X] 评论
  • [X] 批量下载
  • [X] docker
  • [X] 推送到 Kindle
  • [ ] 支持 mathjax 数学公式
  • [ ] ...

七、其他

  1. 注意版权,勿传播电子书及音视频
  2. pr or issue is welcome

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Files for geektime-dl, version 1.1.2
Filename, size File type Python version Upload date Hashes
Filename, size geektime_dl-1.1.2-py3-none-any.whl (27.6 kB) File type Wheel Python version py3 Upload date Hashes View
Filename, size geektime_dl-1.1.2.tar.gz (23.6 kB) File type Source Python version None Upload date Hashes View

Supported by

Pingdom Pingdom Monitoring Google Google Object Storage and Download Analytics Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN DigiCert DigiCert EV certificate StatusPage StatusPage Status page