360 Secure SkillHub
360 安全技能中心

查询全国油价

一个 Python 命令行脚本,基于 apizero 免费油价 API,按省份全称或简称查询中国省级行政区实时油价,输出 92/95/98 号汽油、0/-10 号柴油价格以及更新日期、下次调整时间与涨跌趋势;不带参数时输出全国概览。仅支持省级数据,传入城市名时返回其所属省份结果。

tangjian18
tangjian18
热度 56.74
最近更新 2026-10-12 18:34:31
分类:生活依赖:代码执行 / 第三方 API / 读写文件应用场景:个人理财

安装技能

复制下面的话术发给你的 Agent,它会通过 secure-skills 检索并安装该技能。

执行命令安装此 skill: npx secure-skills-cli add oil-price-query
Metadata
name
oil-price-query
description
查询中国各省实时油价。基于 v1.apizero.cn 免费 API,仅支持省级查询。返回 92/95/98 号汽油及 0/-10 号柴油价格。

中国油价查询技能

基于 v1.apizero.cn 免费 API 的中国各省实时油价查询工具。

核心功能

  • ✅ 查询指定省份的实时油价数据
  • ✅ 显示油价更新日期和下次调整时间
  • ✅ 显示各油品类型及详细价格信息
  • ✅ 自动计算油价涨跌趋势和幅度
  • ✅ 美观的终端输出格式

重要提示:本工具使用 v1.apizero.cn API,该 API 仅提供省级汇总数据,不包含城市级别(如"南京")的油价信息。

核心限制

⚠️ 仅支持省级查询:本技能无法查询城市级油价(如"南京"、"北京"等城市代码),因为 API 返回的是省级汇总数据。

  • 传入"南京"或南京城市代码 320000 时,会返回江苏省的省级油价数据
  • API 返回结构中的 province 字段为省份简称(如"江苏")
  • prices 数组包含该省份所有城市的油价数据,但不提供城市代码对应的单独条目

使用方法

基本命令

cd ~/.openclaw/workspace/skills/oil-price-query

# 查询江苏省实时油价
python3 oil_price.py 江苏省

# 查询其他省份(支持简称)
python3 oil_price.py 江苏
python3 oil_price.py 京
python3 oil_price.py 北京市

# 查询全国油价概览
python3 oil_price.py

支持查询

查询类型 命令 说明
省级油价 python3 oil_price.py [省份] 查询指定省份当前油价
全国概览 python3 oil_price.py 查询全国 31 个省份油价

省份简称映射

全称 简称 全称 简称
北京 京 安徽 皖
天津 津 福建 闽
河北 冀 江西 赣
山西 晋 山东 鲁
内蒙古 内蒙古 河南 豫
辽宁 辽 湖北 鄂
吉林 吉 湖南 湘
黑龙江 黑 广东 粤
上海 沪 广西 桂
江苏 苏 海南 琼
浙江 浙 重庆 渝
四川 川 贵州 贵
云南 云 西藏 藏
陕西 陕 甘肃 甘
青海 青 宁夏 宁夏
新疆 新

油品类型说明

油品 说明
89 号汽油 主要用于部分出租车和老式车辆
92 号汽油 适用于大多数家用车
95 号汽油 适用于中高端车辆
98 号汽油 适用于高性能车辆
0 号柴油 普通柴油(适用于 -5℃以上环境)
-10 号柴油 适用于 -10℃以上环境(寒冷地区)

注:部分省份可能不提供某些油品类型。

示例

查询江苏省油价

$ python3 oil_price.py 江苏省

正在查询 江苏省 油价...

============================================================
  中国油价查询 - 江苏省
  更新日期:2026-10-12
  下次调整:下次油价 10 月 15 日 24 时调整
============================================================

## -10 号柴油
-10 号柴油:
  当前价格:8.75 元/升
  油品类型:diesel_10

## 0 号柴油
0 号柴油:
  当前价格:8.26 元/升
  油品类型:diesel_0

## 92 号汽油
92 号汽油:
  当前价格:8.58 元/升
  油品类型:gasoline_92

## 95 号汽油
95 号汽油:
  当前价格:9.12 元/升
  油品类型:gasoline_95

## 98 号汽油
98 号汽油:
  当前价格:11.19 元/升
  油品类型:gasoline_98

============================================================
  查询完成!
============================================================

查询全国油价概览

$ python3 oil_price.py

