Package: geektime-dl
:sparkles: 重要 :sparkles:查看使用文档获取最新使用信息。快手内推直达部门负责人！本 README.md 不再更新！:point_down:把极客时间装进 Kindle极客时间专栏文章的质量都是非常高的，比如耗子哥的《左耳听风》、朱赟的《朱赟的技术管理课》和王天一的《人工智能基础课》，都是我非常喜欢的专栏。这些专栏深入浅出，将知识和经验传授于读者，都是值得多次阅读的。然而，每当空闲时间时，都需要掏出手机才能阅读专栏文章，这在某种情况下是很不便的，尤其坐地铁且没有网络时。作为一个kindle党，最好的解决方案就是kindle电子书。于是有了这个项目把极客时间装进Kindle现在，这个项目除了将专栏制作成kindle电子书，还提供了下载专栏音频的附加功能，具体使用方法见下。一、项目结构项目主要包括下边这几个部分：kindle_maker: 一个 mobi 电子书制作工具。用户只需要提供制作电子书的 html 文件，和一个包含目录信息的 toc.md 文件，kindle_maker 即可制作出一本精美的 kindle 电子书。这部分已拎出来放在单独的项目里，具体使用方式见该项目文档kindle_makerutils: 提供了 mp3/mp4 下载、邮件发送、html 文件生成等功能gk_apis: 封装极客时间 apistore_client: 缓存极客时间专栏数据至本地 json 文件cli: 提供若干 cmd 命令，将上面这几个部分连接在一起，最后使用 kindle_maker 制作电子书，或者使用下载器下载相关音频二、主要依赖requests: 网络请求Jinja2: html模板引擎kindle_maker: 制作kindle电子书三、安装虚拟环境 virtualenvvirtualenv-ppython3~/venv3&&source~/venv3/bin/activate代码pipinstall-Ugeektime_dl# 或者安装最新代码pipinstall-Ugit+https://github.com/jachinlin/geektime_dl.git四、使用查看帮助信息1、查看 cli subcmdgeektime help2、查看具体 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下载mp3geektime 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 数学公式...七、其他注意版权，勿传播电子书及音视频pr or issue is welcome