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