пятница, 11 июля 2025 г.

streamripper

задача: иногда пропадает инет и надо иметь в офлайне апру сотен треков любимой станции гуглим в нете список урлов типа вот такого https://gist.github.com/ergoz/e7837a54956116167db93b016dbd51a9

Ставим streamripper и запускаем его в скрине 

streamripper https://radiorecord.hostingradio.ru/rr_main96.aac

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

удаляем дубликаты 

find . -name "*([0-9]).aac" -type f -exec rm {} \;

и перезапускаем рипер с ключем -o never  и на всякий случай с релеем чтобы можно было подключиться и проверить играет ли станция на случай дебага 

streamripper https://radiorecord.hostingradio.ru/rr_main96.aacp -o never -r 8090  

примерная команда / скрипт  запуска будет примерно такой  - в крон и спать 

 

#!/bin/bash

cd /mnt/disk1/record

screen -dmS riper_record_main_8090 streamripper https://radiorecord.hostingradio.ru/rr_main96.aacp -o never -r 8090

cd /mnt/disk1/record_rock

screen -dmS riper_record_main_8091 streamripper https://radiorecord.hostingradio.ru/rock96.aacp  -o never -r 8091

cd /mnt/disk1/record_Trancemission

screen -dmS riper_record_main_8092 streamripper https://radiorecord.hostingradio.ru/tm96.aacp -o never -r 8092

спим дальше .... тут получили ребут .. надо подумать как   загнать в скрипт самопроверки и самозапуска (что то типа streamdetect.sh ) - пока из идей - дамп трафика по порту - но тут ньюанс - все с одного сервака тянуться - отвал одного потока не проявиться до тех порр, пока не упадут все потоки (такого не будет если записывать разные станции с разных серверов, по факру оочень костыльный способ - адреса ресурсов переезжают или меняются CDN-ы и полдня ловишь новый ip - не очень удобно ) - как вариант слушать если порт ретрансмитера (тот что ключ -r) если порт есть - стример запущен  и вещает на порту (в моем случае 8090-8092 и каждый прибит к потоку) 

из набросов цикл if then и что то типа nc -vz 127.0.0.1 8090  в ответ получаем 

Connection to 127.0.0.1 8090 port [tcp/*] succeeded!

вводим команду  echo $? в ответ получаем 0 - все окей 

если порт закрыт то будет nc: connect to 127.0.0.1 port 8093 (tcp) failed: Connection refused и команда  echo $? в ответ даст 1 - в этом случае просто перезапускаем скрипт или команду скрина 

итого говнокодик 

#!/bin/bash


nc -vz 127.0.0.1 8090

if [ "$?" -eq 0 ]; then

  echo " record_main ok"

  logger "поток record_main в норме"

else

  echo " record_main fail restart"

  cd /mnt/disk1/record

  screen -dmS riper_record_main_8090 streamripper https://radiorecord.hostingradio.ru/rr_main96.aacp -o never -r 8090

fi


nc -vz 127.0.0.1 8091

if [ "$?" -eq 0 ]; then

  echo "record_rock ok"

  logger "поток record_rock в норме"

else

  echo "record_rock fail restart"

  logger "поток record_rock fail перезапуск"

  cd /mnt/disk1/record_rock

  screen -dmS riper_record_main_8091 streamripper https://radiorecord.hostingradio.ru/rock96.aacp  -o never -r 8091

fi

nc -vz 127.0.0.1 8093

if [ "$?" -eq 0 ]; then

  echo "radio7 ok"

  logger "radio7 в норме"

else

  echo "radio7 fail restart"

  logger "поток radio7 fail перезапуск"

  cd /mnt/disk1/r7

  screen -dmS riper_record_main_8092 streamripper https://radio7.hostingradio.ru:8040/radio7256.mp3 -o never -r 8093

fi


nc -vz 127.0.0.1 8092

if [ "$?" -eq 0 ]; then

  echo "record_Trancemission ok"

  logger "поток Trancemission в норме"

else

  echo "record_Trancemission fail restart"

  logger "поток record_Trancemission fail перезапуск"

  cd /mnt/disk1/record_Trancemission

  screen -dmS riper_record_main_8092 streamripper https://radiorecord.hostingradio.ru/tm96.aacp -o never -r 8092

 

как искался урл радио 7 (да и в принципе можно любые так дергать - открываем страницку с радио https://online-red.com/radio/Radio7.html к примеру - в браузере - режим разработчика - вкладка нетворк - жмакаем плей и видим url потока - он будет самый жирный по трафику =) 


Комментариев нет:

Отправить комментарий