中文 | English
IPTV-API is a highly customizable IPTV interface update project 📺, allowing you to customize channel menus, automatically obtain live sources, and generate available results after speed testing and validation, achieving a 『✨ instant playback experience 🚀』.
There are four installation and operation methods in total, choose the one that suits you.
Use GitHub workflow deployment to automatically update the interface.
Open https://github.com/Guovin/iptv-api and click Star
to favorite this project (Your Star is my motivation for
continuous updates).
Copy the source code of this repository to your personal account repository.
iptv-api
as an example.Since this project will continue to iterate and optimize, if you want to get the latest updates, you can do the following:
Follow this project, and subsequent update logs will be released as releases
, and you will receive email
notifications.
Go back to the homepage of your forked repository, if there are updates, click Sync fork
, Update branch
to confirm
and update the latest code.
Update branch
button, update conflict:This is because some files conflict with the default files of the main repository, click Discard commits
to update the
latest code.
When you click to confirm creation in step one, you will automatically jump to your personal repository after success. At this time, your personal repository has been created, and you can customize your live source channel menu!
You can copy and refer to the format of the default template for subsequent operations.
config
directory.user_demo.txt
.$!
after the address, such as http://xxx$!. You can also add additional information, such as: http://xxx$!
whitelist.Commit changes...
to save.Like editing templates, modify the runtime configuration.
user_config.ini
.user_config.ini
, you can only enter the configuration items you want to modify, no need to copy the entire config.ini
. Note that the [Settings]
at the top of the configuration file must be retained, otherwise the custom configuration below will not take effect)Commit changes...
to save.Adjust the configuration as needed, here is the default configuration description: Configuration parameters
PotPlayer
) do not support parsing interface
supplementary information, causing playback failure, you can modify the configuration: open_url_info = False
(GUI:
uncheck display interface information) to disable this feature.ipv6_support = True
(GUI: check skip IPv6
detection) to skip the support check.user_
prefix).
config/subscribe.txt
)Supports txt and m3u addresses as subscriptions, the program will read the channel interface data in sequence.
config/local.txt
)The channel interface data comes from local files, and the program will read the channel interface data in sequence.
config/blacklist.txt
)Interfaces that match the blacklist keywords will be filtered and not collected, such as low-quality interfaces with
ads.
config/whitelist.txt
)Interfaces or subscription sources in the whitelist will not participate in speed testing and will be prioritized at
the top of the results. Fill in the channel name to directly retain the record in the final result, such as: CCTV-1,
interface address, only filling in the interface address will apply to all channels, multiple records are entered on
separate lines.
config/rtp
)In addition, you can also maintain multicast source data yourself, the files are located in the config/rtp directory,
and the file naming format is: region_operator.txt
.
If your template and configuration modifications are correct, you can configure Actions
to achieve automatic updates.
Since the Actions workflow of the forked repository is disabled by default, you need to manually confirm to enable it,
click the button in the red box to confirm enabling.
After enabling successfully, you can see that there are no workflows running currently, don't worry, let's start running
your first update workflow below.
update schedule
under the Workflows
category.Enable workflow
button to confirm the
activation.Now you can run the update workflow.
Run workflow
.master
branch, if the template
and configuration you modified are also in the master
branch, just choose master
here, and click Run workflow
to confirm the run.Wait a moment, and you will see that your first update workflow is running!
(Note: The running time depends on the number of channels and pages in your template and other configurations, and also
largely depends on the current network conditions. Please be patient. The default template and configuration usually
take about 15 minutes.)
If you feel that this update is not quite right and you need to modify the template or configuration before running
again, you can click Cancel run
to cancel this run.
If everything is normal, after a short wait, you will see that the workflow has been executed successfully (green check
mark).
At this point, you can visit the file link to see if the latest results have been synchronized: https://raw.githubusercontent.com/your_github_username/repository_name (corresponding to the TV created when forking) /master/output/user_result.txt
Or proxy address: https://cdn.jsdelivr.net/gh/your_github_username/repository_name (corresponding to the TV created when forking) @master/output/user_result.txt
If you can access this link and it returns the updated interface content, then your live source interface link has been
successfully created! Simply copy and paste this link into software like TVBox
in the configuration field to use~
Run workflow
.If you want to modify the update frequency (default: 6:00 AM and 18:00 PM Beijing time daily), you can modify the
on: schedule: - cron
field:
If you want to perform updates every 2 days, you can modify it like this:
- cron: '0 22 */2 * *'
- cron: '0 10 */2 * *'
```markdown
##### 1. It is strongly recommended not to set the update frequency too high, as there is no significant difference in interface content over a short period. High update frequency and long-running workflows may be considered resource abuse, leading to the risk of repository and account suspension.
##### 2. Please monitor the runtime of your workflows. If you find the execution time too long, reduce the number of channels in the template, adjust the pagination and interface count in the configuration to comply with runtime requirements.
## Command Line
1. Install Python
Please download and install Python from the official website, and select the option to add Python to the system environment variable Path during installation.
2. Run the update
Open the terminal CMD in the project directory and run the following commands in sequence:
Install dependencies:
```shell
pip install pipenv
pipenv install --dev
Start the update:
pipenv run dev
Start the service:
pipenv run service
Download the IPTV-API update software, open the software, and click update to complete the update.
Or run the following command in the project directory to open the GUI software:
pipenv run ui
If you do not understand the software configuration options, do not change anything, just click start update.
iptv-api
(full version): High performance requirements, slower update speed, high stability, and success rate;
modify the configuration open_driver = False
to switch to the Lite
version mode (recommended for hotel sources,
multicast sources, and keyword search).iptv-api:lite
(lite version): Lightweight, low performance requirements, fast update speed, uncertain stability (
recommended for subscription sources).docker pull guovern/iptv-api:latest
🚀 Proxy acceleration (recommended for users in China):
docker pull docker.1ms.run/guovern/iptv-api:latest
docker pull guovern/iptv-api:lite
🚀 Proxy acceleration (recommended for users in China):
docker pull docker.1ms.run/guovern/iptv-api:lite
docker run -d -p 8000:8000 guovern/iptv-api
docker run -d -p 8000:8000 guovern/iptv-api:lite
To synchronize files between the host and the container, modify templates, configurations, and obtain update result files directly in the host folder.
Using the host path /etc/docker
as an example:
-v /etc/docker/config:/iptv-api/config
-v /etc/docker/output:/iptv-api/output
-v /etc/docker/config:/iptv-api-lite/config
-v /etc/docker/output:/iptv-api-lite/output
-e APP_PORT=8000
-e UPDATE_CRON="0 22,10 * * *"
- API address: `ip:8000`
- m3u api: `ip:8000/m3u`
- txt api: `ip:8000/txt`
- API content: `ip:8000/content`
- Speed test log: `ip:8000/log`