Rapikan daftar putar torrent-TV (Super Wash)

UPD Layanan Torrent-TV, yang merupakan sumber utama konten, telah mati, sehingga artikel tersebut tidak memiliki makna praktis.

Streaming di layanan Torrent-TV ilegal (Super Wash) adalah stream asli dari operator atau dari satelit tanpa penjepit. Ini terutama aliran video yang saling terkait. Torrent TV memberikan kualitas setinggi mungkin, tetapi stabilitasnya rendah. Hari ini ada beberapa saluran, besok tidak. Hari ini, beberapa saluran bekerja dengan baik, besok itu buruk. Layanan ini tidak cocok untuk penggunaan bebas masalah terus menerus - yang untuknya mereka bayar, yaitu tidak membayar, maka mereka terima. Tapi itu bagus ketika Anda perlu menonton sesuatu dengan kualitas tinggi (jika salurannya akan bekerja secara stabil pada saat itu). Masalah lain adalah pembentukan playlist pribadi yang nyaman. Ini akan dibahas dalam catatan.



Daftar putar torrent-TV (Super Wash) dasar berisi lebih dari 1.200 saluran. Semua jenis regional, negara yang berbeda, duplikat SD dan HD, saluran sampah yang berbeda, dll. 200-300 saluran milik pemirsa Rusia. Pada saat yang sama, pengelompokan saluran yang diterima tidak nyaman untuk semua orang. Tampaknya Anda dapat mengambil daftar putar dari Torrent TV, mengaturnya sesuai kebutuhan jiwa perfeksionis. Masalahnya adalah tautan AceStream ke saluran berubah secara berkala, dan daftar putar yang disiapkan akan menjadi tidak berguna. Yaitu Anda memerlukan pembuatan daftar putar baru dan terbaru secara otomatis dalam bentuk yang nyaman bagi Anda. Itu yang akan kita lakukan.

Anda akan membutuhkan:

  • Pengalaman dalam mengatur program untuk menonton TV Torrent ("Cuci Super") dan mengetahui apa itu.
  • Router dengan dukungan Entware (jika perlu, dan beberapa keterampilan Anda dapat dengan mudah menyesuaikan instruksi untuk OpenWrt atau Entware pada kotak itu sendiri).

Catatan tidak membahas masalah:

  • Memilih dan mengonfigurasi manajer IPTV.
  • Pengaturan sistem secara keseluruhan untuk menonton TV Torrent.
  • Fitur kotak Android tertentu untuk bekerja dengan interlaced video pada umumnya dan Torrent TV pada khususnya.

Kami akan menggunakan program di router, yang ketika diminta oleh tautan, mengunduh daftar putar Torrent-TV saat ini, membentuk daftar putar baru dari itu dan memberikannya:

  • Daftar saluran Anda sendiri berdasarkan daftar saluran favorit yang disiapkan.
  • Anda dapat secara otomatis mengecualikan saluran SD jika ada HD yang cocok untuk mereka.
  • Urutkan grup dan nama mereka sesuai keinginan Anda.
  • Menampilkan nama saluran sesuai keinginan Anda.
  • Sortir saluran dalam grup berdasarkan HD / SD (primer) dan nama.
  • Tautan internal ke sumber EPG.
  • Sumber logo (serta logo itu sendiri) dan kepatuhan EPG untuk saluran pilihan Anda.

Bagaimana semuanya akan bekerja setelah penyetelan?


Tambahkan tautan ke daftar putar http://192.168.0.1:81/playlist.cgi (ganti 192.168.0.1 dengan alamat internal router Anda) di manajer IPTV Anda. Selesai



Prinsip operasi sangat sederhana. Skrip playlist.cgi pada router meluncurkan program ttv.py, yang, berdasarkan daftar putar torrent-TV saat ini (dimuat pada saat akses) dan daftar saluran favorit yang diberikan, menghasilkan daftar putar baru dan kemudian memberikannya.

Menginstal perangkat lunak yang diperlukan pada router


