xupnpd - eXtensible UPnP agent

Используем пакеты, расширяющие возможности оборудования
zxsavage
Сообщения: 1
Зарегистрирован: 18 апр 2016, 23:33

Сообщение zxsavage » 18 дек 2016, 18:56

Накатал тут скрипт на коленке для преобразования плейлиста edem.tv в формат xupnpd. Использую на Entware-Keenetic.
Может кому пригодится.
Скрипт:
  • скачивает плейлист
  • перемещает название группы в group-title из EXTGRP - тем самым отображаются группы каналов
  • добавляет plugin=hls в EXTM3U
  • помещает плейлист в xupnpd и делает reload
Скрипт использует bash и wget - необходимо их доустановить

Код: Выделить всё

#!/opt/bin/bash

# Скрипт для преобразования плейлиста Эдем ТВ в формат xupnpd by zxsavage

# Прямая ссылка на плейлист без авторизации
link="https://edem.tv/playlists/uplist/token/edem_pl.m3u8"

# Адрес интерфейса xupnpd с указанием порта
xupnpdhttp="http://192.168.1.1:4044"

workdir="/tmp"
xupnpdpath="/opt/share/xupnpd"
infile="$workdir/in.m3u"
outfile="$workdir/out.m3u"
xupnpdpl="$xupnpdpath/playlists/edemtv.m3u"

function WriteOut {
    nameout="#EXTINF:-1 group-title=\"$group\",$name"
	echo "$nameout" >> $outfile
	echo "$address" >> $outfile
	nameout=""
    name=""
    address=""
	group=""
}

wget -O "$infile" "$link"
if [[ $? -ne 0 ]] ; then
	echo "Failed to download playlist. Script stopped."
	/opt/bin/logger "[ERROR] Failed to download playlist for xupnpd"
    exit 1
fi

echo "#EXTM3U plugin=hls" > $outfile
shopt -s nocasematch
while IFS= read -r line; do
	line="$(echo $line | tr -d '\n')"
	line="$(echo $line | tr -d '\r')"
	if [[ "$line" == "#EXTM3U"* ]]; then
		continue
	fi
	if [[ "$line" == "#EXTINF"* ]]; then
		name="$(echo -ne ${line#*,})"
		continue
	fi
	if [[ "$line" == "#EXTGRP"* ]]; then
		group="$(echo -ne ${line#*:})"
		continue
	fi
	address="$line"
	WriteOut
done < "$infile"

cp $outfile $xupnpdpl
wget -q -O - "$xupnpdhttp/ui/api?action=reload"
/opt/bin/logger "[INFO] Succesfully created playlist for xupnpd."
rm $infile
rm $outfile


UPD
Настраивал заново, решил сделать пошаговое описание

Для начала обновим систему

Код: Выделить всё

opkg update
opkg upgrade


Установим необходимые пакеты

Код: Выделить всё

opkg install xupnpd wget bash

По вкусу

Код: Выделить всё

opkg install nano

И сделаем его редактором по умолчанию

Код: Выделить всё

echo "export EDITOR=/opt/bin/nano" >> /opt/etc/profile


Установим корневые сертификаты, чтобы wget не ругался на то, что не может проверить сертификат https

Код: Выделить всё

mkdir -p /opt/etc/ssl/certs
echo "export SSL_CERT_DIR=/opt/etc/ssl/certs" >> /opt/etc/profile
opkg install ca-certificates

Для ленивых: wget можно просто запускать с опцией --no-check-certificate

Создадим наш скрипт

Код: Выделить всё

mkdir /opt/root/edemtv
cd /opt/root/edemtv
nano create-playlist.sh

Копируем содержимое скрипта, заменив ссылку на плейлист и на xupnpd.
Выходим из nano, сохраняем Ctrl+X -> Y

Код: Выделить всё

chmod +x create-playlist.sh


Можно проверить, все ли работает

Код: Выделить всё

./create-playlist.sh


Если все работает, то создадим периодическое задание, чтобы плейлист обновлялся
Установим cron по первому варианту
Создадим задание с периодичностью раз в день, в 6 утра.

Код: Выделить всё

0 6 * * * /opt/bin/bash /opt/root/edemtv/create-playlist.sh > /opt/root/edemtv/log.txt 2>&1


Можно идти смотреть ТВ :)

Giperion85
Сообщения: 11
Зарегистрирован: 10 окт 2016, 23:12

Сообщение Giperion85 » 03 янв 2017, 16:27

kvi7 писал(а):Источник цитаты Feed data: collections/oscar помогло. Плейлист формируется и xupnpd показывает на тв и компьютере.Спасибо!
Ps.По годам не работает.

плагин для ivi все еще рабочий? делаю то же самое, говорит нет элементов для отображения

mesb
Сообщения: 238
Зарегистрирован: 06 сен 2015, 00:47

Сообщение mesb » 06 янв 2017, 13:42

Тэкс, или у меня лыжи не едут, или ещё что.
У кого-нибудб hls плагин с такой вот ссылкой:
http://cdn-01.bonus-tv.ru:9090/wfc/wfhd ... ylist.m3u8

Работает?

