Скрипт автоматической записи

Тема в разделе "Основной", создана пользователем _SH, 9 мар 2012.

  1. _SH

    _SH

    Регистрация:
    15 ноя 2010
    Сообщения:
    3
    Доброго всем времени суток!

    Для автоматизации записи трансляций нашкрябал скриптик. Авось пригодится кому.
    Идея простая. Запускаем и останавливаем wget по крону.
    Настройка скриптика заключается в задании STORE_PATH - папка, в кот. будут сохраняться mp3 и лог.
    Остальное по вкусу. Надо проверить где лежит бинарь wget'a и при необходимости подкорректировать wgetbin.

    Пользоваться просто. ./script_name.sh start и пошла запись. ./script_name.sh stop запись остановлена. Для автоматизации процесса добавляем в crontab два вызова.

    0 0 * * 5 /path/to/sctipt/script_name.sh start
    0 2 * * 5 /path/to/sctipt/script_name.sh stop

    Код ниже. Не нашёл как прикрепить файл.

    Код:
    #!/bin/bash
    STORE_PATH=~/MDS/MDS_radiorip
    LOG=mds_load.log
    wgetbin=/usr/bin/wget
    pidfile=/tmp/wgetpid
    
    
    TIME=`date +%H:%M`
    DATE=`date +%d.%m.%Y`
    
    FILE_NAME=MDS_$DATE-$TIME.mp3
    
    URL="http://online.pionerfm.ru:8000/pionerfm"
    
    
    
    if [ "$1" = "start" ]; then
        if [ -e $pidfile ]; then
            exit 1
        fi
        echo -n "Started at " >> $STORE_PATH/$LOG
        date +%d.%m.%Y-%H:%M >> $STORE_PATH/$LOG
        $wgetbin --directory-prefix=$STORE_PATH -a $STORE_PATH/$LOG -O $STORE_PATH/$FILE_NAME $URL &
        WGETPid=`ps aux | grep wget | grep pionerfm | awk '{print $2}'`
        echo $WGETPid > $pidfile
    
    fi
    if [ "$1" = "stop" ]; then
        WGETPid=`ps aux | grep wget | grep pionerfm | awk '{print $2}'`
        if [ $WGETPid ]; then
            kill $WGETPid
            rm $pidfile
            echo >> $STORE_PATH/$LOG
            echo -n "Wget (pid=$WGETPid) stoped at " >> $STORE_PATH/$LOG
            date +%d.%m.%Y-%H:%M >> $STORE_PATH/$LOG
        fi
    fi
    exit 0;
     
  2. Kontakter

    Kontakter

    Регистрация:
    29 ноя 2007
    Сообщения:
    807
    У меня не работает, то есть создает лог, а файла с музыкальным потоком не появляется :)

    Где явно лежит wget указывать не надо. Еще надо все пути взять в кавычки. Еще вопрос -- что за амперсант на конце wget-a?
     
  3. -=Stranger=-

    -=Stranger=-

    Регистрация:
    26 окт 2007
    Сообщения:
    74
    Автор забыл указать, что это только для ОС linux.

    Если кому интересно, могу сделать похожее только для Windows, тока запуск и остановка будет вручную, или используя встроенный планировщик Windows, или аналог крона.
    Преимущества записи через wget в том, что запись идет непосредственно потока, т.е. никакого кодирование, потери качества и прочего.
     
  4. -=Stranger=-

    -=Stranger=-

    Регистрация:
    26 окт 2007
    Сообщения:
    74
    Было скучно, написал скриптик для Windows.

    Как пользоваться
    1) Открываем файл Запись.cmd любым текстовым редактором, можно даже блокнотом (ПКМ -> Изменить).
    2) Находим и правим строки:
    Код:
    set URL_STREAM=http://server.freshmeradio.globalzone.su:8000/2bios.ogg // Ссылка на трансляцию *
    set FILE_NAME=%_da%.%_mo%.%_cy%%_yr%_%_hh%-%_mm%-%_ss%.ogg // Формат выходного файла. По умолчанию: ДД:ММ:ГГГГ_ЧЧ-ММ-СС *
    set STORE_PATH=REC // Папка, куда будет записываться эфир
    set PROGRESS=bar // Тип прогресс бара. (bar или dot)
    set BINDDIR=%~dp0 // Текущая папка.
    Поменять нужно только строки, помеченные *, остальное более тонкая настройка.
    PS> Данная настройка сделана под мой сервер, которые вещает в формате OGG, если выбранный Вами сервер транслирует радио или видео в любом ином формате, то необходимо на строчках, помеченные *, поменять формат OGG на свой.

    3) Сохраняем изменения и запускаем файл. Остальное написано в самом скрипте.
    4) Если есть вопросы или предложения, то пишите в эту тему, думаю автор темы не будет против...
    5) Скачать скрипт: Посмотреть вложение WGET_RECORD.zip
     
  5. _SH

    _SH

    Регистрация:
    15 ноя 2010
    Сообщения:
    3
    Да, простите, забыл указать - скрипт для линкса. Работает в Debian в представленном виде. Амперсант указывает оболочке запустить wget в фоне. И да, указаывать обсолютный путь не обязательно, можно обойтись просто wget Если путь настроены корректно будет работать.
    Kontakter, а что в логе wget и какую ос используете?
     
  6. bobson

    bobson

    Регистрация:
    24 апр 2006
    Сообщения:
    405
    Это конечно здорово, при наличии свободного времени написать скрипт и поделиться им. :D Но ведь можно полазить в репозиториях и найти уже готовое приложение. Я, к примеру, использую KStreamRipper и всем доволен. Еще нужно учитывать что подавляющее большинство пользователей использует виндовс и не привыкло сильно заморачиваться.
    З.Ы. За старания, тем не менее, спасибо :D
     
  7. -=Stranger=-

    -=Stranger=-

    Регистрация:
    26 окт 2007
    Сообщения:
    74
    В своём скрипте Я постарался максимально упростить настройку. Если есть пожелания, могу поправить...
    А так я не доверяю всяким таким программам, а если программа не пишет поток напрямую, а кодирует его налету, то вообще ужоос...
     
    Последнее редактирование модератором: 3 фев 2014
  8. bobson

    bobson

    Регистрация:
    24 апр 2006
    Сообщения:
    405
    Самый простой способ, который я знаю, это просто в терминале набрать "wget http://online.pionerfm.ru:8000/pionerfm". wget автоматом кидает файл без расширения в домашнюю папку. Как надоест писать, процесс останавливается по ctlr+C. Остается только прописать расширение к файлу и вуаля - имеем напрямую записаный поток.
    Как говорится - на вкус и цвет все фломастеры разные :D , мне проще было взять прогу из репозиториев и не морочиться.
     
    Последнее редактирование модератором: 3 фев 2014
  9. -=Stranger=-

    -=Stranger=-

    Регистрация:
    26 окт 2007
    Сообщения:
    74
    Вот ведите сколько вы действий сделали: написали строчку с полным адресом до трансляции, потом полезли переименовывать файл. А не проще 1 раз сделать скрипт, в который вбить адрес, имя, разрешение, складывать сразу в папку MDS и просто запускать и нажимать ctlr+C когда надо, или вообще использовать Cron
    PS> Так-же незабываем, что мой скрипт написано под windows, где wget нету в помине, да и не забываем, что для большинства пользователей wget это ругательство...

    ИХМО :rolleyes:
     
    Последнее редактирование модератором: 3 фев 2014
  10. alkaline

    alkaline

    Регистрация:
    6 янв 2012
    Сообщения:
    727
    ИМХО: имею мнение, фиг(Грубее слово) оспоришь {или я это уже писал?}.
    Самый логичный ответ. Dragon_Knight, зачёт. :good: ;)
    з.ы.Или -=Stranger=-?
     
  11. bobson

    bobson

    Регистрация:
    24 апр 2006
    Сообщения:
    405
    Конечно проще, не спорю. Но ведь еще проще поставить готовое приложение и использовать его, тем более для пользователей виндовс (читай - для тех кому лень думать).
    кстати, wget был портирован под винду аж в 2008 году и успешно под ней работает. По этому могу предложить включить в скрипт еще и возможность закачки и установки его. Вот так и вырастет из маленького скрипта вполне достойное приложение для записи эфиров ;)
     
    Последнее редактирование модератором: 3 фев 2014
  12. -=Stranger=-

    -=Stranger=-

    Регистрация:
    26 окт 2007
    Сообщения:
    74
    alkaline, -=Stranger=- это ник в прошлом.... ;)
    bobson, портирован, я его и использую в скрипте. (Я имею ввиду в дистрибутиве его нету, хотя бы отдалённо напоминающего...) Конечно я не спорю, что каждый возьмёт своё, как ему лично удобнее, Но когда есть выбор это всегда хорошо...
    Я-бы конечно написал программку для записи на основе wget, но с GUI (Графический интерфейс), но я не умею программировать на таких языках -_- , поэтому и приходиться делать всё на cmd\bat скриптах, но они значительно упрощают жизнь :)
     
  13. alkaline

    alkaline

    Регистрация:
    6 янв 2012
    Сообщения:
    727
    Тигриный коготь на енглише звучит лучше.
     

Поделиться этой страницей