Terhubung melalui SSH ke router. Pada Windows, Anda dapat menggunakan klien Putty untuk menghubungkan koneksi.

Instal perangkat lunak yang diperlukan:

opkg update opkg install wget ca-certificates mc python3 lighttpd-mod-cgi 

wget adalah program untuk mengunduh file. Ini akan diperlukan hanya untuk pengaturan awal.

ca-sertifikat - sertifikat untuk wget.

mc - manajer file Midnight Commander. Ini diperlukan hanya karena editor mcedit yang mudah digunakan. Jika Anda terbiasa menggunakan editor teks lain, maka mc tidak dapat diinstal.

python3 adalah juru bahasa Python.

lighttpd-mod-cgi - server web lighttpd.

Unduh file utama


 mkdir -p /opt/etc/ttv wget --no-check-certificate -O /opt/etc/ttv/ttv.py https://raw.githubusercontent.com/Kyrie1965/ttv/master/ttv.py wget --no-check-certificate -O /opt/share/www/playlist.cgi https://raw.githubusercontent.com/Kyrie1965/ttv/master/playlist.cgi chmod +x /opt/share/www/playlist.cgi 

Saya akan memberi tahu tentang janji mereka nanti, tetapi untuk saat ini saya hanya akan menunjukkan isinya. Jangan menemukan kesalahan dengan kode Python, sampai saat ini saya belum pernah menulis apa pun dengan Python.

