Skip to content

BobLiu0518/CRTicketMonitor

Repository files navigation

China Railway Ticket Monitor

12306 余票监控程序。

注意:本程序仅用来监控 12306 系统中的余票,并非用于抢票,也不会添加任何抢票相关的功能。程序作者不保证结果的准确性,不为任何使用本程序而产生的纠纷负责。

部署

使用可执行程序

1. 下载

GitHub Release 页面下载本程序的二进制文件。

二进制文件使用 Deno 编译 打包。由于 Deno 限制,不再提供 Windows arm64 二进制文件。

2. 运行

配置 好的 config.jsonc 放置于可执行程序相同目录下后,直接运行即可。

或者,运行一次程序后,修改生成的 config.jsonc

手动部署

1. 安装 Deno

参照 Deno 官网的 安装 教程进行安装。

2. 下载代码

直接 下载 Zip 文件,或使用 Git:

$ git clone git@github.com:BobLiu0518/CRTicketMonitor.git $ cd CRTicketMonitor

3. 运行

在 Linux 服务器使用时,安装 screen 后,运行 ./run.sh 即可启动。

如果使用其他系统,可以在命令行中输入 deno task start 运行。

配置

config.jsonc 不存在,启动 CRTM 会自动生成 config.jsonc,可在其基础上进行更改。

建议使用 Visual Studio Code 或其他现代编辑器打开 config.jsonc,从而享受自动配置文件格式检查。

下面的模板是 config.jsonc 中全部可用的配置项及其说明。

{ // JSON Schema(用于校验配置文件合法性) "$schema": "https://crtm.bobliu.tech/config.schema.json", // 查询列表 "watch": [ // 可添加多个查询 { // 基础信息 "from": "上海", // 起点站(包含同城站) "to": "北京", // 终点站(包含同城站) "date": "20241001", // 日期(YYYYMMDD) // 车次列表(选填),不填时默认为全部车次 "trains": [ { "code": "G2", // 车次号 "from": "上海", // 指定起点站(选填) "to": "北京南", // 指定终点站(选填) "seatCategory": ["二等座"], // 限定席别(选填,详见下文) "checkRoundTrip": true // 查询全程车票情况(选填) } ] } ], // 推送配置(详见下文) "notifications": [ { // 浏览器推送 "type": "Browser", // 监听地址(选填) "host": "127.0.0.1", // 监听端口 "port": 12306 }, { // Wecom 酱推送 "type": "WecomChan", // 应用 ID "agentId": "", // 应用 Secret "secret": "", // 企业 ID "companyId": "", // 发送目标 Uid "toUid": "@all" }, { // HTTP 推送 "type": "HTTP", // 推送地址 "url": "" } ], // 刷新间隔(分钟,选填) "interval": 15, // 访问延迟(秒,选填) "delay": 5 }

推送配置

config.jsonc 中,选择以下推送配置项中的一项或多项填写。

同一种类的配置项可以设置多个。

浏览器推送

门槛最低的推送方式,只需保持浏览器后台运行即可。

无需额外配置,直接运行即可。如果运行时提示端口 Permission denied,需修改 config.jsonc 中的端口号后重试。端口号可以选择 1024~65535 之间的数。当然,你愿意的话 1~1023 也可以

运行后,用浏览器打开提示的网址,并允许浏览器进行系统通知即可。

安全起见,配置项中的监听地址 host 建议填写本机(即 127.0.0.1)。如果有其他设备需要连接,则需改为 0.0.0.0

Wecom 酱推送

使用 Wecom 酱,可以直接将通知推送至个人微信。

配置方法详见 企业微信应用消息配置,将该文档中获取的 ①agentid、②secret、③企业ID三项内容分别填入 config.jsonc 即可。

HTTP 推送

可以搭配 OneBotSever 酱 TurboIFTTT 或其他任何可以使用 HTTP API 进行推送的平台进行推送。

直接在 config.jsonc 中填写 URL 即可,消息的内容在经过 URL Encode 后会被拼接至 URL 末尾。

使用例(供参考):

OneBot:http://127.0.0.1:5700/send_private_msg?user_id=××××&message=

Server 酱 Turbo:https://sctapi.ftqq.com/××××.send?title=CRTicketMontor通知&desp=

其他

当然,你也可以自行选用其他的推送方式,在 notifications.ts 中进行编写即可。编写完成后,推荐修改 config.schema.json,以实现最好的配置文件检查效果。

欢迎自行编写的推送方式提交 Pull Request。

席别设置

可选的席别如下:

  • 卧铺:
    • 高级软卧
    • 软卧(含动卧一等卧)
    • 硬卧(含二等卧)
  • 坐票:
    • 商务座
    • 特等座
    • 优选一等座
    • 一等座
    • 二等座
    • 软座
    • 硬座
    • 无座
  • 其他:
    • 其他(含包厢硬卧等)
    • YB(未知类型)
    • SRRB(未知类型)

About

12306 余票监控

Resources

License

Stars

Watchers

Forks

Contributors