12306 余票监控程序。
注意:本程序仅用来监控 12306 系统中的余票,并非用于抢票,也不会添加任何抢票相关的功能。程序作者不保证结果的准确性,不为任何使用本程序而产生的纠纷负责。
在 GitHub Release 页面下载本程序的二进制文件。
二进制文件使用 Deno 编译 打包。由于 Deno 限制,不再提供 Windows arm64 二进制文件。
将 配置 好的 config.jsonc 放置于可执行程序相同目录下后,直接运行即可。
或者,运行一次程序后,修改生成的 config.jsonc。
参照 Deno 官网的 安装 教程进行安装。
直接 下载 Zip 文件,或使用 Git:
$ git clone git@github.com:BobLiu0518/CRTicketMonitor.git $ cd CRTicketMonitor在 Linux 服务器使用时,安装 screen 后,运行 ./run.sh 即可启动。
如果使用其他系统,可以在命令行中输入 deno task start 运行。
若 config.jsonc 不存在,启动 CRTM 会自动生成 config.jsonc,可在其基础上进行更改。
建议使用 Visual Studio Code 或其他现代编辑器打开 config.jsonc,从而享受自动配置文件格式检查。
下面的模板是 config.jsonc 中全部可用的配置项及其说明。
在 config.jsonc 中,选择以下推送配置项中的一项或多项填写。
同一种类的配置项可以设置多个。
门槛最低的推送方式,只需保持浏览器后台运行即可。
无需额外配置,直接运行即可。如果运行时提示端口 Permission denied,需修改 config.jsonc 中的端口号后重试。端口号可以选择 1024~65535 之间的数。当然,你愿意的话 1~1023 也可以
运行后,用浏览器打开提示的网址,并允许浏览器进行系统通知即可。
安全起见,配置项中的监听地址 host 建议填写本机(即 127.0.0.1)。如果有其他设备需要连接,则需改为 0.0.0.0。
使用 Wecom 酱,可以直接将通知推送至个人微信。
配置方法详见 企业微信应用消息配置,将该文档中获取的 ①agentid、②secret、③企业ID三项内容分别填入 config.jsonc 即可。
可以搭配 OneBot、Sever 酱 Turbo、IFTTT 或其他任何可以使用 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(未知类型)
{ // 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 }