Konten /opt/etc/ttv/ttv.py
 PLAYLIST_LOAD_URL = "http://91.92.66.82/trash/ttv-list/as.all.tag.player.m3u" TEMPLATE_SAVE_PATH = "/opt/etc/ttv/template.txt" FAVORITES_LOAD_PATH = "/opt/etc/ttv/favorites.txt" PLAYLIST_SAVE_PATH = "/opt/etc/ttv/playlist.m3u" LOGOS_URL = "" #LOGOS_URL = "https://raw.githubusercontent.com/Kyrie1965/ttv/master/logos/{}" #LOGOS_URL = "{}" STREAM_URL = "http://127.0.0.1:6878/ace/getstream?id={}&.mp4" #STREAM_URL = "acestream://{}" EPG_LINKS = "https://teleguide.info/download/new3/xmltv.xml.gz" #EPG_LINKS = "https://teleguide.info/download/new3/xmltv.xml.gz,http://programtv.ru/xmltv.xml.gz,http://api.torrent-tv.ru/ttv.xmltv.xml.gz" import re import urllib.request import os from operator import itemgetter as i from functools import cmp_to_key from urllib.parse import urlencode import gzip def cmp(a, b): return (a > b) - (a < b) def multikeysort(items, columns): comparers = [ ((i(col[1:].strip()), -1) if col.startswith('-') else (i(col.strip()), 1)) for col in columns ] def comparer(left, right): comparer_iter = ( cmp(fn(left), fn(right)) * mult for fn, mult in comparers ) return next((result for result in comparer_iter if result), 0) return sorted(items, key=cmp_to_key(comparer)) def loadChannels(content): lines = content.splitlines() returnChannels = {} pattern = re.compile("group-title=\"(.*?)\"") pattern2 = re.compile("tvg-logo=\"(.*?)\"") channelName = "" channelGroup = "" channelLogoLink = "" channelStreamID = "" waitURI = False for line in lines: if line.startswith("acestream"): if waitURI: channelStreamID = line[12:] HD = False if ("HD" in channelName) or ("UHD" in channelName) or ("4K" in channelName): HD = True tmpDict = {"name": channelName, "group": channelGroup, "stream": channelStreamID, "hd": HD, "logolink": channelLogoLink} returnChannels[channelName.upper()] = tmpDict waitURI = False elif line.startswith("#EXTINF"): index = line.rfind("\",") if (index == -1): continue channelName = line[index+2:] match = pattern.search(line) if match: channelGroup = match.group(1) else: channelGroup = "" match = pattern2.search(line) if match: channelLogoLink = match.group(1) else: channelLogoLink = "" waitURI = True return returnChannels def saveTemplate(content, channels, path): lines = content.splitlines() pattern = re.compile("group-title=\"(.*?)\"") waitURI = False channelName = "" channelReplace = "" channelNewName = "" channelEPG = "" channelGroup = "" channelStreamID = "" groupDict = {} currentGroup = 1 template="" for line in lines: if line.startswith("acestream"): if waitURI: channelStreamID = line[12:] template += channelName template += "/" template += channelReplace template += "/" template += channelNewName template += "/" template += channelEPG template += "/" template += channelName + ".png" template += "/" template += channelGroup template += "\n" waitURI = False elif line.startswith("#EXTINF"): x = line.split("\",") if (len(x) != 2): continue channelName = x[1] channelNewName = x[1] channelEPG = x[1] if (channels.get(channelName.upper() + " HD") != None): channelReplace = channelName + " HD" else: channelReplace = "-" match = pattern.search(x[0]) if match: channelGroup = match.group(1) if (groupDict.get(channelGroup)): channelGroup = groupDict.get(channelGroup) else: newGroupName = "{:02d}_{}".format(currentGroup, channelGroup) currentGroup += 1 groupDict[channelGroup] = newGroupName channelGroup = newGroupName else: channelGroup = "00_Unsigned" waitURI = True file = open(path,'w', encoding='utf-8') file.write(template) file.close() return def loadFavorites(content): returnChannels = {} lines = content.splitlines() for line in lines: parts = line.split('/') if len(parts) == 6: tmpDict = {"name": parts[0], "replace": parts[1], "newName": parts[2], "EPG": parts[3], "logo": parts[4], "group": parts[5]} returnChannels[parts[0].upper()] = tmpDict elif len(parts) == 5: #    tmpDict = {"name": parts[0], "replace": parts[1], "newName": parts[2], "EPG": parts[3], "group": parts[4], "logo": parts[0] + ".png"} returnChannels[parts[0].upper()] = tmpDict return returnChannels def savePlaylist(channels, favorites, path): returnChannels = [] currentChannels = set() for key, chDict in favorites.items(): if chDict["replace"] != "-": if favorites.get(chDict["replace"].upper()) != None and channels.get(chDict["replace"].upper()) != None: currentChannels.add(chDict["replace"]) elif channels.get(chDict["name"].upper()) != None: currentChannels.add(chDict["name"]) elif channels.get(chDict["name"].upper()) != None: currentChannels.add(chDict["name"]) for ch in currentChannels: chFromFavorites = favorites.get(ch.upper()) chFromChannels = channels.get(ch.upper()) tmpDict = {"name": chFromFavorites.get("newName"), "oldName": chFromFavorites.get("name"), "EPG": chFromFavorites.get("EPG"), "group": chFromFavorites.get("group"), "logof": chFromFavorites.get("logo"), "logoc": chFromChannels.get("logolink"), "stream": chFromChannels.get("stream"), "hd": chFromChannels.get("hd")} returnChannels.append(tmpDict) result = multikeysort(returnChannels, ['group', '-hd', 'name']) template="" template += "#EXTM3U url-tvg=" template += "\"" template += EPG_LINKS template += "\"" template += "\n" for n in result: group = n.get("group") if group.find("_", 2, 3) != -1: group = group[3:] if len(LOGOS_URL) > 0: template += "#EXTINF:-1 tvg-name=\"{}\" tvg-logo=\"{}\" group-title=\"{}\",{}".format(n.get("EPG"), LOGOS_URL.format(urllib.parse.quote(n.get("logof"))), group, n.get("name")) else: template += "#EXTINF:-1 tvg-name=\"{}\" tvg-logo=\"{}\" group-title=\"{}\",{}".format(n.get("EPG"), n.get("logoc"), group, n.get("name")) template += "\n" template += STREAM_URL.format(n.get("stream")) template += "\n" file = open(path,'w', encoding='utf-8') file.write(template) file.close() return result #response = urllib.request.urlopen(PLAYLIST_LOAD_URL) #content = response.read().decode("utf-8") #channels = loadChannels(content) content = "" request = urllib.request.Request(PLAYLIST_LOAD_URL) request.add_header('Accept-encoding', 'gzip') response = urllib.request.urlopen(request) if response.info().get('Content-Encoding') == 'gzip': gzipFile = gzip.GzipFile(fileobj=response) content = gzipFile.read().decode("utf-8") else: content = response.read().decode("utf-8") channels = loadChannels(content) if channels == None or (len(channels.keys()) == 0): exit() saveTemplate(content, channels, TEMPLATE_SAVE_PATH) exists = os.path.isfile(FAVORITES_LOAD_PATH) if exists: file = open(FAVORITES_LOAD_PATH,'r', encoding='utf-8') content = file.read() favorites = loadFavorites(content) savePlaylist(channels, favorites, PLAYLIST_SAVE_PATH) 


