guovern/iptv-api

By guovern

Updated 5 days ago

⚡️ IPTV直播源自动更新工具:自动采集、校验、测速并生成可播放结果

Image
Networking
API management
Web servers
58

500K+

guovern/iptv-api repository overview

快速上手

配置与结果目录
iptv-api/                  # 项目根目录
├── config                 # 配置文件目录,包含配置文件、模板文件等
│   └── hls                # 本地HLS推流文件目录,存放频道命名的视频文件
│   └── local              # 本地源文件目录,存放本地源文件
│   └── config.ini         # 配置参数文件
│   └── demo.txt           # 频道模板
│   └── alias.txt          # 频道别名
│   └── blacklist.txt      # 接口黑名单
│   └── whitelist.txt      # 接口白名单
│   └── subscribe.txt      # 频道订阅源列表
│   └── local.txt          # 本地源文件
│   └── epg.txt            # EPG订阅源列表
└── output                 # 结果文件目录,包含生成的结果文件等
    └── data               # 结果数据缓存目录
    └── epg                # EPG结果目录
    └── ipv4               # IPv4结果目录
    └── ipv6               # IPv6结果目录
    └── result.m3u/txt     # m3u/txt结果
    └── hls.m3u/txt        # RTMP hls推流结果
    └── log                # 日志文件目录
        └── log.log        # 带时间、级别和运行 ID 的运行日志
        └── runtime.jsonl  # 结构化运行事件
        └── result.log     # 有效结果日志
        └── speed_test.log # 测速日志
        └── statistic.log  # 统计结果日志
        └── unmatch.log    # 未匹配频道记录
        └── *.jsonl        # 对应日志的结构化 JSON Lines 版本
Docker
1. Compose 部署(推荐)

下载docker-compose.yml或复制内容创建(内部参数可按需更改),在文件所在路径下运行以下命令即可部署:

docker compose up -d
2. 手动命令部署
(1)拉取镜像
docker pull guovern/iptv-api:latest

🚀 代理加速(若拉取失败可以使用该命令,但有可能拉取的是旧版本):

docker pull docker.1ms.run/guovern/iptv-api:latest
(2)运行容器
docker run -d -p 80:8080 guovern/iptv-api

环境变量:

变量描述默认值
PUBLIC_URL推荐:完整公网地址,例如 http://192.168.1.10https://iptv.example.com
PUBLIC_DOMAIN兼容配置:PUBLIC_URL 留空时使用的公网域名或 IP127.0.0.1
PUBLIC_PORT兼容配置:PUBLIC_URL 留空时使用的宿主机映射端口80
NGINX_HTTP_PORT高级兼容配置:容器内部 HTTP 端口,通常保持默认8080

当宿主机/Docker 已启用 IPv6 时,容器会自动同时监听 IPv6 地址,无需额外配置;纯 IPv4 或禁用 IPv6 的环境则自动跳过。

如果需要修改环境变量,在上述运行命令后添加以下参数:

# 推荐:直接设置完整公网地址
-e PUBLIC_URL=https://iptv.example.com

使用仓库中的 Compose 文件时,只需通过 PORT 修改宿主机端口,例如 PORT=8088 docker compose up -d;Compose 会同时更新端口映射和兼容的 PUBLIC_PORT。 未设置或留空的 PUBLIC_URL 不会覆盖挂载配置文件中的 public_url

除了以上环境变量,还支持通过环境变量覆盖配置文件中的配置项

挂载: 实现宿主机文件与容器文件同步,修改模板、配置、获取更新结果文件可直接在宿主机文件夹下操作,在上述运行命令后添加以下参数

# 挂载配置目录
-v /iptv-api/config:/iptv-api/config
# 挂载结果目录
-v /iptv-api/output:/iptv-api/output
3. 更新结果
接口描述
/默认接口
/m3um3u 格式接口
/txttxt 格式接口
/ipv4ipv4 默认接口
/ipv6ipv6 默认接口
/ipv4/txtipv4 txt接口
/ipv6/txtipv6 txt接口
/ipv4/m3uipv4 m3u接口
/ipv6/m3uipv6 m3u接口
/content接口文本内容
/log/result有效结果的日志
/log/speed-test所有参与测速接口的日志
/log/statistic统计结果的日志
/log/unmatch未匹配频道的日志

日志接口默认返回兼容的纯文本格式;添加 ?format=jsonl 可获取结构化 JSON Lines。CLI 在交互式终端使用动态多任务进度,Docker、CI、重定向输出或设置 IPTV_API_PLAIN_OUTPUT=1 时自动使用稳定的逐行输出。

RTMP 推流:

Note

1. 如果是服务器部署,建议通过 `PUBLIC_URL` 配置完整公网地址;旧版 `PUBLIC_DOMAIN` 与 `PUBLIC_PORT` 仍兼容 2. 开启推流后,默认会将获取到的接口(如订阅源)进行推流;请仅对你有明确授权、可合法分发或仅用于内部测试的内容启用该功能 3. 如果需要对本地视频源进行推流,可在`config`目录下新建`hls`文件夹,将以`频道名称命名`的视频文件放入其中,程序会自动推流到对应的频道中 4. 在中国大陆使用时,请特别确认内容授权、版权、网络视听与广播电视等相关合规要求;不要将本项目用于传播、转发或公开分发未经授权的直播源/节目源
推流接口描述
/hls推流接口
/hls/txt推流txt接口
/hls/m3u推流m3u接口
/hls/ipv4推流ipv4 默认接口
/hls/ipv6推流ipv6 默认接口
/hls/ipv4/txt推流ipv4 txt接口
/hls/ipv4/m3u推流ipv4 m3u接口
/hls/ipv6/txt推流ipv6 txt接口
/hls/ipv6/m3u推流ipv6 m3u接口
/stat推流状态统计接口

如何使用推流?

更新日志

更新日志

关注

GitHub

关注我的 GitHub 账号 Guovin,获取更多实用项目

微信公众号

微信公众号搜索 Govin,收更新推送、学习更多使用技巧

联系我

联系邮箱:[email protected]

Tag summary

Content type

Image

Digest

sha256:71bc7bfb4

Size

96.7 MB

Last updated

5 days ago

docker pull guovern/iptv-api