Разное

P2P tv плейлист: Смотрим P2P TV на базе Perfect Player

Содержание

Приводим в порядок плейлист Торрент-ТВ («Суперпомойка») / Хабр

UPD. Сервис Торрент-ТВ, который был основным источником контента, умер, так что статья лишена практического смысла.

Потоки в нелегальном сервисе Торрент-ТВ («Суперпомойка») в подавляющем большинстве являются оригинальными потоками от операторов или со спутника без пережатия. В основном это потоки с чересстрочным видео. Торрент-ТВ обеспечивает максимально возможное качество, но низкую стабильность. Сегодня одни каналы есть, завтра нет. Сегодня одни каналы работают хорошо, завтра плохо. Этот сервис не подходит для постоянного беспроблемного использования — за что заплатили, т.е. не платили, то и получили. Но он отлично подходит, когда нужно посмотреть что-то с высоким качество (если канал в тот момент будет работать стабильно). Ещё одна проблема — это формирование удобного персонального плейлиста. Об этом как раз и пойдёт речь в заметке.


Базовый плейлист Торрент-ТВ («Суперпомойка») содержит более 1200 каналов. Всевозможные региональные, разных стран, дубликаты SD и HD, разные мусорные каналы и пр. К российским зрителям относятся 200-300 каналов. При этом не всем удобна принятая группировка каналов. Казалось бы, можно взять плейлист от Торрент-ТВ, оформить его так, как требует душа перфекциониста. Проблема в том, что AceStream-ссылки на каналы меняются периодически, и подготовленный плейлист станет бесполезным. Т.е. нужна автоматическая генерации нового актуального плейлиста в удобном для вас виде. Именно это мы и сделаем.

Вам понадобится:

  • Опыт настройки программ для просмотра Торрент-ТВ («Суперпомойка») и знание, что это такое.
  • Маршрутизатор с поддержкой Entware (при необходимости и некоторых навыков вы легко адаптируете инструкцию под OpenWrt или Entware на самих боксах).

В заметке не затрагиваются вопросы:

  • Выбора и настройки IPTV-менеджера.
  • Настройки системы в целом для просмотра Торрент-ТВ.
  • Особенностей конкретных Android-боксов по работе с чересстрочным видео в общем и Торрент-ТВ в частности.


Мы будем использовать программу на маршрутизаторе, которая будет при запросе по ссылке загружать актуальный плейлист Торрент-ТВ, формировать из него новый плейлист и отдавать его:

  • Ваш собственный список каналов на базе подготовленного списка избранных каналов.
  • Вы можете автоматически исключить SD-каналы, если для них есть HD-соответствия.
  • Сортировка групп и их названия по вашему желанию.
  • Отображаемые название каналов по вашему желанию.
  • Сортировка каналов в группе по HD/SD (первично) и названию.
  • Встроенные ссылки на EPG-источники.
  • Источник логотипов (как и сами логотипы) и соответствие EPG для каналов по вашему желанию.

Как у вас всё будет работать после настройки?


Добавляете ссылку на плейлист http://192. 168.0.1:81/playlist.cgi (замените 192.168.0.1 на внутренний адрес вашего маршрутизатора) в вашем IPTV-менеджере. Готово.

Принцип работы очень простой. Скрипт playlist.cgi на маршрутизаторе запускает программу ttv.py, которая на базе актуального плейлиста Торрент-ТВ (загружается в момент обращения) и заданного списка избранных каналов генерирует новый плейлист, а потом его отдаёт.

Установка необходимого ПО на маршрутизаторе


Подключитесь по SSH к маршрутизатору. В Windows для подключения подключения вы можете использовать клиент PuTTY.

Установите необходимое ПО:

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

wget — программа для загрузки файлов. Она понадобится только для первоначальной настройки.

ca-certificates — сертификаты для wget.

mc — файловый менеджер Midnight Commander. Он нужен лишь из-за удобного редактора mcedit. Если вы привыкли пользоваться другим текстовым редактором, то mc можно не устанавливать.

python3 — интерпретатор Python.

lighttpd-mod-cgi — веб-сервер lighttpd.

Загрузка основных файлов

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


Об их назначении я расскажу потом, а пока просто покажу содержимое. К коду Python сильно не придирайтесь, до этого момент я на Python никогда ничего не писал.

