gwapi/docs/tutorial.md

361 lines
13 KiB
Markdown
Raw Permalink Normal View History

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