/ChinaTelecomMonitor

**电信 话费、通话、流量 套餐用量监控,支持青龙,支持部署成 API 服务。

Primary LanguagePythonGNU Affero General Public License v3.0AGPL-3.0

ChinaTelecomMonitor

**电信 话费、通话、流量 套餐用量监控。

本项目是部署在服务器(或x86软路由等设备)使用接口模拟登录,定时获取电信手机话费、通话、流量使用情况,推送到各种通知渠道提醒。

特性

  • 支持青龙
  • 支持通过 json push_config 字段独立配置通知渠道
  • 本地保存登录 token ,有效期内不重复登录
  • Docker 独立部署 API 查询服务

部署

青龙监控

拉库命令:

ql repo https://github.com/Cp0204/ChinaTelecomMonitor.git "telecom_monitor" "" "telecom_class"
环境变量 示例 备注
TELECOM_USER 18912345678password 手机号密码直接拼接,会自动截取

Docker API 服务

注意:Docker 部署的是 API 服务,没有监控提醒功能,主要是用于第三方(如 HomeAssistant 等)获取信息,数据原样返回。

docker run -d \
  --name china-telecom-monitor \
  -p 10000:10000 \
  -v ./china-telecom-monitor/config:/app/config \
  -v /etc/localtime:/etc/localtime \
  -e WHITELIST_NUM= \
  --network bridge \
  --restart unless-stopped \
  cp0204/chinatelecommonitor:main
环境变量 示例 备注
WHITELIST_NUM 18912345678,13312345678 手机号白名单

接口URL

  • http://127.0.0.1:10000/login

    登录,返回用户信息,token长期有效,用以下次请求数据

  • http://127.0.0.1:10000/qryImportantData

    返回主要信息,总用量 话费、通话、流量 等

  • http://127.0.0.1:10000/userFluxPackage

    返回流量包明细

  • http://127.0.0.1:10000/qryShareUsage

    返回共享套餐各号码用量

  • http://127.0.0.1:10000/summary

    /qryImportantData 的数据简化接口,非原样返回,简化后返回格式:

{
  "phonenum": "18912345678", // 手机号码
  "balance": 0,              // 账户余额(分)
  "voiceUsage": 39,          // 语音通话已使用时长(分钟)
  "voiceTotal": 2250,        // 语音通话总时长(分钟)
  "flowUse": 7366923,        // 总流量已使用量(KB)
  "flowTotal": 7366923,      // 总流量总量(KB)
  "flowOver": 222222,        // 总流量超量(KB)
  "commonUse": 7273962,      // 通用流量已使用量(KB)
  "commonTotal": 25550446,   // 通用流量总量(KB)
  "commonOver": 222222,      // 通用流量超量(KB)
  "specialUse": 92961,       // 专用流量已使用量(KB)
  "specialTotal": 215265280, // 专用流量总量(KB)
  "createTime": "2024-05-12 14:13:28", // 数据创建时间
  "flowItems": [             // 流量类型列表
    {
      "name": "国内通用流量(达量降速)", // 流量类型名称
      "use": 10241024,           // 流量包已使用量(KB)
      "balance": 0,              // 流量包剩余量(KB),当为负值时则是超流量
      "total": 10241024          // 流量包总量(KB)
    },
    {
      "name": "国内通用流量(非畅享)",
      "use": 1,
      "balance": 10241023,
      "total": 10241024
    },
    {
      "name": "专用流量",
      "use": 1,
      "balance": 10241023,
      "total": 10241024
    }
  ]
}

接口均支持 POST 和 GET 方法,POST 时 Body 须为 json 数据,请求参数:

{
  "phonenum": "18912345678",
  "password": "123456"
}

Note

登录成功后,会在 config/login_info.json 文件记录账号敏感信息。程序请求数据将先尝试用记录的 token 获取,避免重复登录。

感谢

本项目大量参考其他项目的代码,在此表示感谢!