Back to Iptv Api

Configuration

docs/config_en.md

3.0.029.8 KB
Original Source

Configuration

<p align="center"> <a href="../README_en.md">Project home</a> · <a href="./README.md">Documentation</a> · <a href="./tutorial_en.md">Tutorial</a> · <a href="./config.md">中文</a> | English </p>

[!NOTE] Configuration defaults live in config/config.ini. Keep only your overrides in config/user_config.ini and retain the [Settings] section header. Matching environment variables can also override these values. An unset or empty PUBLIC_URL does not override public_url in the configuration file.

Configuration ItemDescriptionDefault Value
open_updateEnable updates, used to control whether to update interfaces. If disabled, all working modes (getting interfaces and speed tests) stop.True
open_unmatch_categoryEnable unmatched channel category. Channels not matched by source_file will be written directly into this category and will not participate in speed testing.False
open_empty_categoryEnable empty category, channels without results will automatically be classified to the bottom.False
open_update_timeEnable display of update time.True
open_url_infoEnable to display interface description information, used to control whether to display interface source, resolution, protocol type and other information (content after $). The player uses this information to describe the interface. If some players (such as PotPlayer) do not support parsing and cannot play, you can turn it off.False
open_epgEnable EPG function, support channel display preview content.True
open_subscribe_epgEnable automatically extracting EPG addresses from the url-tvg/x-tvg-url of subscription m3u headers and merging them into the EPG sources, no need to manually maintain config/epg.txt. Configured epg.txt sources take priority, subscription sources only fill channels they do not cover. Requires open_epg = True.True
open_m3u_resultEnable converting and generating m3u file type result links, supporting the display of channel icons.True
output_urls_limitMaximum interfaces exported per channel; legacy urls_limit remains supported.5
speed_test_targetValid-result target per channel in quick speed-test mode; 0 follows output_urls_limit.0
quick_test_targetReadable alias for speed_test_target; a non-zero value takes precedence.0
update_time_positionUpdate time display position, takes effect only when open_update_time is enabled. Optional values: top, bottom. top: display at the top of the result, bottom: display at the bottom.top
languageApplication language setting; Optional values: zh_CN, enzh_CN
update_modeScheduled execution update mode, does not apply to workflow; Optional values: interval, time; interval: execute by interval time, time: execute at specified time pointinterval
update_intervalScheduled execution update interval, only takes effect when update_mode = interval, unit hours, set to 0 or empty to run only once12
update_timesScheduled execution update time point, only takes effect when update_mode = time, format HH:MM, supports multiple time points separated by commas
update_startupExecute update at startup, used to control whether to execute an update immediately after the program startsTrue
time_zoneTime zone, can be used to control the time zone for scheduled execution or display update time; Optional values: Asia/Shanghai or other time zone codesAsia/Shanghai
source_fileTemplate file path.config/demo.txt
final_fileGenerated result file path.output/result.txt
open_realtime_writeEnable real-time writing of result files, you can access and use the updated results during the speed measurement processTrue
open_serviceEnable page service, used to control whether to start the result page service. If using platforms such as Qinglong with scheduled tasks, and you need the program to exit after update is finished, you can disable this.True
service_portHTTP service access port. Nginx listens here when desktop streaming is enabled; new configurations normally change only this port.8080
public_urlRecommended complete public URL, such as https://iptv.example.com or http://host:8088, used for playlist, EPG, logo, and service links.
app_portAdvanced compatibility setting: internal Flask API port. Normally do not change or use it as the user-facing port.5180
public_schemeAdvanced compatibility setting: legacy public scheme, used only when public_url is empty.http
public_domainAdvanced compatibility setting: legacy public host, used only when public_url is empty; defaults to the local IP.127.0.0.1
cdn_urlCDN proxy acceleration address(es) for subscription sources, channel logos and other resources. Multiple are supported (comma-separated): subscription and EPG sources fall back through them in order until one succeeds; channel logos use the first address.
http_proxyHTTP proxy address, used for network requests such as obtaining subscription sources
open_localEnable local source function, will use the data in the template file and the local source file (local.txt).True
open_subscribeEnable subscription source function.True
open_auto_disable_sourceEnable automatic disabling of invalid sources. When the request fails after retries, the content is empty, or no matching value is found, the corresponding address in config/subscribe.txt and config/epg.txt will be prefixed with # to disable it.False
open_historyEnable using historical update results (including interfaces from template and result files), merged into this update.True
open_headersEnable to use the request header verification information contained in M3U, used for speed measurement and other operations, some players may not support playing this type of interface with verification informationTrue
user_agentGlobal request User-Agent, used for fetching subscription sources, speed testing, and writing into the m3u result (no need to enable open_headers). Leave empty to use the built-in default UA. Priority: interface's own UA > subscription URL UA > global UA > built-in default UA.
open_speed_testEnable speed test functionality to obtain response time, rate, and resolution.True
speed_test_modeSpeed-test workflow: quick stops after the target, full tests all candidates, and manual only collects for GUI-driven testing; legacy open_speed_test remains supported.quick
open_stream_screenshotAutomatically capture a playback screenshot for playable candidates. This adds FFmpeg decoding load and update time; manual GUI capture remains available when disabled.False
stream_screenshot_timeoutScreenshot timeout for a single interface, in seconds.5
stream_screenshot_widthMaximum playback screenshot width, preserving the original aspect ratio.640
open_filter_resolutionEnable resolution filtering. Interfaces below the minimum resolution (min_resolution) will be filtered. GUI users need to manually install FFmpeg; the program will call FFmpeg to obtain interface resolution. Recommended to enable: although it increases speed test time, it more effectively distinguishes playable interfaces.True
open_filter_speedEnable speed filtering. Interfaces below the minimum speed (min_speed) will be filtered.True
open_filter_adEnable advertisement filtering. Automatically identify and filter no-signal / advertisement placeholder loop sources (short looping playlists containing #EXT-X-ENDLIST, or segment URLs containing ad keywords). The check reuses the playlist already fetched during the speed test stage, adding no extra requests or speed test time.True
open_full_speed_testEnable full speed test for all channel candidates (except whitelist entries); otherwise testing stops after speed_test_target valid results.False
open_supplyEnable compensation mechanism mode. When the number of channel interfaces is insufficient, interfaces that do not meet the conditions (such as lower than minimum speed) but may still be available will be added to the result to avoid empty results. Once enabled, interfaces that do not match the location/isp will no longer be dropped directly, but downranked to the end of the channel result as a supplement.False
sort_byResult sorting dimensions, control the sorting priority of interfaces within each channel, compared in order from front to back, comma-separated. Optional values: speed (higher first), delay (lower first), resolution (higher first), e.g.: resolution,speed.speed
min_resolutionMinimum interface resolution, takes effect only when open_filter_resolution is enabled.1280x720
max_resolutionMaximum interface resolution, takes effect only when open_filter_resolution is enabled.3840x2160
min_speedMinimum interface speed (unit: MiB/s), takes effect only when open_filter_speed is enabled.0.5
resolution_speed_mapResolution and rate mapping relationship, used to control the minimum rate requirements for interfaces of different resolutions, the format is resolution:speed, multiple mapping relationships are separated by commas1280x720:0.2,1920x1080:0.5,3840x2160:1.0
performance_modePerformance mode. auto selects settings from device or container CPU and memory, powersave minimizes resource usage, balance balances resources and speed, and fast utilizes high-performance devices.auto
speed_test_limitAdvanced network speed test concurrency override. 0 lets the performance mode decide automatically; a positive value overrides speed test concurrency without changing media probe or source fetch concurrency.0
speed_test_timeoutSingle interface speed test timeout duration in seconds. Larger values increase speed test time and number of interfaces obtained (but with lower average quality); smaller values reduce time and favor low-latency, higher-quality interfaces.10
speed_test_filter_hostUse Host address to de-duplicate speed tests. Channels with the same Host share speed test data. Enabling this can greatly reduce speed test time but may cause inaccurate results.False
request_timeoutQuery request timeout duration in seconds, used to control timeout and retry duration when querying interface text links. Adjusting this value can optimize update time.10
ipv6_supportForce treating the current network as IPv6-supported and skip detection.False
ipv_typeProtocol type of interfaces in the generated result. Optional values: ipv4, ipv6, all.all
ipv_type_preferInterface protocol type preference. Preferred type will be ordered earlier in the result. Optional values: ipv4, ipv6, auto.auto
locationInterface location filter. Result will only contain interfaces whose location matches the given keywords (comma-separated). Leave empty to not restrict by location. Recommended to set near the end user to improve playback experience.
ispInterface operator filter. Result will only contain interfaces whose operator matches the given keywords (comma-separated). Leave empty to not restrict by operator.
origin_type_preferPreferred interface source ordering. The result is sorted in this order (comma-separated). Example: local,subscribe. Leave empty to not specify and sort by interface speed instead.
local_numPreferred number of local source interfaces in the result.10
subscribe_numPreferred number of subscription source interfaces in the result.10
logo_urlChannel logo library URL.
logo_typeChannel logo file type.png
open_subscribe_logoEnable to prioritize the tvg-logo address provided in the subscription m3u, only fall back to the logo library when the subscription source does not provide one.True
open_rtmpEnable RTMP push function. Recommended only for owned or authorized content. Requires FFmpeg installed and uses local bandwidth to improve playback experience.True
nginx_http_portAdvanced compatibility setting: legacy HTTP port name; use service_port for new configurations.8080
nginx_rtmp_portAdvanced setting: Nginx RTMP protocol port, needed only by streaming clients.1935
rtmp_idle_timeoutRTMP channel idle stop-streaming timeout in seconds. When no one watches for longer than this duration, streaming is stopped, helping reduce server resource usage.300
rtmp_max_streamsMaximum number of concurrent RTMP push streams. Controls how many channels can be pushed at the same time. Larger values increase server load; tune to optimize resource usage.10
rtmp_transcode_modePush streaming transcoding mode. copy means no transcoding — output is copied to save CPU consumption as much as possible. auto means adaptive transcoding to match players; this increases CPU usage but can improve compatibility.copy