/geektime_dl

把极客时间装进 Kindle,内含快手内推等福利

Primary LanguagePython

✨ 重要 ✨

  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

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

七、其他

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