Содержимое /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)

Содержимое /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)"

Конфигурация и запуск веб-сервера


Откройте файл /opt/etc/lighttpd/lighttpd.conf:

mcedit /opt/etc/lighttpd/lighttpd.conf


Чтобы вставить из буфера, используйте Shift+Insert, сохранить — F2, выйти — F10.

Измените строку #server.port = 80 на:

server.port = 81


Откройте файл /opt/etc/lighttpd/conf.d/30-cgi.conf:

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


Измените «.cgi» => «/opt/bin/perl» на:

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


Запустите веб-сервер:

/opt/etc/init.d/S80lighttpd start

Создание списка избранных каналов


Запустите программу ttv.py:

python3 /opt/etc/ttv/ttv.py


В папке /opt/etc/ttv будет создан шаблонный файл template.txt. Это простой текстовый файл. Он всегда будет актуальный, т.е. при запуске программы он перезаписывается с актуальными данными.

Каждая строка в этом файле соответствует одному каналу Торрент-ТВ и имеет вид:
НАЗВАНИЕ_КАНАЛА/ЗАМЕНА_КАНАЛА/ВАШЕ_НАЗВАНИЕ_КАНАЛА/ВАШЕ_НАЗВАНИЕ_КАНАЛА_В_EPG/ВАШ_ЛОГОТИП/ВАША_ГРУППА

Например:

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_Фильмы

Сохраните этот файл на компьютере для удобного редактирования (например, с помощью WinSCP). Переименуйте его в favorites.txt.

Отредактируйте файл, оставляя только те каналы, которые вам нужны.

НАЗВАНИЕ_КАНАЛА — название канала в оригинальном плейлисте.

ЗАМЕНА_КАНАЛА — название канала в оригинальном плейлисте для замены. Поставьте «-«, если замена не нужна. По умолчанию в шаблоне автоматически подставляются замены, если у канала есть HD-вариант. Например, в оригинальном плейлисте присутствуют Amedia Premium и Amedia Premium HD. В финальном плейлисте будет только Amedia Premium HD.

ВАШЕ_НАЗВАНИЕ_КАНАЛА — отображаемое название в IPTV-менеджере. Оно может быть любым и влияет только на выводимое названия в IPTV-менеджере. Например, оригинальный канал имеет название «Paramount Comedy HD (Россия)», а вы его переименовываете в «Paramount Comedy HD».

ВАШЕ_НАЗВАНИЕ_КАНАЛА_В_EPG — это нужно для полного соответствия в выбранном источнике EPG. Например, оригинальный канала называется «Матч ТВ HD». А в EPG этот канал называется «Матч!». Меняете этот параметр на «Матч!» и получаете полное соответствие для вашего источника EPG. Таким образом образом для всех каналов вы можете приблизить соответствие EPG к 100%.

ВАШ_ЛОГОТИП — имя файла логотипа. По умолчанию ttv.py берёт ссылки на логотипы из оригинального плейлиста, т.е. параметр ВАШ_ЛОГОТИП будет проигнорирован. Чтобы он использовался, нужно изменить параметр LOGOS_URL в ttv.py (об этом вы прочтёте далее).

ВАША_ГРУППА — название группы канала. Вы можете использовать индекс, двузначное число, перед названием группы. Этот индекс определяет порядок групп в финальном плейлисте (от меньшего к большему). После сортировки индекс будет автоматически убран из названия группы.

Вот пример отредактированного файла favorites. txt

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_Зомби-пропаганда


Скопируйте подготовленный файл favorites.txt в папку /opt/etc/ttv на маршрутизаторе.

Всё готово. Вы можете забирать плейлист по ссылке http://192.168.0.1:81/playlist.cgi (замените 192.168.0.1 на внутренний адрес вашего маршрутизатора). Просто указываете ссылку в IPTV-менеджере и у вас всегда будет ваш актуальный плейлист. Скрипт playlist.cgi запускает программу ttv.py, которая на базе актуального плейлиста Торрент-ТВ (загружается в момент обращения) и favorites.txt генерирует новый плейлист, а потом отдаёт этот новый плейлист.

На выходе, если все каналы будут присутствовать в актуальном плейлисте (в противном случае отсутствующие каналы будут проигнорированы), вы получите такой аккуратный плейлист:

