31

Re: Написать скрипт, который бы загружал плейлист m3u8

А на мой взгляд, чем изобретать несусветные дебри, лучше разобраться почему из уже собранного архива не отображаются картинки, поскольку там уже больше 90% каналов.
Если скопировать название канала из плейлиста и переименовать какую ни то картинку и закинуть на сервер, и если после этого она не будет отображаться, значит проблема не в названии.
Читал, что для отображения картинок в какой то проге, надо чтобы плейлист формировался без названия групп в скобках. Пробовал другие плейлисты TTV с сайта Super-pomoyka, но там тоже после названия канала везде в скобках группа указана. Если с компа подкаст плейлисты подхватывает, то можно проверить, убрав в плейлисте группы.

P.S. Вспомнил где читал
http://mytalks.ru/index.php?topic=5839.0

LG 42LM640T
Профиль  Универсальный
Видишь суслика ? Нет ! И я нет ! А он есть !!!

32

Re: Написать скрипт, который бы загружал плейлист m3u8

lidars пишет:

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

Я просто попытался сказать, что может быть, имеет смысл немного усложнить алгоритм поиска картинок,
и предложил целых три варианта, вместо одного явного:
для примера - канал "24 Вести"

В том то и дело, что тут нет логической связи. Какой поиск картинок?
В каком месте он происходит (должен происходить)? У меня никакого поиска картинок нет. Я просто сохранил все картинки с одного сайта. Без разбору.
Что за канал 24 Вести? Где вы взяли это название, в плейлисте? Скрипт загрузки плейлиста должен по названию искать файлы картинок в разных источниках? Где эти источники должны располагаться? При загрузке плейлиста он должен по названию проверять наличие файлов в разных вариациях, каждого канала, причем на источниках в интернете?
Вы об этом?

Стандарта на названия каналов нет. "Первый канал" мне там найдете?

Платформа fusion используется только в некоторой линейке телевизоров Филипс и менее чем никак связана с разработчиками SmartTV. Причем тут эта платформа? Почему мы должны следовать их стандартам?
Ведь вы же используете HMS по dlna, причем тут требования fusion? Срочно читать и наводить порядок в голове! Что такое все эти понятия.
Вы бы мне ещё на альянс разработчиков dlna дали ссылку.
Какого фига вы мне даете ссылки на производителей и поддерживающих SmartTV? Указанный вами размер к ним никак не относится. И fusion. Также как и передача картинки по dlna для медиа ресурса.

Поверьте, медиа-сервер будет отдавать телеку картинки не по стандарту fusion, а так, как поддерживает ваш телек стандарт dlna.
И вообще, телеканалы это просто частный случай просто ссылки на видео.

Sony Bravia KDL-32CX523

33

Re: Написать скрипт, который бы загружал плейлист m3u8

WendyH пишет:
lidars пишет:

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

Я просто попытался сказать, что может быть, имеет смысл немного усложнить алгоритм поиска картинок,
и предложил целых три варианта, вместо одного явного:
для примера - канал "24 Вести"

В том то и дело, что тут нет логической связи. Какой поиск картинок?
В каком месте он происходит (должен происходить)? У меня никакого поиска картинок нет. Я просто сохранил все картинки с одного сайта. Без разбору.
Что за канал 24 Вести? Где вы взяли это название, в плейлисте? Скрипт загрузки плейлиста должен по названию искать файлы картинок в разных источниках? Где эти источники должны располагаться? При загрузке плейлиста он должен по названию проверять наличие файлов в разных вариациях, каждого канала, причем на источниках в интернете?
Вы об этом?

Стандарта на названия каналов нет. "Первый канал" мне там найдете?

Платформа fusion используется только в некоторой линейке телевизоров Филипс и менее чем никак связана с разработчиками SmartTV. Причем тут эта платформа? Почему мы должны следовать их стандартам?
Ведь вы же используете HMS по dlna, причем тут требования fusion? Срочно читать и наводить порядок в голове! Что такое все эти понятия.
Вы бы мне ещё на альянс разработчиков dlna дали ссылку.
Какого фига вы мне даете ссылки на производителей и поддерживающих SmartTV? Указанный вами размер к ним никак не относится. И fusion. Также как и передача картинки по dlna для медиа ресурса.

Поверьте, медиа-сервер будет отдавать телеку картинки не по стандарту fusion, а так, как поддерживает ваш телек стандарт dlna.
И вообще, телеканалы это просто частный случай просто ссылки на видео.

