HPLinkConverter

User manual

A user guide to the IPTV channel list and Enigma2 bouquet conversion and management tool.

HPL Converterdescribed release: v3.13
Release date05.07.2026
PlatformWindows 10 / 11 (desktop application)
Labelling rule: most buttons in the program carry a fixed number in parentheses, e.g. Load m3u (1). This manual refers to those numbers as (1), so a description always points to a specific interface element. The full 1-22 number table is in chapter 14.

Table of contents

1. About the program

HPL Converter v3.13 [05.07.2026] is a Windows tool that combines the most important TV channel list operations in a single window:

The interface is available in Polish and English (PL / EN switch in the top right corner) and uses a dark, futuristic "glass cockpit" theme with red tabs and neon cyan accents.

Requirements

2. Startup and access protection

First launch

  1. Run the program (the hpl_converter.pyw file or the delivered executable).
  2. The main window opens at 1280x880 (minimum 980x620) with the M3U / URL tab active.
  3. The program starts in Polish. The EN button in the top right corner instantly switches the whole interface to English (and back with PL).
Note: the program does not persist settings between sessions - after a restart the language, input fields and loaded list return to their defaults.

MAC / MachineGuid protection

The program can be bound to specific computers. Access is controlled by two lists configured in the program distribution (each with up to 5 entries):

List configurationStartup condition
Both lists emptyProtection disabled - the program starts on any computer.
MAC list onlyAt least one of the PC's MAC addresses must be on the list.
MachineGuid list onlyThe PC's MachineGuid must be on the list.
Both lists filledBoth components must match: MAC and MachineGuid.

If the computer is not authorised, an "Access denied" window appears instead of the program, listing the detected MAC addresses and the MachineGuid - send this data to the program vendor to have the computer added to the list.

Reading the MachineGuid: on the client PC run in the command prompt: reg query HKLM\SOFTWARE\Microsoft\Cryptography /v MachineGuid

3. Main window

The following drawing is a privacy-safe UI diagram. It contains no IP address, login or user-specific data.

≡ HPL Converter v3.13   |   Enigma2 receiver: [ IP address ]   |   [ PL | EN ]
M3U / URLXtream CodesM3U TV / ServerDownload .m3u
Load m3u (1)Save m3u (2)Convert -> Enigma2 (3)Save as... (4)Load from URL (5)⌕ Search channel...Clear (20)
Load Enigma2 (6)Save channel pattern (7)Load channel pattern (8)Sort m3u channels (9)Sort Jason (12)Save Jason (11)Load Jason (10)
Select all (13)Deselect all (14)Move up (15)Move down (16)Delete selected (17)Tools (18)Stream Tester (19)
CHANNEL LIST   |   NAME   URL   ✓
▸ Group / folder (channel count)
  • Channel 1    http://...    ✓
  • Channel 2    http://...
▸ Another group (channel count)
Ready   |   operation progress bar   |   channel / group counter

Permanent window elements

Channel tree

The list is presented as a tree: groups (folders) with a channel counter, and channels with the NAME, URL and check-mark ✓ columns. Groups are highlighted in colour and bold. Clicking the ✓ column or double-clicking an entry toggles its check mark; checking a group checks all of its channels.

4. Loading channel lists

Load m3u (1)

  1. Click Load m3u (1) and open a .m3u, .m3u8 or .txt file.
  2. The program reads #EXTINF entries (name from tvg-name or the title, group from group-title) and http/https/rtmp/rtsp URLs.
  3. Channels without a group are placed in the Ungrouped folder.

Load from URL (5)

  1. Click Load from URL (5). A window with a field for the m3u link opens.
  2. The address must start with http:// or https://.
  3. The User-Agent (optional) field is pre-filled with the identifier of a popular IPTV app - some providers require a specific User-Agent and return an empty response without it.
  4. Click Download. The download runs in the background (gzip/deflate compression is supported) and the list fills the tree when finished.

Load Enigma2 (6)