正在查询全国油价...

============================================================
  中国油价查询 - 全国油价概览
  更新日期:2026-10-12
============================================================

## 北京市
- 92 号汽油:8.72 元/升
- 95 号汽油:9.28 元/升
- 98 号汽油:10.78 元/升
- 0 号柴油:8.46 元/升
- -10 号柴油:8.95 元/升

## 上海市
- 92 号汽油:8.67 元/升
- ...

## 江苏省
- 92 号汽油:8.58 元/升
- ...

(省略其他省份...)

查询不支持的城市(如南京)

$ python3 oil_price.py 南京

正在查询 南京 油价...

============================================================
  中国油价查询 - 江苏省
  更新日期:2026-10-12
  下次调整:下次油价 10 月 15 日 24 时调整
============================================================

## -10 号柴油
-10 号柴油:
  当前价格:8.75 元/升
  ...

============================================================
  查询完成!
============================================================

注意:查询"南京"时返回的是江苏省的省级油价数据,因为 API 不提供城市级明细。

文件结构

oil-price-query/
├── oil_price.py      # 核心油价查询脚本(Python)
├── SKILL.md          # 技能说明文档
├── README.md         # 使用说明
├── _meta.json        # 元数据文件
└── data/
    └── provinces.json # 省份名称映射数据

脚本逻辑说明

1. API 请求

  • API 地址:https://v1.apizero.cn/api/oil-price?province={省份名称}
  • 参数:省份名称(支持全称或简称,自动 URL 编码)
  • 返回结构:
    {
      "code": 0,
      "data": {
        "province": "江苏",
        "prices": [
          {
            "name": "92 号汽油",
            "price": 8.58,
            "unit": "元/升"
          },
          {
            "name": "95 号汽油",
            "price": 9.12,
            "unit": "元/升"
          }
        ],
        "next_adjustment": "下次油价 10 月 15 日 24 时调整",
        "update_date": "2026-10-12"
      }
    }
    

2. 省份名称标准化

通过 data/provinces.json 文件,将用户输入的省份名称(全称或简称)映射为标准简称:

PROVINCE_MAP = {
    "北京": "京", "北京市": "京",
    "江苏省": "江苏", "江苏": "江苏",
    # ... 其他省份
}

3. 油品名称匹配

API 返回的油品名称无空格(如"92 号汽油"而非"92 号 汽油"),脚本通过 standardize_fuel_name() 函数处理:

def standardize_fuel_name(fuel_name: str) -> str:
    """标准化油品名称,移除多余空格"""
    fuel_name = fuel_name.strip()
    fuel_name = re.sub(r'\s+', '', fuel_name)
    return fuel_name

4. 输出格式化

使用 format_output() 函数动态从 oil_data.keys() 获取油品列表,确保显示名称正确且有序:

fuel_order = sorted(oil_data.keys(), key=lambda x: FUEL_MAP.get(x, x))

其中 FUEL_MAP 定义油品显示顺序:

FUEL_MAP = {
    "89 号汽油": "89 号汽油",
    "92 号汽油": "92 号汽油",
    "95 号汽油": "95 号汽油",
    "98 号汽油": "98 号汽油",
    "0 号柴油": "0 号柴油",
    "-10 号柴油": "-10 号柴油"
}

5. 涨跌趋势计算

根据 API 返回的 price_change 和 price_change_trend 字段,计算并显示油价涨跌趋势和幅度。

注意事项

  1. ⚠️ 仅支持省级查询:无法查询城市级油价(如"南京"、"北京"等)
  2. 支持省份全称和简称查询
  3. 部分省份可能不提供某些油品类型(如 89 号汽油、-10 号柴油)
  4. 油价数据来源于免费 API,可能延迟更新
  5. API 返回的涨跌趋势为预测值,以官方发布为准
  6. 建议使用省份简称查询(如"江苏"),但全称也可正常工作
  7. 查询不支持的城市(如"南京")时,会返回其所属省份的油价数据

数据来源

  • API 地址:https://v1.apizero.cn/api/oil-price
  • API 说明:免费开放的油价数据 API,提供全国省级油价信息
  • 访问方式:HTTP GET 请求,参数为省份名称的 URL 编码值
  • 省份映射数据:data/provinces.json

依赖

  • Python 3.x
  • requests 库
  • 标准库(json, re, datetime, argparse)

许可证

MIT License