Мне кажется, Lidars идет "от обратного". Знаем название канала - пытаемся подобрать картинку иконки по определенному алгоритму именования.

Однако, если я правильно понимаю, основная задача как раз идентифицировать название канала отпарсив ссылку. Ссылка может иметь любой достаточно экзотический вид. Простое и универсальное решение - xml или json, с ручной правкой, остальное "от лукавого" :)

34 (2015.08.21 11:30:08 отредактировано lidars)

Re: Написать скрипт, который бы загружал плейлист m3u8

Давайте временно отложим в сторону вопрос о логотипах и поговорим о более важном,
работе с первоисточниками.

Необходим механизм, который позволит сделать работу с мульти-источниками каналов комфортной.

Все делаем по аналогии с реализованным скриптом для Banan.Tv,
для примера возьмем канал "Viasat Golf HD"
то есть по шагам это выглядит так:
1 - загружаем первый плейлист, тут все просто.
2 - загружаем второй плейлист, при этом существующие потоки не удаляем перед загрузкой второго листа!
Скрипт, перед добавлением канала из нового плейлиста, делает проверку в списке существующих каналов
на совпадение по названию!
Если обнаружено совпадение - скрипт выводит форму запроса с табличкой примерно такого содержания:
Обнаружено совпадение по названию канала:
1 - "Viasat Golf HD" - видеокодек битрейт размер кадра аудиокодек битрейт
2 - "Viasat Golf HD" - видеокодек битрейт размер кадра аудиокодек битрейт
Выводится должно c checkbox для возможности выбора
Ниже три кнопки - Удалить - Добавить - Игнорировать

Если пользователь выбирает Игнорировать - пропускаем новую версию канала, без добавления
Если пользователь выбирает Удалить      - удаляем существующие выбранные каналы из списка
Если пользователь выбирает Добавить     - тогда меняем структуру:
создаем папку "Viasat Golf HD"
внутри папки создаем два потока, например:
Источник 1
Источник 2
Визуально для пользователя ТВ это будет выглядеть идентично готовому решению для Banan.Tv

Приложение:
Пример 3-х источников для канала "Viasat Golf HD", все три источника полностью работоспособны
для региона Россия, провайдер Билайн
#EXTM3U
#EXTINF:-1,Viasat Golf HD
http://hlsstr04.svc.iptv.rt.ru/hls/CH_C … ?version=2
#EXTINF:-1,Viasat Golf HD
95478b1fef63e9ffc2c17e0ddf19d923d46efc2a
#EXTINF:-1,Viasat Golf HD
rtp://@233.33.221.33:5050

35

Re: Написать скрипт, который бы загружал плейлист m3u8

lidars пишет:

Необходим механизм, который позволит сделать работу с мульти-источниками каналов комфортной

Ок. Кто возьмётся?
Я не пользуюсь torrent tv ни телевизионными подкастами. Мне это как-то не очень интересно.
Со своей стороны могу помочь консультированием по кодингу и всяческим опытом. Если найдутся энтузиасты, могу помочь.

Например, какие я вижу трудности.
В примере у вас три разных источника с разным протоколом обмена, т.е. ну совсем. Для них всех нужно использовать разные профили транскодирования. А ведь многие для IP-TV (протокол rtp:) разные профили используют, подкаст автоматом какой должен выставлять?
Источники, скорее всего, будут иметь почти одинаковый список каналов (какая-то часть). И надо будет отвечать на вопросы раз 150.
Плюс, чтобы показать видео-кодек и битрейт, нужно считать свойства передаваемых потоков, а для этого ссылку в HMS нужно перед этим по-любому добавить. И представляю сколько это времени займёт для ссылок вида 95478b1fef63e9ffc2c17e0ddf19d923d46efc2a (это же TorrentTV?), пока он там сидов наберёт.

А так, задавайте вопросы как реализовать то-то или то-то, пожалуйста, отвечу, если знаю. Например как вывести окно с вопросом или как загрузить что-то или как считать свойства.

Sony Bravia KDL-32CX523

36

Re: Написать скрипт, который бы загружал плейлист m3u8

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

Источники специально выбраны с разным протоколом,
ибо это и есть реальность.

Можно, конечно, сделать все в ручном режиме:
загрузить 3 разных листа по 1500 записей, получить инфу о каналах,
сохранить в виде Excel,
повторить данную процедуру 3 раза,
получить итоговую таблицу из 4500 записей,
отсортировать по качеству,
удалить мусор,
оставить 180 достойных внимания каналов,
загрузить готовый плейлист на ТВ.

