Dorik1972 Posted April 22, 2017 Share Posted April 22, 2017 (edited) Есть огромная надежда что в скором времени стартанет и заработает сборка noxbit для MIPSel -> http://mytalks.ru/index.php?topic=6459.0 Описываю полный процес автоматизации использования noxbit движка на обычном бытовом роутере с Entware3x на борту... Кое что сам наваял, кое-что раньше успел создать Alex(c) для малинки и я "маленько" адаптировал opkg install crone lighttpd lighttpd-mod-alias lighttpd-mod-compress curl 1) crone - используем для выполнения скрипта "заливки" плейлиста из своего рабочего кабинета раз в сутки, чаще просто нету смысла, например каждые 5.00 утра (в contab - 01 5 * * * root /opt/bin/run-parts /opt/etc/cron.daily) ... В crone.daily создаем файлик noxbit_ttv права 755 ! #!/opt/bin/sh prefix="/opt" PATH=${prefix}/bin:${prefix}/sbin:/sbin:/bin:/usr/sbin:/usr/bin M3U_DIR="$prefix/home/ttv-list" NOX_M3U="$M3U_DIR/NoxLive-TTV.m3u" NOX_DIR="$prefix/tmp" NOX_FILE="$NOX_DIR/ttv-m3u/noxbit.m3u" NOX_FILE_GZ="$NOX_FILE.gz" ## Ссылка из вашего личного кабинета на "Скачать в виде полноценного статичного файла" ## В настройках плейлиста ОБЯЗАТЕЛЬНО поставить гапочку напротив "Категории каналов тегами #EXTGRP в m3u" NOX_LIST_URL="http://asproxy.net/n/blablablabla" ## IP Вашего роутера или устройства на котором установлен noxbit URL_IP="192.168.1.1" STAT_OLD= if [ -z "$NOX_LIST_URL" ]; then echo "Error! Unknown playlist address Noxbit." exit fi mkdir -p $NOX_DIR/ttv-m3u if [ -f "$NOX_FILE_GZ" ]; then STAT_OLD=`stat $NOX_FILE_GZ | grep 'Modify:'` fi curl -s --connect-timeout 5 --max-time 20 -R -z "$NOX_FILE_GZ"-o "$NOX_FILE_GZ" -H "Accept-Encoding: gzip" "$NOX_LIST_URL" if [ ! -f "$NOX_FILE_GZ" ]; then echo "Error! Could not load Noxbit playlist." exit fi STAT_NEW=`stat $NOX_FILE_GZ | grep 'Modify:'` if [ "$STAT_OLD" == "$STAT_NEW" ]; then echo "Done! You already actual playlist." exit fi gunzip -c "$NOX_FILE_GZ" > "$NOX_FILE" mkdir -p $M3U_DIR echo '#EXTM3U url-tvg="http://1ttvapi.top/ttv.xmltv.xml.gz"' > $NOX_M3U cat $NOX_FILE | while read -r LINE ; do echo $LINE | grep '^#EXTINF' > /dev/null 2>&1 if [ $? -eq 0 ]; then CH_LOGO=`echo $LINE | awk '{print $2}' | sed 's/,.*//; s/tvg-logo=//; s/[ \t]*$//'` CH_NAME=`echo $LINE | awk -F\\, '{print $2}' | sed 's/(на модерации)//; s/^[ \t]*//; s/[ \t]*$//'` CH_CAT= CH_CID= continue fi echo $LINE | grep '^#EXTGRP' > /dev/null 2>&1 if [ $? -eq 0 ]; then CH_CAT=`echo $LINE | awk -F\\: '{print $2}' | sed 's/^[ \t]*//; s/[ \t]*$//'` CH_CID= continue fi echo $LINE | grep '^http' > /dev/null 2>&1 if [ $? -eq 0 ]; then CH_CID=`echo $LINE | awk -F\\= '{print $2}' | sed 's/^[ \t]*//; s/[ \t]*$//'` fi if [ -n "$CH_LOGO" -a -n "$CH_NAME" -a -n "$CH_CAT" -a -n "$CH_CID" ]; then echo "#EXTINF:-1 group-title=\"$CH_CAT\" tvg-name=\"$CH_NAME\" tvg-logo=$CH_LOGO,$CH_NAME" >> $NOX_M3U echo "http://${URL_IP}:6689/stream?cid=${CH_CID}" >> $NOX_M3U CH_LOGO= CH_NAME= CH_CAT= CH_CID= fi done rm -rf $NOX_FILE echo "Done! Playlist created." exit Итог "сей песни" плейлист в формате m3u со всякими "плюшками" в /opt/home/ttv-list/NoxLive-TTV.m3u В скрипте есть поддержка хедеров If-Modified-Since и Last-Modified , которые пока что не поддерживаются для ссылки на плейлист noxbit в личном кабинете TTV.... И это в корне НЕВЕРНО, думаю что соответствующий департамент по "шурику" подправит.... чтобы не "задалбывать" скачивая одно и то же до "посинения" ... Просто уверен что многие поставят скачивание не раз в сутки .. а каждую минуту для надежности ))) и попадут в БАН ! .... А вот если добавить поддержку If-Modified-Since и Last-Modified .... то долбите дятлы ! ДЛОБИТЕ !!!! + Если соответствующий "департамент" поднатужится и все таки включит JSON формат для плейлистов noxbit , то в скрипте можно будет использовать утилитку jq и "разгребаться" будет за несколько секунд, а так "ковыряем" текстовый файл ... время обработки сек 30-40 .... 2) lighttpd - будем использовать как "маленький и шустрый" локальный вебсерверок для раздачи плейлиста всем устройствам домашней сети + можно соседу, дабы окупить затраты на электричество потребляемое роутером. Редактируем lighttpd.conf вот так (я постарался максимально прокомментировать по тексту конфига что для чего) #Перечисляем модули, которые будет пожгружать при старте lighttpd server.modules += ( "mod_compress", "mod_alias", ) #Документ рут по умолчанию server.document-root = "/opt/home/www" server.upload-dirs = ( "/opt/var/cache/lighttpd/compress/uploads" ) alias.url += ( "/playlist" => "/opt/home/ttv-list", ) #Описываем лог файл куда будут писаться ошибки server.errorlog = "/opt/var/log/lighttpd/error.log" #Файл для записи обработанных запросов mod_accesslog #accesslog.filename = "/opt/var/log/lighttpd/access.log" #accesslog.format = "%h %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" #PID файл server.pid-file = "/opt/var/run/lighttpd.pid" #Пользователь и группа от имени которых работает lightttpd #server.username = "http" #server.groupname = "www-data" #Метод обработки запросов #server.event-handler = "freebsd-kqueue" #Имена файлов, которые будут отдаваться по умолчанию, если имя файла не задано в запросе index-file.names = ( "index.php", "index.html", "index.htm", "default.htm", "index.lighttpd.html" ) #Расширения файлов которые надо отдавать на обработку FastCGI процессам #static-file.exclude-extensions = ( ".php", ".pl", ".fcgi" ) #Запрещенные для отдачи имена файлов mod_access #url.access-deny = ( "~", ".inc" ) # mod_compres compress.cache-dir = "/opt/var/cache/lighttpd/compress/" compress.allowed-encodings = ("bzip2", "gzip", "deflate") compress.filetype = ("application/javascript", "audio/mpegurl", "text/css", "text/html", "text/plain" ) ### Options that are useful but not always necessary: #server.chroot = "/" #Принимаем запросы на заданном порту server.port = 81 #IP адрес на котором принимаем запросы server.bind = "192.168.1.1" #Идентификатор сервера server.tag = "lighttpd" #server.errorlog-use-syslog = "enable" #server.network-backend = "write" ### Use IPv6 if available #include_shell "/opt/share/lighttpd/use-ipv6.pl" dir-listing.encoding = "utf-8" server.dir-listing = "enable" include "/opt/etc/lighttpd/mime.conf" include_shell "cat /opt/etc/lighttpd/conf.d/*.conf" Тут кое-что "выключено"-заREMлено... если Вам надо снимите '#' нужных вам "фичах" Итог "сей песни" ... работающий web-серверок который по ссылке http://192.168.1.1:81/playlist/NoxLive-TTV.m3u будет отдавать вам плейлист для всех ваших девайсов дома Поскольку в lighttpd я включил поддержку компресии ... то в crone.daily нужно добавить еще один скриптик, который будет подчищать за lighttpd . В crone.daily создаем файлик lighttpd_clean права 755! #!/opt/bin/sh prefix="/opt" PATH=${prefix}/bin:${prefix}/sbin:/sbin:/bin:/usr/sbin:/usr/bin cache=/opt/var/cache/lighttpd if test -d "$cache/compress"; then find $cache/compress -depth -type f -atime +0 -print0 | xargs -0 -r rm fi if test -d "$cache/uploads"; then find $cache/uploads -depth -type f -atime +0 -print0 | xargs -0 -r rm fi Перегружаем роутер ... ну или стартуем "руцями" crone и lighttpd и наслаждаемся ::) При желании lighttpd.conf можно дополнить и "припудрить" паролированием доступа, геолокацией, и т.д. как говориться книга Вам в помощь -> https://redmine.lighttpd.net/projects/lighttpd p.s. Дання "лабораторка" тестировалась и прекрасно фунциклирует на Zyxel Keenetic Ultra II c Entware3x .... Критику и дополнения - ПРИЕМЛЮ ) Edited May 25, 2017 by Dorik1972 3 Quote Link to comment Share on other sites More sharing options...
zyxmon Posted April 22, 2017 Share Posted April 22, 2017 Еще раз объясняю - NOXBIT никакого отношения к Entware не имеет. От слова СОВСЕМ. Своими заголовками Вы только путаете других. То, что Вы изложили - это автоматизация скачивания файла (в данном случае плейлиста) по расписанию и его "раздача" через web сервер. Quote Link to comment Share on other sites More sharing options...
Dorik1972 Posted April 22, 2017 Author Share Posted April 22, 2017 (edited) 3 минуты назад, zyxmon сказал: Еще раз объясняю - NOXBIT никакого отношения к Entware не имеет. От слова СОВСЕМ. Своими заголовками Вы только путаете других. То, что Вы изложили - это автоматизация скачивания файла (в данном случае плейлиста) по расписанию и его "раздача" через web сервер. Спс за замечание .... заголовок заменю ... на "Автоматизация раздачи плейлиста для noxbit по расписанию" ? или предложите название темы. Думаю она представляет интерес "как готовое решение" Edited April 22, 2017 by Dorik1972 Quote Link to comment Share on other sites More sharing options...
zyxmon Posted April 22, 2017 Share Posted April 22, 2017 Название сами придумайте. Наверняка можно таким образом и от edem, и от ottclub плейлисты раздавать. Quote Link to comment Share on other sites More sharing options...
Dorik1972 Posted April 22, 2017 Author Share Posted April 22, 2017 Только что, zyxmon сказал: Название сами придумайте. Наверняка можно таким образом и от edem, и от ottclub плейлисты раздавать. легко ... думаю "страждущие" и "нуждающиеся" сам под себя "подковыряют" готовое решение. Все же проще чем "с нуля" самому писать ... или ? Quote Link to comment Share on other sites More sharing options...
zyxmon Posted April 22, 2017 Share Posted April 22, 2017 3 минуты назад, Dorik1972 сказал: Все же проще чем "с нуля" самому писать ... или ? У всех плейлистов есть URL в интернете. Смысл в редактировании, перед сохранением? Quote Link to comment Share on other sites More sharing options...
Dorik1972 Posted April 22, 2017 Author Share Posted April 22, 2017 42 минуты назад, zyxmon сказал: У всех плейлистов есть URL в интернете. Смысл в редактировании, перед сохранением? Если речь идет о edem, ott и т.д. - ДА там ссылка уже готовая.... В данном конкретном случае и в случае с acestream engine, для которого. тоже скриптик имеется, необходимо "формирование" плейлиста по шаблону под себя . Но это уже "разговор" из другой темы и не данного форума. Жму руку! p.s. Тут такое ... если пользователям сия инфа бесполезна .... УДАЛЮ ТЕМУ .... через недельку ! ОК? А вот если будут "Like"-и ... оставлю. 3 Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.