Немогу найти нормального вещания world fashion как eu так и ru не в hls этого канала.
В банальный плейлист с предыдущей страницы с указанием hls плагина просто ничего не делает.

Giperion85
Сообщения: 11
Зарегистрирован: 10 окт 2016, 23:12

Сообщение Giperion85 » 06 янв 2017, 21:54

mesb писал(а):Источник цитаты Тэкс, или у меня лыжи не едут, или ещё что.
У кого-нибудб hls плагин с такой вот ссылкой:
http://cdn-01.bonus-tv.ru:9090/wfc/wfhd ... ylist.m3u8

Работает?

Немогу найти нормального вещания world fashion как eu так и ru не в hls этого канала.
В банальный плейлист с предыдущей страницы с указанием hls плагина просто ничего не делает.

у эдема ссылки аналогичные, но в отличие от вашей, с hls плагином все работает нормально

Аватара пользователя
ZigZag
Сообщения: 285
Зарегистрирован: 28 окт 2015, 04:43

Сообщение ZigZag » 13 янв 2017, 07:39

Пытаюсь скормить Samsung UE32J5520, проксированный сквозь udpxy и xupnpd стрим, а телевизор его упорно игнорирует - пишет "Проверьте подключение к сети." при этом "*/proxy/*" линк xupnpd скормленный vlc идёт на ура.

Попытки скормить через "прокси" xupnpd avi-видеофайл, 1Гб+ который лежит на внешнем сервере, завершились с тем же результатом :( Запрос того же файла через прокси xupnpd через vlc как и ранее проходит без проблем.

Максимум что удалось - пропустить через xupnp ролики с внешних ресурсов размером 50 - 200 мб, хотя и здесь не обошлось без ложки дёгтя, просмотру мешали постоянные паузы (по экрану бегают шарики) во время которых ТВ вероятно кэшировал контент. Помимо этого, выяснилось, что xupnpd в теле плейлистов поддерживает ссылки которые содержат не более 255 символов (остальное он обрезает).

Есть мысли как бороться с подобным поведением ТВ и xupnpd ?
Keenetic Omni II [v2.13.C.0.0-1]; Zyxel Keenetic [V1.00(BFW.4.4)D0]

sysmer
Сообщения: 31
Зарегистрирован: 24 авг 2015, 16:47

Сообщение sysmer » 18 янв 2017, 12:47

Привет всем, захотелось мне ютуб посмотреть на xupnpd, а никак( Попробывал, как в былые времена с vlc выдрать функцию расшифровки ссылки на видео, https://github.com/videolan/vlc/blob/ma ... outube.lua, не получилось. Если раньше яваскрипт код для расшифровки скачивался как строка, то теперь vlc его качает и работает с ним как userdata, я не понял как это можно сделать самому в плагине xupnpd. Если кто разберется с этим будет молодец. А посему решено было использовать внешний получатель прямых ссылок на видео ютуба. Выбрал я сайт keepvid.com, и переписал плагин. Проверил, работает! Даже на vevo видео, которое обычно самое секретное нормально дает ссылку. Посему пользуйтесь наздоровье. Видео тянется макимально доступное по качеству, но не выше 720.
Не забудте апи ключь свой прописать в плагине.
У вас нет необходимых прав для просмотра вложений в этом сообщении.

mesb
Сообщения: 238
Зарегистрирован: 06 сен 2015, 00:47

Сообщение mesb » 18 янв 2017, 20:57

sysmer писал(а):Источник цитатыПроверил, работает!
Не забудте апи ключь свой прописать в плагине.

Сделал фид на поиск channel/mostpopular и обломился с:
./plugins/xupnpd_youtube.lua:291: attempt to index global 'close' (a nil value)

mesb
Сообщения: 238
Зарегистрирован: 06 сен 2015, 00:47

Сообщение mesb » 18 янв 2017, 21:35

Вобщем там где прописывается ключь, зря стёрли конструкцию &key=*** и оставили просто *** - для скриптов это важно было.
Плюс в функции function curl( data ) пришлось закомментить close:data() - тогда оно хоть что-то сделало.

P.S. Если не запамятую, 19 числа тогда выложу версию со своим workaround.

sysmer
Сообщения: 31
Зарегистрирован: 24 авг 2015, 16:47

Сообщение sysmer » 18 янв 2017, 22:58

Прошу прощения, свой ключ стирал и лишку стер, close data убрал, тестите, у меня работает прекрасно.
У вас нет необходимых прав для просмотра вложений в этом сообщении.

mesb
Сообщения: 238
Зарегистрирован: 06 сен 2015, 00:47

Сообщение mesb » 18 янв 2017, 23:58

sysmer, иии спасибо!

Кинетик гига, всё пашет норм. :)


Вернуться в «Entware/Qnapware/Optware/Zyxware - обсуждаем репозитории пакетов»

Кто сейчас на конференции

Всего 1 посетитель :: 1 зарегистрированный, 0 скрытых и 0 гостей (основано на активности пользователей за последние 5 минут)
Больше всего посетителей (162) здесь было 16 ноя 2019, 18:33

Сейчас этот форум просматривают: Bing [Bot] и 0 гостей