Кому не хочется отвечать на вопросы по 150 раз,
могут отключить эту возможность, например, через параметр ключа

И да, для получения характеристик потока придется запускать mediainfo ...
И да, это будет не быстро ...

Но если качественная картинка на ТВ никого, кроме меня, не интересует,
то можно и не делать в скрипте работу с мульти-источниками каналов ...

Те, кого все устраивает, могут заходить на сайт-посредник, типа Banan.Tv
и смотреть кино прямо на их сайте.

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

37 (2015.08.24 11:56:08 отредактировано lidars)

Re: Написать скрипт, который бы загружал плейлист m3u8

Решил освежить тему про создание скрипта для работы с плейлистами.

Приведу пример работы другого человека, из Новосибирска,
он сделал готовое решение два года назад, дата последней версии скрипта 02.08.2015.

Хотя скрипт сделан для другого медиа-сервера, функционал поистине впечатляет,
опишу, используя описание от разработчика (пример плейлиста в комплекте!):

Возможно смотреть 177 ТВ каналов с актуальной программой из любой точки мира!
Всего доступно, для стабильного просмотра, 195 каналов.

Назначение:
1. формирование EPG для IPTV
2. формирование плейлиста для просмотра ТВ через прокси-сервер

ОС (проверенные):
Windows 7, 8.1 (в том числе кириллические учётные записи),
Android 4.х.х,
OpenELEC 5.08,
Ubuntu 14.04,
OSMC

Предыстория создания.
Заинтересовавшись когда-то IPTV перепробовал 1000 и одну программу для просмотра.
Дальше, больше. Захотелось смотреть с программой передач.

Возможности скрипта:
1.  формирование EPG для выбранного города России, Казахстана, Украины, Беларуси (всего 123 города);
2.  выбор количества передач в EPG для канала (максимум на сутки со времени запуска скрипта);
3.  выбор каналов для загрузки программы с Яндекса;
4.  создание плейлиста по шаблону, для выбранного города и провайдера с возможностью выбора UDP или PROXY;
5.  сортировка каналов в плейлисте по тематическим группам;
6.  обновление плейлистов, адресов PROXY через интернет при запуске скрипта;
7.  поиск рабочего PROXY для просмотра ТВ через udpxy, если провайдер не вещает в вашу сеть или услуга IPTV заблокирована;
8.  загрузка логотипов выбранных каналов;
9.  автоматическая настройка параметров IPTV;
10. обновление баз EPG IPTV без перезагрузки;
11. работает в фоновом режиме.

Имеем на выходе, через 30 секунд после запуска скрипта:

+ открыть спойлер

https://hms.lostcut.net/misc.php?action=pun_attachment&item=289

Настройки скрипта.
Вам достаточно установить и запустить скрипт. Всё!
Закладка <Настройка скрипта>
1. Город - выбрать из списка Ваш город или оставить по умолчанию
2. Часовой пояс - выбрать из списка часовой пояс Вашего города.
3. Количество передач в программе - при первом запуске лучше оставить 1,
   т.к. помимо программы из интернета грузится всё, что не хватает скрипту, например логотипы каналов.
4. Сброс параметров скрипта - потребуется в тех случаях,
   когда Вы долго и усердно экспериментировали со скриптом и скрипт уже не понимает, что, собственно, Вы от него хотите.

Закладка <Настройка плейлиста>
Настройка требуется однократно, если ваш провайдер предоставляет Вам услугу IPTV и он есть в списке шаблонов.
Если его там нет, а услуга есть, то Вы можете создать свой плейлист
Для других случаев без PROXY не обойтись и время от времени придётся настраивать новый плейлист.
Если опция <Создать плейлист> неактивна, то настройка других опций не требуется, за исключением загрузки логотипов.
1. Создать плейлист - обязательная опция при первом запуске. Позволяет создать плейлист по заданному шаблону.
2. Шаблон плейлиста - выбирается из списка для нужного города и провайдера.
   Если у Вас свой плейлист, то выбирайте <Без адреса>. В итоге будет сформирован EPG для всех доступных каналов в вашем городе.
   Для Новосибирска например, их 295.
3. Смотреть TV через PROXY - опция выбирается в том случае, если ваш провайдер не предоставляет услуги IPTV или она у вас не подключена и позволяет найти в сети работающий udpxy.
   В процессе работы потребуется подтверждение об использовании найденного PROXY.
