YSP (Yet Another EPG Service) 是一个用于获取和缓存电视频道电子节目指南(EPG)数据的HTTP代理服务。
- 频道映射管理: 从远程API获取频道名称与数据链接的映射关系
- EPG数据获取: 获取电视节目的电子节目指南数据
- 智能缓存机制: 支持9天(216小时)的缓存,最多存储10000条缓存记录
- 别名映射: 支持频道名称的别名替换功能
- Go 1.16 或更高版本
- 广东联通网络以获取远程EPG数据
# 克隆项目
go mod download # 下载依赖go run ysp.go [options]程序支持以下命令行参数:
| 参数 | 默认值 | 描述 |
|---|---|---|
-url |
http://120.87.12.38:8083/epg/api/page/biz_59417088.json |
频道映射API的URL |
-epgurl |
https://0777.112114.xyz/ |
EPG数据API的URL |
-port |
8080 |
服务器监听端口 |
-alias |
alias.json |
别名映射文件路径 |
-config |
(无) | 配置文件路径 |
可以使用JSON格式的配置文件来设置参数:
{
"channel_map_url": "http://your-channel-map-api.com",
"epg_data_url": "http://your-epg-data-api.com",
"port": "8080",
"alias_file": "alias.json"
}别名映射文件是一个JSON文件,用于将频道名称映射到其他名称:
{
"CCTV1高清": "CCTV1",
"湖南卫视高清": "湖南卫视"
}GET /
参数:
ch(必需): 频道名称date(必需): 日期,格式为 YYYY-MM-DD
示例:
GET /?ch=CCTV1&date=2024-01-01
响应格式:
{
"date": "2024-01-01",
"channel_name": "CCTV1",
"url": "http://...",
"epg_data": [
{
"start": "08:00",
"desc": "",
"end": "09:00",
"title": "新闻联播"
}
]
}GET /health
返回服务的健康状态和基本统计信息。
GET /metrics
返回详细的服务指标信息,包括:
- 缓存条目数量
- 频道映射数量
- 别名映射数量
- 活跃锁数量
- 频道屏蔽数量
- HTTP客户端配置详情
- 缓存持续时间:9天(216小时)
- 最大缓存条目:10000
- 定期清理过期缓存(每小时执行)
- 每个频道有独立的读写锁,避免并发冲突
- 最大频道锁数量限制为100个
- 定期清理不用的锁
当某个频道的EPG数据API返回异常数据时,系统会临时屏蔽该频道的请求, 返回默认节目("精彩节目")直到次日。