跳到主要内容

油价调价提醒

收藏0

国内成品油调价日提醒:只在调价窗口日检查发改委调价通知,一发布就把本省新价格、涨跌幅和下一次调价窗口日推送到 QQ。

让 AI 安装

Minsaroun最新版本 0.1.0更新于 2026-10-30下载 0 次

SKILL.md

油价调价提醒#

能做什么:盯住国内成品油调价窗口日(发改委每 10 个工作日调一次),只在调价日当天自动检查调价通知是否发布,一发布就推送新价格、涨跌幅度和下一次调价日期;日常不联网不运行,按调价日历动态调度 cron。

  • 带脚本:是(纯 Python 标准库,无第三方依赖)
  • 联不联网:联网(搜油价网 soyoujia.cn,免费)
  • 写不写文件:会读写同目录下的 oil_notify_config.json(推送参数)、oil_notify.log(运行日志)、crontab.bak(crontab 备份),并重写用户 crontab 里的油提醒调度行

用法#

python3 oil_notify.py             # 正常跑:在调价日检查通知并推送,然后重写下次 cron
python3 oil_notify.py --dry-run   # 只打印,不推送、不改 cron
python3 oil_notify.py --sim-date 2026-11-12   # 模拟指定日期测试各分支

第一次安装#

  1. 把本文件夹放到固定位置(例如 ~/oil-notify)。

  2. 复制配置模板并填好推送参数:

    cp oil_notify_config.json.example oil_notify_config.json
    # 编辑 oil_notify_config.json:qq_user_id / one_bot_url / one_bot_token
    

    也可以不建配置文件,改用环境变量 QQ_USER_ID、ONE_BOT_URL、ONE_BOT_TOKEN。

  3. 先手动跑一次,把 cron 装好(会算出下一次调价窗口日并写入 crontab):

    cd ~/oil-notify && python3 oil_notify.py
    
  4. 确认 crontab -l | grep oil_notify 里有一行 0 17 <日> <月> * cd ... && python3 oil_notify.py >> oil_notify.log 2>&1。

机制说明#

  • 数据源:搜油价网 https://www.soyoujia.cn/(首页有「距下次调整还有 N 天(M月D日)」倒计时,省份页有近 3 个月调价表)。
  • 调价规律:发改委调价日 17:00 左右发布调价通知(要调价时;搁浅时 15:00 左右),24 时生效。默认 17:00 查询。
  • 动态调度:脚本每次跑完把 crontab 里的调度行重写为下一次调价窗口日(只写一条,不克隆旧行,并有 crontab.bak 备份)。
  • 防漏:窗口日 17:00 若页面还没更新,自动改到次日 08:00 补查一次;非调价日误触发只校准日期、不推送。
  • 推送内容:新价格(89/92/95/98 汽油 + 0 号柴油)、较上次涨跌幅、下一次调价窗口日。

通知(可选)#

默认推送到 OneBot 兼容网关(如 NapCat / Lagrange 的 HTTP API)。在 oil_notify_config.json 填:

{
  "qq_user_id": "123456789",
  "one_bot_url": "http://127.0.0.1:3000/send_private_msg",
  "one_bot_token": "你的OneBot访问token"
}

不想要推送时把 qq_user_id 留空,脚本只写日志不发送。cron 行里不写任何密钥,token 只放在 oil_notify_config.json(该文件不要分享给任何人)。

用途与依赖

作者没写,这些是平台读文件后整理的,以文件为准。

使用示例

请求:帮我把这个油价提醒装到 ~/oil-notify,调价那天推到我的 QQ 上。

预期

把文件夹放到 ~/oil-notify,复制 oil_notify_config.json.example 为 oil_notify_config.json,填入 qq_user_id、one_bot_url、one_bot_token;先执行 python3 oil_notify.py 验证一次,脚本会抓取搜油价网首页算出生效日与窗口日,写入日志,并把 crontab 中 oil_notify 那一行设为下次窗口日 17:00。之后每到窗口日运行:若省份页最新调价行日期在当天前后 1 天内,就推送一条包含各油品新价格、涨跌幅和下次窗口日的 QQ 消息,并把 cron 改到下一个窗口日;若通知还没出,改到次日 08:00 补查,不推送。想先看效果可以用 --dry-run 或 --sim-date 2026-11-12。

适用场景
  • 想在每次油价调整通知发布后第一时间收到 QQ 提醒
  • 希望提醒任务只在调价窗口日运行、不常驻轮询
  • 需要把调价日调度自动滚动到下一次窗口日,不用手动改 cron
  • 想先手动跑一次或模拟指定日期,验证各分支是否正常
  • 想把推送目标从默认的本地 OneBot 网关改成自己的地址和 token
输入
  • 技能文件夹的部署位置(例如 ~/oil-notify)
  • 接收提醒的 QQ 号(qq_user_id 或环境变量 QQ_USER_ID)
  • OneBot 推送接口地址(one_bot_url,默认 http://127.0.0.1:3000/send_private_msg)
  • OneBot 访问 token(one_bot_token 或环境变量 ONE_BOT_TOKEN)
  • 是否启用推送(qq_user_id 留空则只写日志不发送)
  • 可选:用 --sim-date 指定的模拟日期用于测试
输出
  • 一条 QQ 私聊消息:各油品新价格、较上次涨跌幅、下一次调价窗口日(仅在通知已发布时发送)
  • oil_notify.log 运行日志(抓取结果、窗口日判断、cron 改写结果、推送响应)
  • 被重写后的用户 crontab,其中 oil_notify 调度行指向下一次窗口日 17:00 或次日 08:00
  • crontab.bak,改写前的 crontab 备份
运行环境
Python 3(仅用标准库),需系统提供 crontab 命令并由 cron 定时触发
依赖
  • 无需第三方 Python 包
  • 系统 cron / crontab 命令
  • OneBot 兼容网关(如 NapCat、Lagrange 的 HTTP API),仅推送时需要