4. Обновить шаблон перед: - лучше обновлять, т.к. провайдер может время от времени менять сетку вещания.
5. Включить каналы без программы - провайдер может вещать каналы, которых нет в ТВ программе,
   при выборе данной опции, Вы сможете их смотреть, но программы на них не будет.
6. Загрузить логотипы каналов - позволяет загрузить/обновить логотипы телеканалов.
7. Сортировать каналы по группам - сортирует каналы по тематическим группам или все каналы идут общим списком.

Подтверждённые страны, в которых смотрят ТВ с помощью этого скрипта:

Россия
Беларусь
Бельгия
Германия
Израиль
Испания
Казахстан
Канада
Латвия
Литва
Молдова
Норвегия
Украина
Финляндия
Франция
Эстония

дата последней версии скрипта     02.08.2015
скачано количество раз        885

Приложение:
Исходный код данного скрипта script.epg.iptv.1.2.3.zip

Итоговый вопрос - возможно сделать показ телепрограмм для загруженного плейлиста на платформе HMS ?

Прикреплённые файлы сообщения

script.epg.iptv.1.2.3.zip 48.95 kb, скачивалось 678 раз, начиная с 2015.08.24

script.epg.iptv.jpg 166.76 kb, скачивалось 333 раза, начиная с 2015.08.24

38

Re: Написать скрипт, который бы загружал плейлист m3u8

lidars пишет:

Итоговый вопрос - возможно сделать показ телепрограмм для загруженного плейлиста на платформе HMS ?

Нет. Это если коротко.

Куда уж нам тягаться с возможностями Kodi. Тут всё ограничивается стандартом DLNA - медиаплеер (телевизор) запрашивает список папок или файлов и отображает их. Может файл воспроизвести. Вот и всё.
А остальные приколы, типа файлов, при запуске которых отображается картинка с информацией о фильме - это всё извращения, которые родились от нездоровой фантазии некоторых. Потому как сначала формируется картинки из текста и фона на сервере с помощью imagick на php, полученная картинка скачивается и из неё делается видео ролик.

В отличии от Kodi по dlna не сделать навигацию по меню или интерактивное взаимодействие. Только список файлов.

Sony Bravia KDL-32CX523

39

Re: Написать скрипт, который бы загружал плейлист m3u8

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

После этого хотелось бы сохранить готовый список опять в формате .m3u,
но пока мы можем это сделать только в формате .hdf

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

40 (2015.09.13 21:12:07 отредактировано lidars)

Re: Написать скрипт, который бы загружал плейлист m3u8

Решил обновить тему вопросом про показ телепрограммы.

Для автоматического показа программы необходимо использовать тег вида tvg-name,
в котором название должно совпадать с официальным названием канала в телегиде.

То есть = простое решение вопроса примерно такое:
1 - Загружаем плейлист
2 - Вычисляем название канала
3 - Автоматом добавляем логотип
4 - Автоматом добавляем тег tvg-name

Вариант - сохраняем плейлист и заново загружаем.
После этого логотипы и программа передач должна появиться.

Прикладываю пример плейлиста, который работает автоматом на любых плейерах,
изображение может не показывать из-за ограничений провайдера,
но логотипы и программа на 287 каналов показываются Автоматом !

Прикреплённые файлы сообщения

koptevo.net.m3u 44.85 kb, скачивалось 775 раз, начиная с 2015.09.13

41

Re: Написать скрипт, который бы загружал плейлист m3u8

lidars пишет:

После этого логотипы и программа передач должна появиться.

Где?
Я так понимаю, идёт речь об использовании плейлистов не в HMS, а на устройствах? Тогда это вообще проще использовать не подкасты и скрипты HMS, а написать отдельный конвертер для всяческих плейлистов. Например на C#. Потому как в скриптах для программы язык очень ограничен. Особенно если нужен графический интерфейс.
Или на любом другом языке написать консольный скрипт или программу.

Или опишите, что вы хотите в целом.

lidars пишет:

Прикладываю пример плейлиста, который работает автоматом на любых плейерах,
изображение может не показывать из-за ограничений провайдера,

Что за провайдер?
(Ростелеком - не работает).

Sony Bravia KDL-32CX523

42 (2015.09.14 22:57:43 отредактировано lidars)

Re: Написать скрипт, который бы загружал плейлист m3u8

Вопрос был именно для HMS.

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

1 - Загружаем свой плейлист
2 - Выбираем название канала из строки
3 - Автоматом добавляем логотип
4 - Автоматом добавляем тег tvg-name