Konten /opt/share/www/playlist.cgi
 #!/bin/sh PATH=/opt/sbin:/opt/bin:/opt/usr/sbin:/opt/usr/bin:/usr/sbin:/usr/bin:/sbin:/bin python3 /opt/etc/ttv/ttv.py echo "Content-Type: text/plain; charset=UTF-8" echo "" echo "$(cat /opt/etc/ttv/playlist.m3u)" 


Konfigurasi dan startup server web


Buka file /opt/etc/lighttpd/lighttpd.conf :

 mcedit /opt/etc/lighttpd/lighttpd.conf 

Untuk menempel dari buffer, gunakan Shift + Insert, simpan - F2, keluar - F10.

Ubah baris # server.port = 80 ke:

 server.port = 81 

Buka file /opt/etc/lighttpd/conf.d/30-cgi.conf :

 mcedit /opt/etc/lighttpd/conf.d/30-cgi.conf 

Ubah ".cgi" => "/ opt / bin / perl" ke:

 ".cgi" => "/bin/sh" 

Luncurkan server web:

 /opt/etc/init.d/S80lighttpd start 

Buat Daftar Saluran Favorit


Jalankan program ttv.py :

 python3 /opt/etc/ttv/ttv.py 

File template template.txt akan dibuat di folder / opt / etc / ttv . Ini adalah file teks sederhana. Itu akan selalu relevan, mis. ketika program dimulai, ia ditimpa dengan data saat ini.

Setiap baris dalam file ini sesuai dengan satu saluran Torrent-TV dan memiliki bentuk:
CHANNEL_NAME / CHANGE_CHANNEL / YOUR_CHANNEL_NAME / YOUR_CHANNEL_NAME__EPG / YOUR_LOGO / GROUP ANDA

Sebagai contoh:

Amedia Premium / Amedia Premium HD / Amedia Premium / Amedia Premium / Amedia Premium.png / 11_Movies
Amedia Premium HD / - / Amedia Premium HD / Amedia Premium HD / Amedia Premium HD.png / 11_Movies

Simpan file ini di komputer Anda untuk diedit dengan mudah (misalnya, menggunakan WinSCP ). Ganti nama menjadi Favorites.txt.

Edit file, hanya menyisakan saluran yang Anda butuhkan.

CHANNEL_NAME - Nama saluran di daftar putar asli.

CHANGE_CHANNEL - nama saluran di daftar putar asli untuk penggantian. Letakkan "-" jika pengganti tidak diperlukan. Secara default, penggantian secara otomatis diganti dalam templat jika saluran memiliki opsi HD. Misalnya, dalam daftar putar asli ada Amedia Premium dan Amedia Premium HD. Hanya Amedia Premium HD yang ada di daftar putar final.

YOUR_CHANNEL_NAME adalah nama tampilan di manajer IPTV. Itu bisa apa saja dan hanya memengaruhi nama yang ditampilkan di manajer IPTV. Misalnya, saluran asli disebut "Paramount Comedy HD (Rusia)", dan Anda menamainya "Paramount Comedy HD".

