V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
ruter8
V2EX  ›  分享创造

自动每日领取 PACKT 的限免技术书籍的小工具

  •  
  •   ruter8 ·
    ruter · 2017-05-12 21:14:52 +08:00 · 2826 次点击
    这是一个创建于 2754 天前的主题,其中的信息可能已经有所发展或是发生改变。

    之前我也发过两次 PACKT 的免费领取限免技术书籍的帖子,有时候有需要的书却因为一些事情忘记去领取而错过,所以就有了这个小工具,现在挂在服务器上自动领取,不需要理会了。

    用了 RequestsPyQuery 这两个库

    个人需求的产物,写得比较随意,需要的自取~

    使用说明

    安装依赖

    sudo pip install -r requirements.txt
    

    config.py 中设置你的PACKT 账户

    最后运行

    python main.py
    

    运行选项

    free-PACKT-eBooks-Crawler

    选项说明

    1. 获取今日限免的书籍
    2. 下载账户里的所有电子书到本地,存放在运行目录下的 eBooks 文件夹中
    3. 自动获取限免书籍,默认每 8 小时获取一次,可以在 config.py 中修改 frequency 的值

    只支持 Python3.

    传送门

    free-PACKT-eBooks-Crawler

    第 1 条附言  ·  2017-05-14 16:13:58 +08:00
    @davidyin 提出的错误问题,已经修复了。

    原本我之前自己测试也有这个问题并且在[commit 9deac885]( https://github.com/ruter/free-PACKT-eBooks-Crawler/commit/9deac885f2d36819120f7959cc3a0dda8ec373fc)里是修复了的。

    后面因为换到另一部电脑上修改其他部分的时候给搞掉了。

    感谢 @davidyin 提出来~
    8 条回复    2017-05-14 15:56:53 +08:00
    xiaozizayang
        1
    xiaozizayang  
       2017-05-12 21:22:15 +08:00
    老哥稳
    ruter8
        2
    ruter8  
    OP
       2017-05-12 21:27:50 +08:00
    @xiaozizayang 别,你写的都是好东西,我这个无关痛痒的
    xiaozizayang
        3
    xiaozizayang  
       2017-05-12 21:43:10 +08:00
    @ruter8 来合作搞个电子书的
    davidyin
        4
    davidyin  
       2017-05-13 01:48:19 +08:00
    我刚才试用了一下,出现下面的提示信息,对 python 不懂。
    Practical Linux Security Cookb has been saved!
    Trying next...
    Traceback (most recent call last):
    File "main.py", line 165, in <module>
    options[step]()
    File "main.py", line 120, in save_ebooks
    save_dir = get_save_path(name)
    File "main.py", line 34, in get_save_path
    save_path = os.path.join(SAVE_DIR, name)
    File "/usr/lib/python3.5/posixpath.py", line 89, in join
    genericpath._check_arg_types('join', a, *p)
    File "/usr/lib/python3.5/genericpath.py", line 143, in _check_arg_types
    (funcname, s.__class__.__name__)) from None
    ruter8
        5
    ruter8  
    OP
       2017-05-13 08:41:45 +08:00 via iPhone
    @davidyin 这个可能是程序没有处理好异常情况,请问你的电子书里是不是只有一本书?
    davidyin
        6
    davidyin  
       2017-05-14 13:55:00 +08:00
    昨天只有一本的是这样的,刚刚重新试了一下,多了两本,再次下载还是有错误信息。
    yin@instance-2:~/free-PACKT-eBooks-Crawler$ python3 main.py
    Trying to load cookies...
    Choose an option:

    1. Claim today's free ebook

    2. Download all your ebooks

    3. Auto claim free ebooks

    0. Quit

    Your choice: 2
    Start download your eBooks...
    Unity 5.x Shaders and Effects Cookb has been saved!
    Trying next...
    Learning AWS has been saved!
    Trying next...
    Practical Linux Security Cookb already existed!
    Traceback (most recent call last):
    File "main.py", line 165, in <module>
    options[step]()
    File "main.py", line 120, in save_ebooks
    save_dir = get_save_path(name)
    File "main.py", line 34, in get_save_path
    save_path = os.path.join(SAVE_DIR, name)
    File "/usr/lib/python3.5/posixpath.py", line 89, in join
    genericpath._check_arg_types('join', a, *p)
    File "/usr/lib/python3.5/genericpath.py", line 143, in _check_arg_types
    (funcname, s.__class__.__name__)) from None
    TypeError: join() argument must be str or bytes, not 'NoneType'
    davidyin
        7
    davidyin  
       2017-05-14 13:55:30 +08:00
    当然图书下载下来还是正常的。
    ruter8
        8
    ruter8  
    OP
       2017-05-14 15:56:53 +08:00 via iPhone
    @davidyin 好的,我查一下~谢谢你的反馈!
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1051 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 20:32 · PVG 04:32 · LAX 12:32 · JFK 15:32
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.