Плейлист

#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


В случае необходимости вы можете изменить некоторые параметры в программе ttv.py:

mcedit /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"

PLAYLIST_LOAD_URL — ссылка на загрузку актуального плейлиста Торрент-ТВ.
TEMPLATE_SAVE_PATH — путь для сохранения шаблона.
FAVORITES_LOAD_PATH — путь для загрузки списка избранных каналов.
PLAYLIST_SAVE_PATH — путь для сохранения нового плейлиста.
LOGOS_URL — ссылка с логотипами каналов. Можете использовать пустую строку («»), чтобы брать ссылки из оригинального плейлиста, при этом логотипы из favorites.txt будут проигнорированы.
STREAM_URL — вид ссылки на поток в финальном плейлисте. Это может быть прямая ссылка на Ace Stream или ссылка на Ace Stream Proxy. Зависит от того, какой IPTV-менеджер вы используете.
EPG_LINKS — список ссылок EPG. Все IPTV-менеджеры разные. Есть те, которые не умеют брать ссылку на EPG из плейлиста. Есть те, которые поддерживают только один источник EPG из плейлиста. Есть тем, которые не умееют объединять EPG из разных источников.

Вам будут интересны лишь STREAM_URL, LOGOS_URL, EPG_LINKS, т.к. от них зависит вид финального плейлиста. Для них даны альтернативные примеры в файле.

Заключение


В итоге вы получаете актуальный плейлист Торрент-ТВ («Суперпомойка») с собственным списком каналов, с собственными названиями каналов, с собственными группами и их произвольной сортировкой, собственными логотипами, с собственным сопоставлением EPG, с возможностью исключать дубликаты HD/SD, с сортировкой каналов внутри групп по HD/SD и названию. Нужно лишь один раз всё настроить и один раз создать файл избранных каналов. А далее все устройства в вашей домашней сети будут получать нужный плейлист по ссылке, делая «всё красиво» сразу без дополнительных настроек.

UPD. 19.02.2019:

  • Добавлена поддержка gzip при загрузке оригинального плейлиста («суперпомойка» теперь отдаёт ttv.all.tag.player.m3u только в gzip). Ваш созданный плейлист будет отдаваться, как и раньше, в text/plain.
  • Добавлена возможность брать ссылки на логотипы из оригинального плейлиста.

Телеграм канал ZZ-AceTV — zzacetv

Телеграм канал ZZ-AceTV — zzacetv

Подпишись на наш паблик ВКонтакте, чтобы самым первым получать свежие новости, узнавать об акциях и скидках.
Ну и просто быть умничкой :3

  1. Каталог телеграм каналов
Телеграм канал ‘ZZ-AceTV’

ZZ-AceTV

1’359 подписчиков
0 просмотров на пост

P2P телевидение (Ace Stream TV, Торрент ТВ). Более 2000 бесплатных тв-каналов

Детальная рекламная статистика будет доступна после прохождения простой процедуры регистрации

  • Детальная аналитика 2’793’679 каналов
  • Доступ к 808’191’325 рекламных постов
  • Поиск по 2’122’284’647 постам
  • Отдача с каждой купленной рекламы
  • Графики динамики изменения показателей канала
  • Где и как размещался канал
  • Детальная статистика по подпискам и отпискам

Telemetr.me Подписаться

Аналитика телеграм-каналов — обновления инструмента, новости рынка.

Найдено 6 постов

VPN для Android и Android TV.

Видео/гифка

Изображение