YOUR_CHANNEL_B__EPG_NAME - ini diperlukan untuk kepatuhan penuh pada sumber EPG yang dipilih. Misalnya, saluran asli disebut "Match TV HD". Dan dalam EPG saluran ini disebut "Cocokkan!". Ubah parameter ini menjadi "Cocokkan!" dan dapatkan kepatuhan penuh untuk sumber EPG Anda. Dengan demikian, untuk semua saluran, Anda dapat membawa kepatuhan EPG mendekati 100%.

YOUR_LOGO - nama file logo. Secara default, ttv.py mengambil tautan logo dari daftar putar asli, mis. YOUR_LOGO akan diabaikan. Untuk menggunakannya, Anda perlu mengubah parameter LOGOS_URL di ttv.py (Anda akan membaca lebih lanjut tentang ini nanti).

YOUR_GROUP - nama grup saluran. Anda dapat menggunakan indeks, angka dua digit, sebelum nama grup. Indeks ini menentukan urutan grup dalam daftar putar terakhir (dari yang lebih kecil ke yang lebih besar). Setelah mengurutkan, indeks akan dihapus secara otomatis dari nama grup.

Berikut adalah contoh file Favorites.txt yang diedit
 Amedia Premium/Amedia Premium HD/Amedia Premium/Amedia Premium/Amedia Premium.png/11_   Amedia Premium HD/-/Amedia Premium HD/Amedia Premium HD/Amedia Premium HD.png/11_   / HD///.png/12_  HD/-/ HD/ HD/ HD.png/12_ Viasat History/Viasat History HD/Viasat History/Viasat History/Viasat History.png/01_ Viasat History HD/-/Viasat History HD/Viasat History/Viasat History.png/01_ Discovery Channel/Discovery Channel HD/Discovery Channel/Discovery Channel/Discovery Channel.png/01_ Discovery Channel HD/-/Discovery Channel HD/Discovery Channel HD/Discovery Channel HD.png/01_ Discovery Science/Discovery Science HD/Discovery Science/Discovery Science/Discovery Science.png/01_ Discovery Science HD/-/Discovery Science HD/Discovery Science HD/Discovery Science HD.png/01_ Amedia Hit/Amedia Hit HD/Amedia Hit/Amedia Hit/Amedia Hit.png/11_   Amedia Hit HD/-/Amedia Hit HD/Amedia Hit HD/Amedia Hit HD.png/11_    /  HD/!/!/ .png/03_   HD/-/! HD/!/  HD.png/03_ Eurosport 1/Eurosport 1 HD/Eurosport 1/Eurosport 1/Eurosport 1.png/03_ Eurosport 1 HD/-/Eurosport 1 HD/Eurosport 1 HD/Eurosport 1 HD.png/03_ Paramount Comedy HD ()/-/Paramount Comedy HD/Paramount Comedy HD ()/Paramount Comedy HD ().png/11_   !  1/!  1 HD/!  1/!  1/!  1.png/03_ !  1 HD/-/!  1 HD/!  1 HD/!  1 HD.png/03_  1/ HD/ 1/ 1/ 1.png/13_-  HD/-/ HD/ HD/ HD.png/13_- 


Salin file Favorites.txt yang sudah disiapkan ke folder / opt / etc / ttv di router.

Semuanya sudah siap. Anda dapat mengambil daftar putar di http://192.168.0.1:81/playlist.cgi (ganti 192.168.0.1 dengan alamat internal router Anda). Cukup tentukan tautan di pengelola IPTV dan Anda akan selalu memiliki daftar putar saat ini. Script playlist.cgi meluncurkan program ttv.py, yang, berdasarkan daftar putar torrent-TV saat ini (dimuat pada saat panggilan) dan Favorites.txt, menghasilkan daftar putar baru, dan kemudian memberikan daftar putar baru ini.

Pada output, jika semua saluran ada di daftar putar saat ini (jika tidak, saluran yang hilang akan diabaikan), Anda akan mendapatkan daftar putar yang rapi:

Daftar putar
#EXTM3U url-tvg="https://teleguide.info/download/new3/xmltv.xml.gz"
#EXTINF:-1 tvg-name="Discovery Channel HD" tvg-logo="http://1ttv.org/uploads/SmWnYlOvkJn8GzttT2UY0vmo8PYfMg.png" group-title="",Discovery Channel HD
http://127.0.0.1:6878/ace/getstream?id=b6e518df35bdffc7ea8fdd05025cec851941a102&.mp4
#EXTINF:-1 tvg-name="Discovery Science HD" tvg-logo="http://1ttv.org/uploads/Yjj1p6idV0HGD56Wz7JX5IeKfD44vz.png" group-title="",Discovery Science HD
http://127.0.0.1:6878/ace/getstream?id=03fb28986da9168dd56ec6891253bcc496c13eb5&.mp4
#EXTINF:-1 tvg-name="Viasat History" tvg-logo="http://1ttv.org/uploads/MWGbB8wJp5Gm4vbPHl0ktohDDjMKdr.png" group-title="",Viasat History
http://127.0.0.1:6878/ace/getstream?id=c6d943e1aac03c179b3af9e99d97ac6779c947c7&.mp4
#EXTINF:-1 tvg-name="Eurosport 1 HD" tvg-logo="http://1ttv.org/uploads/DpFTzUEA3y67Z6ObTPF4xH0XLNRAZm.png" group-title="",Eurosport 1 HD
http://127.0.0.1:6878/ace/getstream?id=70bd87520c622ba7dd6e41aface77d5b2f437f87&.mp4
#EXTINF:-1 tvg-name="!" tvg-logo="http://1ttv.org/uploads/MXyy9Uud7oDuH8JqVisjsD0csgAHnQ.png" group-title="",! HD
http://127.0.0.1:6878/ace/getstream?id=9af7ac309216464e67092deb23d312a20c483674&.mp4
#EXTINF:-1 tvg-name="! 1 HD" tvg-logo="http://1ttv.org/uploads/9PM8M6cN21wQ3M5isVZgjNepzUI4Ry.png" group-title="",! 1 HD
http://127.0.0.1:6878/ace/getstream?id=b8a1e8458419b63ad1c3fa7bd79431d9625c322d&.mp4
#EXTINF:-1 tvg-name="Amedia Hit HD" tvg-logo="http://1ttv.org/uploads/HdnTfcZCgP7Odm1cOKNq9j4yJDRiFP.png" group-title=" ",Amedia Hit HD
http://127.0.0.1:6878/ace/getstream?id=ed6d00e9b6c50c95902b33c841302dd709b214da&.mp4
#EXTINF:-1 tvg-name="Amedia Premium HD" tvg-logo="http://1ttv.org/uploads/ornzQpk6WCW6xk0lyBhlwqH8u2QyU7.png" group-title=" ",Amedia Premium HD
http://127.0.0.1:6878/ace/getstream?id=c38a7580985fa85fa6e0a82c6fd7403e8e5c2b50&.mp4
#EXTINF:-1 tvg-name="Paramount Comedy HD ()" tvg-logo="http://1ttv.org/uploads/VowjbL265DoceAryIEtqNuPv3NDhFK.png" group-title=" ",Paramount Comedy HD
http://127.0.0.1:6878/ace/getstream?id=a9023adab9228b8aa7f1b508b553140b69cecd80&.mp4
#EXTINF:-1 tvg-name=" HD" tvg-logo="http://1ttv.org/uploads/m6ODa3HXr9QNAbSThJNvWeOIEYGp7q.png" group-title="", HD
http://127.0.0.1:6878/ace/getstream?id=4318416741f8d35f2de38e7100b89831e0ef0617&.mp4
#EXTINF:-1 tvg-name=" HD" tvg-logo="http://1ttv.org/uploads/ghvqmVpPWqn9x6POAm9UJBvXFzTrqN.png" group-title="-", HD
http://127.0.0.1:6878/ace/getstream?id=39b9b54a5031846e4936735ec62d157d5eca56e0&.mp4


 : Discovery Channel HD Discovery Science HD Viasat History : Eurosport 1 HD ! HD !  1 HD   : Amedia Hit HD Amedia Premium HD Paramount Comedy HD :  HD -:  HD 