Load Enigma2 (6) opens an Enigma2 bouquet / list file (.tv, .radio, .txt, .epl, .lst). The program reads service names from the #SERVICE / #DESCRIPTION lines and places them in the Enigma2 folder (without URLs). A list loaded this way primarily serves as the source of a channel-order pattern - see chapter 6.

Tip: a bouquet file (e.g. userbouquet.xxx.tv) can be downloaded from the receiver via FTP from the /etc/enigma2 directory.

Other sources

A list can also be loaded via the Xtream Codes tab (chapter 11) or downloaded in full to a file on the Download .m3u tab (chapter 13) and then opened with button (1). Jason lists are described in chapter 7.

Important: loading a new list replaces the current tree content. Unsaved changes are lost.

5. Converting to the Enigma2 format

1. LoadLoad an M3U list with (1), (5) or from Xtream (21).
2. OrganiseOptionally sort and edit the list (chapters 6-9).
3. ConvertClick Convert -> Enigma2 (3). The progress bar shows the status.
4. SaveClick Save as... (4) and store the bouquet file.

The conversion builds an IPTV bouquet in the Enigma2 format in memory. Every channel becomes a type 4097 stream service:

#NAME IPTV
#SERVICE 4097:0:1:2:0:0:0:0:0:0:http%3a//stream/address:Channel name
#DESCRIPTION Channel name

Using it on the receiver: upload the saved file via FTP to /etc/enigma2 as e.g. userbouquet.iptv.tv, register it in bouquets.tv (or use a bouquet editor), then reload the receiver's channel list.

Saving the list as M3U (2)

Save m3u (2) stores the current tree content (after all edits) as a standard .m3u file with #EXTINF entries and group-title groups. This is the recommended way to preserve an organised list for other IPTV apps.

6. HPL channel pattern and sorting

A channel pattern is a stored order of channel names that the program can use to sort any other list - even when the names differ in details (HD/FHD/4K, "PL:" prefixes, diacritics and so on).

Creating a pattern

  1. Load the reference list with Load Enigma2 (6) - e.g. a bouquet with your favourite channel order from the receiver.
  2. Click Save channel pattern (7). The program stores the unique channel names in channel_template.hpl next to the program and reports the number of saved entries.

Loading a pattern (8)

Load channel pattern (8) opens a previously saved pattern (.hpl, .json or a plain text file with one channel name per line).

Sorting m3u channels (9)

  1. Load an M3U list and a pattern (6 or 8).
  2. Select exactly one group in the tree (or any channel inside it).
  3. Click Sort m3u channels (9).
  4. Channels matched against the pattern are placed at the top of the group in pattern order; the remaining ones follow in their previous order.

How name matching works

Tip: a sort operation can be reverted with Tools (18) → Undo last change.

7. Jason lists

A Jason list is a numbered channel list in JSON format (.jason or .json extension) where each entry has the name, link, icon and target fields:

{ "1": { "name": "Channel", "link": "http://...", "icon": "http://...", "target": "POLSAT" }, "2": { ... } }

Operations

Note: while editing a Jason list, the numbering shown in the tree refreshes automatically after moving, deleting, cutting and pasting entries.

8. Editing the channel list

Selecting

Moving and deleting

Context menu (right mouse button)

CommandAction
RenameRenames a single channel (dialog with a text field, Enter confirms).
Rename folderRenames the group containing the selected entry.
Move to folder...Moves the highlighted channels to a group chosen from a list.
Cut / Paste hereCuts entries (including whole groups with their content) to the program clipboard and pastes them after the target entry.
DeleteWorks like button (17).

Search (20)

The Search channel... field in the top right corner of the M3U / URL tab filters the list by a fragment of the channel or group name (confirm with Enter). The Clear (20) button restores the full list. Edits made on a search result are automatically carried over to the full list.

9. Tools (18)

The Tools (18) button opens a menu of housekeeping functions:

FunctionDescription
Create folderAdds a new, empty group with the given name.
Merge foldersMoves all channels from a source folder to a target folder (chosen from lists).
Remove empty foldersRemoves all groups without channels and reports their number.
Find duplicatesShows a report of duplicate pairs. A duplicate is detected by normalised name, by URL, or by both.
Remove duplicatesKeeps the first occurrence of each channel, removes further repetitions and reports their number.
Bulk renameRemoves or replaces a given text fragment in all channel names (e.g. stripping a "PL: " prefix). Redundant spaces are cleaned up automatically.
Auto organize foldersDistributes channels into thematic folders based on their names: Sport, Movies, Series, Kids, Documentary, News, Music, Entertainment, Other.
Export reportSaves the list to a .csv file (columns: group, name, url) or the last text report to .txt.
Undo last changeRestores the list state from before the last editing operation (multi-level undo history).

10. Stream Tester (19)

  1. Highlight channels or whole groups in the tree.
  2. Click Stream Tester (19). The test runs in the background and the progress bar shows the status.
  3. Each channel is probed with a short HTTP request (5-second limit) and receives a colour:
ColourResultMeaning
greenOKThe server responded correctly within the time limit.
amberWARNThe server responded with 401 / 403 / 405 (it refuses the probe, but the stream may still play) or responded slowly.
redFAILNo response, connection error or empty URL.

When finished, the status bar shows a summary such as Stream test completed: 42 OK, 3 WARN, 5 FAIL.

Note: the test only checks the server response - it does not play video and uses negligible bandwidth. A WARN result does not necessarily mean the channel is broken.

11. Xtream Codes (21)

  1. Open the Xtream Codes tab.
  2. Enter the Host in the form http://your-server.com:port, the Username and the Password (the password field is masked).
  3. Select what should be loaded: Live TV, VOD, Series (at least one).
  4. Click Connect & Load (21).

The program logs in via player_api.php and, after a successful login, shows a status like Logged in: name | Expires: date. Channels are loaded into the main tree (the program switches to the M3U / URL tab automatically) in groups with prefixes:

A list loaded this way can be edited, sorted, converted to Enigma2 (3), saved as m3u (2) or shared via M3U TV like any other list.

Important: login credentials are not stored anywhere - they must be re-entered after the program is closed. The generated stream URLs contain the account's username and password, so saved m3u files should be handled with care.

12. M3U TV - local server (22)

The M3U TV / Server tab shares the loaded channel list on the home network - with a TV, a set-top box or an IPTV app - without copying any files.

  1. Load a channel list (M3U / URL tab or Xtream).
  2. Click Start server (22). The program shows the Server running status and the playlist address in the form http://your-PC-IP:8899/iptv.m3u.
  3. Use Copy URL and enter the address in the TV's IPTV app as "Import m3u-file from URL".
  4. The cards below the address show the number of shared channels and the port (8899).
  5. The same button stops the server (Stop server (22)).
Important: the PC and the TV must be on the same local network and the program must keep running. On the first server start Windows Firewall may ask for permission - allow access on the private network.

13. Download .m3u LIVE + VOD + SERIES

The fourth tab downloads a complete list from an Xtream server and writes it directly to files on disk: LIVE channels and VOD movies into one file, and series episodes into a separate one. The list is built locally via player_api.php - no server-side script is ever executed.