👍 Наши партнеры 🤝
📌 @IPTVtasixchannel — IPTV в зоне Tas-Ix и не только!
📌 @iptvtasix — Чат Tas-Ix
📌 t.me/+31ZmJIgMwJNkYzNi — Группа для любителей IPTV
📌 @FuckIptv — Чат плейлисты, порталы, APK
📌 @fuckiptvvv — Плейлисты, порталы, APK
📌 @Anonymous_TV_2021 — IPTV и не только!
📌 @Anonymous_TV_Chat — Чат Anonymous TV
📌 @grandtvchat @grandiptvuz — IPTV Сборник
📌 @zigfreedchat — IPTV + собственные телеканалы
📌 @kino_m3u — Плейлисты с фильмами
📌 @m3u_iptv_apk — Плейлисты
📌 @trash_iptv — Бесплатный плейлист
📌 @chdkipv — Подписки, промокоды, акции
📌 t.me/+egdoE-O3gwE2YWYy — Все про онлайн кинотеатры
📌 @iptvpleylists — Плейлисты IPTV
📌 @iptv_guard — Плейлисты IPTV
📌 @Karnei4 — Медиацентр + APK
📌 karnei4.github.io/IPTV-RU — APK и не только
📌 mediacenter.fun — Портал для форк плеера и отт
📌 @new_for_TV — Программы, онлайн кинотеатры, IPTV листы
📌 @nemnogo_dlia_TV_chat — Немного для ТВ
📌 @sntv_iptv — SNTV Cвежие плейлисты
👇👇👇👇👇👇👇
Хочу в этот список

Изображение

Remote for Android TV Box

Описание:
Это приложение поможет вам контролировать и управлять вашим Android TV Box со смартфона, используя Wi-Fi соединение. Устанавливать на Android TV Box (настройку смотреть в видео-руководстве, в самом приложении) и смартфон.

Особенности:
— Управление мышью
— Воздушная мышь (премиум)
— Dpad Навигация
— Контроль громкости
— Клавиатура (удобно при вводе длинных ссылок на плейлист)
— Экран вкл / выкл
— Передача файла

📌Google Play
📌Лёгкий PREMIUM-мод (Alex.Strannik)
📌4PDA

Изображение

Универсальная ссылка (актуально для Smart TV).

http://sh3854204.b.had.su/?search=127.0.0.1

127.0.0.1 в конце ссылки замените на ip устройства в локальной сети, на котором запущен движок Ace Stream. Например: 192.168.1.251

Изображение

Рекомендуемые настройки Ace Stream Engine.

Изображение

Найдено 6 постов

5 причин, почему использование нелегальных потоков IPTV — плохая идея

Высокая стоимость прямого эфира — как через кабельное телевидение, так и через приложения IPTV, такие как Sling и Hulu, — подталкивает все большее число людей к нелегальным потоковым приложениям, надстройкам и услугам.

Мы видим апелляцию. Если вы знаете, где искать, вы можете найти все, от спортивных трансляций до последних голливудских блокбастеров по запросу.

Но в чем опасность использования этих нелегальных услуг? К сожалению, рисков много. Давайте посмотрим поближе.

1. Финансовые убытки

Существует несколько сайтов и приложений, которые позволяют вам получить доступ к нелегальному контенту бесплатно. Однако существует также большой рынок платных нелегальных услуг. Пожалуй, наиболее заметным является сектор IPTV.

Быстрый поиск на Reddit выявляет десятки нелегальных провайдеров IPTV, которые предоставляют доступ к тысячам телеканалов в прямом эфире со всего мира.

Обычно цены на такие услуги составляют от 5 до 15 долларов в месяц с дополнительными расходами для тех, кто хочет смотреть на нескольких устройствах одновременно. И, как и многие юридические услуги, многие поставщики предлагают впечатляющие скидки, если вы подписываетесь на многомесячный пакет.

К сожалению, регистрация на длительный срок подвергает вас риску финансовых потерь. Из-за своей незаконности поставщики услуг не регулируются, а это означает, что они могут прекратить предлагать свой продукт и исчезнуть по прихоти. Опять же, Reddit предоставляет бесчисленное количество примеров того, как это происходит.

Очевидно, что существует также значительный риск того, что власти могут преследовать провайдера через суд, что опять же означает, что обслуживание может прекратиться без предупреждения, что оставит вас в кармане.

2. Вирусы и вредоносное ПО

Мы подозреваем, что большинство наших читателей — намеренно или нет — в какой-то момент своей жизни, вероятно, наткнулись на сайт, предлагающий нелегальное бесплатное телевидение в прямом эфире.

Если вы были на таком сайте, то знаете, что разработчики загружают сайты очень агрессивной рекламой. Помните, что это не реклама Google Ads или другой рекламной сети с такой же репутацией. Многие из объявлений содержат ссылки на некоторые виды вредоносных программ.

Что еще хуже, реклама преднамеренно обманчива. Загружаемые элементы маскируются под кнопки воспроизведения и значки закрытия окон, окна перемещаются по странице, а реклама накладывается друг на друга. И если вы включите блокировщик рекламы, сайты не позволят вам получить доступ к контенту.

