English | 中文
IPTV-API是一个可高度自定义的IPTV接口更新项目📺,自定义频道菜单,自动获取直播源,测速验效后生成可用的结果,可实现『✨秒播级体验🚀』
以下一共4种安装运行方式,选择一种适合您的即可
使用Github工作流部署,自动更新接口
打开 https://github.com/Guovin/iptv-api 点击Star
收藏该项目(您的Star是我持续更新的动力)
- 个人仓库命名,可按您喜欢的名字随意命名(最终直播源结果链接取决于该名称),这里以默认
iptv-api
为例 - 确认信息无误后,点击确认创建
由于本项目将持续迭代优化,如果您想获取最新的更新内容,可进行如下操作
关注该项目,后续更新日志将以releases
发布,届时您将收到邮件通知
- 正常更新:
回到您 Fork 后的仓库首页,如果项目有更新内容,点击Sync fork
,Update branch
确认即可更新最新代码
- 没有
Update branch
按钮,更新冲突:
这是因为某些文件与主仓库的默认文件冲突了,点击Discard commits
即可更新最新代码
当您在步骤一中点击确认创建,成功后会自动跳转到您的个人仓库。这个时候您的个人仓库就创建完成了,可以定制个人的直播源频道菜单了!
您可以复制并参考默认模板的格式进行后续操作。
- 点击
config
目录 - 创建文件
- 模板文件命名为
user_demo.txt
- 模板文件需要按照(频道分类,#genre#),(频道名称,频道接口)进行编写,注意是英文逗号。如果需要将该接口设为白名单(不测速、保留在结果最前),可在地址后添加
$!
即可,例如http://xxx$!。后面也可以添加额外说明信息,如:http://xxx$!白名单 - 点击
Commit changes...
进行保存
跟编辑模板一样,修改运行配置
- 创建文件
- 配置文件命名为
user_config.ini
- 粘贴默认配置 (创建
user_config.ini
可以只输入想要修改的配置项即可,无需全部复制 config.ini,注意配置文件上方的[Settings]
必须保留,否则下方的自定义配置不生效) - 修改模板和结果文件配置:
- source_file = config/user_demo.txt
- final_file = output/user_result.txt
- 点击
Commit changes...
进行保存
按照您的需要适当调整配置,以下是默认配置说明: 配置参数
Note
- 对于开启显示接口信息,由于部分播放器(如
PotPlayer
)不支持解析接口补充信息,导致无法正常播放,可修改配置:open_url_info =False
(GUI:取消勾选显示接口信息)关闭该功能 - 如果你的网络确定支持IPv6,可修改配置:
ipv6_support =True
(GUI:勾选跳过IPv6检测)跳过支持性检查 - 开启关键字搜索(默认关闭)会大幅增加更新耗时,不推荐开启
-
订阅源(
config/subscribe.txt
) -
本地源(
config/local.txt
) -
黑名单(
config/blacklist.txt
) -
白名单(
config/whitelist.txt
)白名单内的接口或订阅源获取的接口将不会参与测速,优先排序至结果最前。填写频道名称会直接保留该记录至最终结果,如:CCTV-1,接口地址,只填写接口地址则对所有频道生效,多条记录换行输入。
-
组播数据(
config/rtp
)
如果您的模板和配置修改没有问题的话,这时就可以配置Actions
来实现自动更新
由于 Fork 的仓库 Actions 工作流是默认关闭的,需要您手动确认开启,点击红框中的按钮确认开启
开启成功后,可以看到目前是没有任何工作流在运行的,别急,下面开始运行您第一个更新工作流
- 点击
Workflows
分类下的update schedule
- 由于 Fork 的仓库工作流是默认关闭的,点击
Enable workflow
按钮确认开启
这个时候就可以运行更新工作流了
- 点击
Run workflow
- 这里可以切换您要运行的仓库分支,由于 Fork 默认拉取的是
master
分支,如果您修改的模板和配置也在该分支,这里选择master
就好了,点击Run workflow
确认运行
稍等片刻,就可以看到您的第一条更新工作流已经在运行了!
Note
由于运行时间取决于您的模板频道数量以及页数等配置,也很大程度取决于当前网络状况,请耐心等待,默认模板与配置一般需要15 分钟左右。
如果您觉得这次的更新不太合适,需要修改模板或配置再运行,可以点击Cancel run
取消本次运行
如果一切正常,稍等片刻后就可以看到该条工作流已经执行成功(绿色勾图标)
此时您可以访问文件链接,查看最新结果有没有同步即可: https://raw.githubusercontent.com/您的github用户名/仓库名称(对应上述Fork创建时的iptv-api)/master/output/user_result.txt
或者代理地址: https://cdn.jsdelivr.net/gh/您的github用户名/仓库名称(对应上述Fork创建时的TV)@master/output/user_result.txt
如果访问该链接能正常返回更新后的接口内容,说明您的直播源接口链接已经大功告成了!将该链接复制粘贴到TVBox
等播放器配置栏中即可使用~
Note
除了首次执行工作流需要您手动触发,后续执行(默认北京时间每日6:00与18:00
)将自动触发。如果您修改了模板或配置文件想立刻执行更新,可手动触发(2)中的
Run workflow
即可。
如果您想修改更新频率(默认北京时间每日6:00与18:00
),可修改on:schedule:- cron
字段:
如果您想 每 2 天执行更新可以这样修改:
- cron: '0 22 */2 * *'
- cron: '0 10 */2 * *'
Warning
- 强烈不建议修改更新频率过高,因为短时间内的接口内容并无差异,过高的更新频率与高耗时运行的工作流都有可能被判定为资源滥用,导致仓库与账户被封禁的风险。
- 请留意您的工作流运行时长,若发现执行时间过长,需要适当删减模板中频道数量、修改配置中的分页数量和接口数量,以达到合规的运行要求。
-
安装 Python 请至官方下载并安装 Python,安装时请选择将 Python 添加到系统环境变量 Path 中
-
运行更新 项目目录下打开终端 CMD 依次运行以下命令:
安装依赖:
pip install pipenv
pipenv install --dev
启动更新:
pipenv run dev
启动服务:
pipenv run service
-
下载IPTV-API 更新软件,打开软件,点击更新,即可完成更新
-
或者在项目目录下运行以下命令,即可打开 GUI 软件:
pipenv run ui
如果你看不懂软件的配置项,不要动,直接点启动即可
docker pull guovern/iptv-api:latest
🚀 代理加速(推荐国内用户使用):
docker pull docker.1ms.run/guovern/iptv-api:latest
docker run -d -p 8000:8000 guovern/iptv-api
实现宿主机文件与容器文件同步,修改模板、配置、获取更新结果文件可直接在宿主机文件夹下操作
以宿主机路径/etc/docker 为例:
-v /etc/docker/config:/iptv-api/config
-v /etc/docker/output:/iptv-api/output
Warning
如果重新拉取镜像进行更新版本后,涉及到配置文件变更或增加新配置时,务必覆盖主机的旧配置文件(config目录),因为主机的配置文件是无法自动更新的,否则容器还是以旧配置运行。
变量 | 描述 | 默认值 |
---|---|---|
APP_HOST | 服务host地址 | "http://localhost" |
APP_PORT | 服务端口 | 8000 |
UPDATE_CRON | 定时任务执行时间 | "0 22,10 * * *" |
接口 | 描述 |
---|---|
/ | 默认接口 |
/m3u | m3u 格式接口 |
/txt | txt 格式接口 |
/ipv4 | ipv4 默认接口 |
/ipv6 | ipv6 默认接口 |
/ipv4/txt | ipv4 txt接口 |
/ipv6/txt | ipv6 txt接口 |
/ipv4/m3u | ipv4 m3u接口 |
/ipv6/m3u | ipv6 m3u接口 |
/content | 接口文本内容 |
/log | 测速日志 |
- RTMP 推流:
Note
- 如果需要对本地视频源进行推流,可在
config
目录下新建live
或hls
(推荐)文件夹 - live文件夹用于推流live接口,hls文件夹用于推流hls接口
- 将以
频道名称命名
的视频文件放入其中,程序会自动推流到对应的频道中 - 可访问 http://localhost:8080/stat 查看实时推流状态统计数据
推流接口 | 描述 |
---|---|
/live | 推流live接口 |
/hls | 推流hls接口 |
/live/txt | 推流live txt接口 |
/hls/txt | 推流hls txt接口 |
/live/m3u | 推流live m3u接口 |
/hls/m3u | 推流hls m3u接口 |
/live/ipv4/txt | 推流live ipv4 txt接口 |
/hls/ipv4/txt | 推流hls ipv4 txt接口 |
/live/ipv4/m3u | 推流live ipv4 m3u接口 |
/hls/ipv4/m3u | 推流hls ipv4 m3u接口 |
/live/ipv6/txt | 推流live ipv6 txt接口 |
/hls/ipv6/txt | 推流hls ipv6 txt接口 |
/live/ipv6/m3u | 推流live ipv6 m3u接口 |
/hls/ipv6/m3u | 推流hls ipv6 m3u接口 |