Jika perlu, Anda dapat mengubah beberapa parameter dalam program ttv.py:

 mcedit /opt/etc/ttv/ttv.py 

Opsi tersedia untuk perubahan
PLAYLIST_LOAD_URL = "http://91.92.66.82/trash/ttv-list/as.all.tag.player.m3u"
TEMPLATE_SAVE_PATH = "/opt/etc/ttv/template.txt"
FAVORITES_LOAD_PATH = "/opt/etc/ttv/favorites.txt"
PLAYLIST_SAVE_PATH = "/opt/etc/ttv/playlist.m3u"
LOGOS_URL = ""
#LOGOS_URL = "https://raw.githubusercontent.com/Kyrie1965/ttv/master/logos/{}"
#LOGOS_URL = "{}"
STREAM_URL = "http://127.0.0.1:6878/ace/getstream?id={}&.mp4"
#STREAM_URL = "acestream://{}"
EPG_LINKS = "https://teleguide.info/download/new3/xmltv.xml.gz"
#EPG_LINKS = "https://teleguide.info/download/new3/xmltv.xml.gz,http://programtv.ru/xmltv.xml.gz,http://api.torrent-tv.ru/ttv.xmltv.xml.gz"


PLAYLIST_LOAD_URL - tautan untuk mengunduh daftar putar torrent-TV saat ini.
TEMPLATE_SAVE_PATH - jalur untuk menyimpan templat.
FAVORITES_LOAD_PATH - jalur untuk memuat daftar saluran favorit.
PLAYLIST_SAVE_PATH - jalur untuk menyimpan daftar putar baru.
LOGOS_URL - tautan dengan logo saluran. Anda dapat menggunakan string kosong ("") untuk mengambil tautan dari daftar putar asli, sementara logo dari favorit.txt akan diabaikan.
STREAM_URL - tampilan tautan aliran di daftar putar terakhir. Ini bisa berupa tautan langsung ke Ace Stream atau tautan ke Ace Stream Proxy. Tergantung pada manajer IPTV mana yang Anda gunakan.
EPG_LINKS - Daftar tautan EPG. Semua manajer IPTV berbeda. Ada yang tidak tahu cara mengambil tautan ke EPG dari daftar putar. Ada yang mendukung hanya satu sumber EPG dari daftar putar. Ada yang tidak tahu cara menggabungkan EPG dari berbagai sumber.

Anda hanya akan tertarik pada STREAM_URL, LOGOS_URL, EPG_LINKS, karena tampilan daftar putar terakhir tergantung pada mereka. Bagi mereka, contoh-contoh alternatif diberikan dalam file.

Kesimpulan


Hasilnya, Anda mendapatkan daftar putar Torrent TV (Super Wash) sebenarnya dengan daftar saluran Anda sendiri, dengan nama saluran Anda sendiri, dengan grup Anda sendiri dan pengurutan sewenang-wenang, logo Anda sendiri, dengan pemetaan EPG Anda sendiri, dengan kemampuan untuk mengecualikan duplikat HD / SD, dengan menyortir saluran dalam grup berdasarkan HD / SD dan nama. Anda hanya perlu mengonfigurasi semuanya sekali dan sekali membuat file saluran favorit Anda. Dan kemudian semua perangkat di jaringan rumah Anda akan menerima daftar putar yang diinginkan melalui tautan, melakukan "semuanya indah" segera tanpa pengaturan tambahan.



UPD 02/19/2019:

  • Menambahkan dukungan gzip saat memuat daftar putar asli ("superwash" sekarang memberikan ttv.all.tag.player.m3u hanya di gzip). Daftar putar yang Anda buat akan diberikan, seperti sebelumnya, dalam teks / polos.
  • Menambahkan kemampuan untuk mengambil tautan ke logo dari daftar putar asli.

Source: https://habr.com/ru/post/id438842/


All Articles