Часто вам нужно закрыть несколько объявлений, прежде чем вы сможете приблизиться к просмотру видео. Один неверный щелчок, и вы можете непреднамеренно позволить вредоносным программам получить доступ к вашему устройству.

На самом деле проблема не ограничивается только веб-сайтами. По стопам PopcornTime последовали бесчисленные сервисы, предлагающие потоковую передачу контента P2P «на лету».

У многих таких сервисов есть приложения для таких платформ, как Android TV и Fire TV. Поскольку их нет в официальных магазинах, приложения не проходят никаких строгих проверок безопасности. Используйте их на свой страх и риск.

3. Незаконные потоки IPTV ненадежны

Низкая надежность является серьезной проблемой в индустрии нелегального потокового IPTV.

Нелегальные платные услуги IPTV часто страдают от буферизации, а многие из рекламируемых провайдером каналов обычно не работают. Помните: это услуга, за которую вы платите деньги. Если качества нет, то в чем смысл?

Помимо финансового аспекта, есть и практические вопросы. Если вы хотите посмотреть большой спортивный матч, вы никогда не можете быть уверены, что он сработает. Если сервис отключится в последнюю минуту (что часто случается из-за наплыва потенциальных зрителей), вы можете пропустить действие.

Проблема усугубляется на сайтах, предлагающих нелегальные телетрансляции. Правообладатели агрессивно преследуют такие домены, а это означает, что потоки могут исчезнуть в середине программы.

4. Просмотр нелегальных потоков приводит к судебному преследованию

Хотя телевизионные сети чаще всего преследуют тех, кто загружает видео, т. е. провайдеров источников, и в США, и в Европе были случаи, когда конечных пользователей привлекали к суду.

Это распространенное заблуждение, что просмотр незаконных потоков фильмов или прямых телетрансляций разрешен с юридической точки зрения. Аргумент утверждает, что вы не загружаете никаких данных и, следовательно, не делаете копии.

На практике потоковое видео сохраняет временные данные в кэше на вашем устройстве, предоставляя властям возможность начать судебное преследование. Небольшие шансы? Возможно. Но, безусловно, возможно.

В Европе ситуация более однозначная. В апреле 2017 года Суд ЕС постановил, что потоковая передача контента, защищенного авторским правом, без надлежащих разрешений нарушает закон.

Все еще не убеждены? Вот что Кирон Шарп, исполнительный директор Федерации против кражи авторских прав (FACT), сказал газете The Independent в июне 2017 года:

Мы ищем людей, которые предоставляют приложения и надстройки, разработчиков. И тогда мы также будем смотреть на […] конечного пользователя. Причина, по которой конечные пользователи вступают в это, заключается в том, что они совершают уголовные преступления.

И даже если вы можете выдвинуть неубедительный аргумент, что переходный период данных во время потока не является «созданием копии», помните, что если вы используете надстройки Kodi, такие как Exodus, вы работаете с программным обеспечением, которое был определен как незаконный в соответствии с «Правилом побуждения».

The Inducement Rule — это закон, принятый Верховным судом США в 2005 году, в котором говорится, что компания или веб-сайт могут быть привлечены к ответственности за распространение нелицензионного контента, если он побуждает пользователя к нарушению авторских прав».

Если вас поймают на использовании таких надстроек, маловероятно, что вы сможете защитить себя в соответствии с рекомендациями «безопасной гавани» Закона об авторском праве в цифровую эпоху. Вместо этого вам следует использовать законные службы потокового вещания в прямом эфире.

5. Проблемы с провайдером

Еще одна серьезная проблема с потоками IPTV: использование нелегальных потоковых сервисов может привести к тому, что ваш интернет-провайдер отключит ваше интернет-соединение. Хотя чаще всего эта проблема возникает при загрузке нелегальных торрентов, эта проблема также может возникнуть с незаконными потоковыми сервисами.

Впервые вы слышите об этом, когда получаете электронное письмо или письмо от вашего интернет-провайдера с объяснением нарушения. Хотя вас не загрузят после первого предупреждения, повторные нарушения могут привести к отключению соединения или снижению скорости.