Вариант - сохраняем плейлист и заново загружаем.
После этого логотипы и программа передач должна появиться.

В начале плейлиста указываем источник программы,
как в выложенном примере - это записывается примерно таким тегом
url-tvg="http://www.koptevo.net/tv/gxml/jtv.zip"

Если мы распакуем архив /jtv.zip - внутри будут файлы программ вида, например
Первый_HD.ndx
Первый_HD.pdt

Программа переводится в текстовый формат с помощью стандартной утилиты guidegen,
архив и описание формата приложены.

После этого все элементарно, как в работе с внешним сайтом  тучка.тв/банан.тв/кабан.тв и т.д.

К стандартному выводу тв-канала из плейлиста добавляем 2-4 строки из телепрограммы ...

Смотрим на ТВ свои любимые передачи ...

Как-то так оно видится ...

Прикреплённые файлы сообщения

guidegen.zip 22.34 kb, скачивалось 459 раз, начиная с 2015.09.14

43

Re: Написать скрипт, который бы загружал плейлист m3u8

Уважаемый WendyH, а как переделать скрипт получения плейлистов для pls
Структура у них отличная от плейлистов m3u.
Заранее спасибо.

WD TV LS+Sony KDLS5600/Samsung UEF5400/Sony PS 3/Yamaha RX-V379/hms 2.33
Кладовая HMS (список полезных ссылок и инструкций)
https://hms.lostcut.net/misc.php?action=pun_attachment&amp;item=2914&amp;download=0
Временно отсутствую

44

Re: Написать скрипт, который бы загружал плейлист m3u8

Big Dog пишет:

как переделать скрипт получения плейлистов для pls
Структура у них отличная от плейлистов m3u.

Например, взять взять код подкаста отсюда и немного переделать его для структуры pls. Давайте пример pls плейлиста, выложу для него скрипт как пример.

Sony Bravia KDL-32CX523

45

Re: Написать скрипт, который бы загружал плейлист m3u8

int gnTotal=0,i;
string tmp;
// ----------------------------------------------------------------------------
void LoadPlaylist() {
  string sData, sLink, sName, sImg, sLength; THmsScriptMediaItem Item;

  // Если ссылка плейлиста начинается на http, то скачиваем, если нет - загружаем как локальный файл
  if (LeftCopy(mpFilePath, 4)=='http') sData = HmsDownloadUrl(mpFilePath, '', true);  // Загрузка плейлиста из интернета
  else sData = HmsStringFromFile(mpFilePath);         // Загрузка плейлиста с локального диска
  
  sData = HmsUtf8Decode(sData);   // Декодируем из UTF-8 кодировки
  HmsRegExMatch('NumberOfEntries=(.*?)[\\r\\n]',sData,tmp); // Получаем кол-во элементов из плейлиста
  gnTotal = StrToInt(tmp);

  //Проходим по плейлисту в цикле от 1 до gnTotal
  for (i=1; i<=gnTotal; i++) {
    HmsRegExMatch3('File'+IntToStr(i)+'=(.*?)[\\r\\n]+Title'+IntToStr(i)+'=(.*?)[\\r\\n]+Length'+IntToStr(i)+'=(.*?)[\\r\\n]',sData,sLink,sName,sLength); // Получаем название, ссылку с premium ключом и длительность

    // Пытаемся получить ссылку на картинку
    sImg = 'http://wonky.lostcut.net/TVimg/'+HmsPercentEncode(sName, '"A-Z", "a-z", "0-9", "-", ".", "_", "~", "\'"')+'.png';

    // Создаём ссылку
    Item = HmsCreateMediaItem(sLink, FolderItem.ItemID);
    Item[mpiTitle    ] = sName; // Наименование
    Item[mpiThumbnail] = sImg;  // Картинка
    Item[mpiTimeLength] = sLength; // Длительность
    Item[mpiAlbum] = sName;
    Item[mpiAuthor     ] = 'classic radio';
    Item[mpiAlbumArtist] = 'classic radio';
}

    HmsLogMessage(1, mpTitle+': создано ссылок '+IntToStr(gnTotal));
    }
///////////////////////////////////////////////////////////////////////////////
//                      Г Л А В Н А Я   П Р О Ц Е Д У Р А                    //
// ----------------------------------------------------------------------------
{
  FolderItem.DeleteChildItems(); // Удаляем созданные ранее ссылки
  LoadPlaylist();                // Вызов процедуры загрузки плейлиста и создания из него ссылок
}
Спасибо сказали: Big Dog1