Step by step

  1. Login data.
    • Fastest way: paste the full playlist address (a get.php / m3u_plus link) into the top field and click Load from URL - the host, username and password fill in automatically.
    • Or enter the Host (http://server:port), Username and Password manually.
  2. Download scope. Check Live TV, VOD and/or Series (all enabled by default).
  3. Series categories. With Series checked, click Select series categories...:
    • the window fetches the category list from the server,
    • type e.g. PL in the filter field and use Select matching (or Select all / Clear selection),
    • confirm with Confirm selection. The label under the button then shows e.g. "Series categories: selected 12 / 96".
  4. Output files. Choose the LIVE + VOD file (default playlist.m3u next to the program) and the SERIES file (default playlist_series.m3u).
  5. Download list. The program verifies the account, then downloads LIVE, VOD and the episodes of the selected series in turn. Progress is shown on the bar and details in the time-stamped log window. The Cancel button stops the operation at any moment.
  6. Summary. A final dialog shows the number of LIVE / VOD entries and series episodes together with the saved file paths. The finished files can be opened right away with Load m3u (1).
Note: downloading series requires a separate request for every title, so with many selected categories it may take several minutes. The log reports progress every 200 titles.

14. Button numbering and program files

Button numbering 1-22

No.Button (EN)Function
1Load m3uLoad a list from a .m3u / .m3u8 / .txt file
2Save m3uSave the current list to a .m3u file
3Convert -> Enigma2Convert the list to an Enigma2 bouquet (4097 services)
4Save as...Save the conversion result to a text file
5Load from URLDownload an m3u list from the internet (with a User-Agent field)
6Load Enigma2Load an Enigma2 bouquet / list (pattern source)
7Save channel patternSave the order pattern to channel_template.hpl
8Load channel patternLoad a pattern from a .hpl / .json / .txt file
9Sort m3u channelsSort the selected group according to the pattern
10Load JasonLoad a numbered .jason / .json list
11Save JasonSave the Jason list with fresh numbering
12Sort JasonSort the Jason list according to the pattern
13Select allCheck ✓ on all entries
14Deselect allRemove ✓ from all entries
15Move upMove the highlighted entries up
16Move downMove the highlighted entries down
17Delete selectedDelete highlighted and checked entries
18ToolsHousekeeping menu (chapter 9)
19Stream TesterStream availability test with colour-coded results
20ClearClear the search box and restore the full list
21Connect & LoadXtream Codes login and channel loading
22Start / Stop server (M3U TV)Start and stop the local playlist server

Files created by the program

FilePurpose
channel_template.hplThe channel order pattern saved next to the program with button (7). JSON format: {"format": "HPL_LIST", "source": "ENIGMA2", "channels": [...]}.
playlist.m3uDefault LIVE + VOD output file of the Download .m3u tab (next to the program).
playlist_series.m3uDefault series episodes output file (next to the program).
.m3u, .txt, .csv, .jason filesWritten only to locations chosen by the user (buttons 2, 4, 11 and Export report).
Note: the program creates no configuration files and no registry entries (apart from reading the MachineGuid for the access protection). Deleting the program folder removes it completely.

15. Troubleshooting

The program does not start - "Access denied" window

The computer is not on the list of authorised machines (chapter 2). Send the detected MAC addresses and the MachineGuid shown in the error window to the program vendor.

Load from URL returns an error or an empty response

  1. Check that the address starts with http:// or https:// and works in a browser / VLC.
  2. Some providers require a specific User-Agent - keep the default value or enter your IPTV app's identifier.
  3. Verify that the provider account is active and the concurrent connection limit is not exceeded.

Sorting (9) or (12) does not work

"No data to save - convert first"

Save as... (4) stores the conversion result - click Convert -> Enigma2 (3) first.

The M3U TV server does not start or the TV cannot load the list

  1. Load a channel list first - an empty program has nothing to share.
  2. Port 8899 may be taken by another program - close it or restart the PC.
  3. Allow the program through Windows Firewall on the private network.
  4. The TV must be on the same network; disable client isolation in the router / guest Wi-Fi.
  5. The program must keep running while the list is used on the TV.

The Stream Tester shows only FAIL / WARN

Some IPTV servers reject short probe requests (WARN for 401/403/405 codes) - the channel may still play in a player. Also check the account validity and the provider's connection limit.

Xtream login failed

  1. Enter the host with its port, e.g. http://server.com:8080 (no trailing slash).
  2. Check the username and password; the auth=0 message means rejected credentials or an expired account.
  3. Select at least one data type: Live TV, VOD or Series.

"Invalid Jason file format"

The file must be valid JSON with the structure described in chapter 7 (a dictionary of numbered entries with the name / link / icon / target fields).