Конечно, один из способов убедиться, что ваш интернет-провайдер не знает, что вы транслируете в Интернете, — это использовать высококачественный платный VPN-сервис. Здесь, в MUO, мы рекомендуем использовать CyberGhost или ExpressVPN.

Вместо этого используйте легальное IPTV

Вместо того, чтобы брать на себя риски, которые мы описали, почему бы не использовать легальный сервис потокового телевидения?

Существует множество приложений, сервисов и надстроек, которые обеспечивают законный бесплатный доступ к спортивным трансляциям, телешоу и фильмам. Они не доставят вам неприятностей и бесконечно более надежны.

Smart IPTV Player для вашего бизнеса

Fire TV | Андроид ТВ | Apple TV | Року | Смарт-ТВ-плеер | проигрыватель Windows | Веб-плеер | Mac Player

Мы покрыли все платформы для вашего бизнеса OTT и IPTV

Получите свое приложение

Мы предоставляем удобные решения для программного обеспечения OTT IPTV для вашего бизнеса с вашим брендом.

Поддерживаемые платформы

Мы предлагаем приложения для различных платформ, таких как устройства Android, Firestick, Roku, iOS, Apple TV, Windows OS, Mac OS и т. д.

Развивайте свой бизнес

Опытные разработчики Purple Smart TV создали приложение в соответствии с вашими требованиями.

Smart IPTV Player

Purple Player включает такие интеллектуальные функции, как родительский контроль, внешний проигрыватель, запись, многоэкранный режим и встроенный VPN, многопрофильный режим, P2P, функцию дополнительного профиля и т. д.

Удобный макет и быстрая навигация.

Простота использования и навигации на любом устройстве.

Поддержка нескольких устройств

Приложения Purple Smart TV поддерживают различные платформы, такие как Android TV, Android Mobile, Android Boxes, Firestick, Roku, iOS, Apple TV, ОС Windows, Mac OS, Web Player и Smart TV.

Приготовьтесь открыть для себя все преимущества и секреты IPTV-плеера Purple Smart

Функции, упрощающие работу и улучшающие взаимодействие с пользователем.​
  • Встроенная функция VPN.

    Быстрый WIFI и параметры настройки.
    Родительский контроль для блокировки/разблокировки каналов.
    Поддержка X-Stream Code API.
    Поддерживает Live TV, VOD, Catch Up (EPG).
    Функция P2P.
    Многопрофильная функция.
    Полностью настраиваемый и ребрендинг в соответствии с вашими потребностями.

  •  

Mobile Friendly

Lorem Ipsum — это просто фиктивный текст стандартного фиктивного текста полиграфической промышленности.

Creative Minds

Lorem Ipsum — это просто фиктивный текст стандартного фиктивного текста полиграфической промышленности.

начните свой бизнес

с нашими экономичными пакетами

Purple Smart TV предоставляет вам индивидуальные приложения для ребрендинга с планом и пакетами, чтобы вы могли выбирать и заказывать приложения в соответствии с потребностями вашего бизнеса.

Basic Monthly Plan

$ 49.99 Per Month

  • LIVE TV
  •  EPG GUIDE
  •  VOD & SHOWS
  •  MULTI-SCREEN
  •  CATCH-UP
  •  SPEED TEST
  •  MULTI-LANGUAGE
  •  EXTERNAL PLAYERS
  •  MULTI DNS
  •  ADMIN PANEL
  •  PUSH NOTIFICATION
  •  CUSTOM BRANDING
  •  ANDROID APP

Get now

Gold Lifetime Plan

$ 399,99 пожизненный план

  • ОБЫЧНЫЕ ФУНКЦИИ
  • ВЫДЕЛЕННЫЙ VPN
  • ПРИЛОЖЕНИЕ SMART DNS
  • ЛИЧНОЕ МЕНЮ
  • СПИСОК ПРИЛОЖЕНИЙ
  •  ADMIN PANEL
  •  ADDITIONAL HOME SCREEN
  •  OVERLAY COLOR
  •  Android MOBILE APP
  •  ROKU TV UNIVERSAL APP
  •  ANDROID TV
  •  MANAGE APP STORES

Get Now

Purple Smart IPTV PlayerPurple Lite PlayerPurple TV LauncherPurple Playlist PLayerPurple DNSPurple VOD Purple Web Player