V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
爱意满满的作品展示区。
versionzhang

分享用 Python 刚造的抢火车票的轮子

  •  
  •   versionzhang · Jan 10, 2019 via Android · 3684 views
    This topic created in 2674 days ago, the information mentioned may be changed or developed.

    一直很好奇黑盒的抢票软件的怎么实现的,找到一些文章和分析,然后就动手造了一个轮子。

    参考了两个 repo 的源码,功能也暂时不是很多,只实现了自动登录,查票和抢票的逻辑。 相比另外两个仓库的话,我的代码层面的层次逻辑自我感觉要清晰一点(求大佬轻拍)..

    有兴趣的朋友可以看看,试用一下。

    写的很仓促,也就花了几天时间来搞,里面多多少少会有一些 bug,欢迎来提 bug, 建议,pr 等,feature 的话可能得看有没空闲时间,见谅啦

    github 的仓库地址: https://github.com/versionzhang/python_12306

    Supplement 1  ·  Jan 11, 2019
    今天更新了部分内容,需要注意的是运行文件名称更改了,先前的小伙伴留意下

    2019.1.11
    1. 更新查询到的数据按照余票信息排列
    2. 优化提示信息显示
    3. 配置项增加 query_left_ticket_time, 查询余票的时间间隔配置
    4. 修改运行文件名称为 mainloop.py,不再为 test.py 文件
    Supplement 2  ·  Jan 14, 2019
    这两天的更新日志,需要注意的是日期查询改为多日期,配置文件需要改为列表,增加了预售模式,需要添加相关的配置

    2019.1.13
    1. 添加预售模式, 具体配置可参考配置文件的内容进行操作
    2. 修改为多日期查询
    3. 添加详细订单信息打印
    2019.1.12
    1. 添加加入小黑屋逻辑
    2. 所有之前导出 pickle 文件的操作均在程序启动前检查并生成
    3. 添加 12306 维护时间检查
    4. 更改提交订单的判断逻辑
    Supplement 3  ·  Jan 14, 2019

    2019-01-14:

    添加打包生成命令功能,目前处在dev分支,我只简单测试了一下,等稳定之后合并到主分支。

    使用方式如下:

    1. 使用命令 pip install git+https://github.com/versionzhang/python_12306@dev 即可安装此项目,项目会生成py12306命令
    2. 在你需要运行的文件夹内创建config.yaml,编辑好配置文件即可使用 py12306 运行程序
    10 replies    2019-01-11 22:05:02 +08:00
    jmy
        1
    jmy  
       Jan 10, 2019
    刚开始跑通了,好奇这个轮子。

    关于产品方面:1 暂时不能做到有目标火车票之后自动下单吧?现在设置逻辑是邮件通知,再去下单,这个时间在平时还好,春运期间这点时间即使有余票也大概率被抢走了。

    关于代码方面:

    之前测试几次可能是真的没有票,后来不断的切换了日期,特意换到有票的日期,搜索出来仍然是没有票。

    然后再测试 出现了报错 部分代码是「 AttributeError: 'SeatMapping' object has no attribute 'stationTrainCode'」
    Fris
        2
    Fris  
       Jan 10, 2019 via iPhone
    citys =》 cities
    versionzhang
        3
    versionzhang  
    OP
       Jan 10, 2019 via Android
    目前是可以自动下单的。。可能里面还有若干 bug 没有排查到。可以在 repo 里面提 issue,log 目录下有 log,可以把出错的异常代码和出错的 log 放上去我去排查一下。。
    versionzhang
        4
    versionzhang  
    OP
       Jan 10, 2019 via Android
    @Fris 多谢更正。。。我待会改一下
    versionzhang
        5
    versionzhang  
    OP
       Jan 10, 2019 via Android
    @jmy 目前是可以自动下单的。。可能里面还有若干 bug 没有排查到。可以在 repo 里面提 issue,log 目录下有 log,可以把出错的异常代码和出错的 log 放上去我去排查一下。。
    versionzhang
        6
    versionzhang  
    OP
       Jan 10, 2019 via Android
    @jmy 或者直接在配置里把 debug 开了,会打印详细的 log 到终端,直接粘贴过来就好了
    jmy
        7
    jmy  
       Jan 10, 2019
    @versionzhang 好的 我再折腾折腾~
    versionzhang
        8
    versionzhang  
    OP
       Jan 10, 2019 via Android   ❤️ 1
    @jmy 刚改了你遇到的那个 bug,你可以更新一下代码,把生成的几个 pickle 文件删掉,我刚又跑了一下是可以自动下单的。。你再试试
    jmy
        9
    jmy  
       Jan 11, 2019
    @versionzhang 谢谢 我再试下~
    versionzhang
        10
    versionzhang  
    OP
       Jan 11, 2019 via Android
    有小伙伴试用过么,能否给点反馈意见,😁
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   5366 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 34ms · UTC 09:39 · PVG 17:39 · LAX 02:39 · JFK 05:39
    ♥ Do have faith in what you're doing.