Jump to content

Запись онлайн радио на usb-носитель.


Recommended Posts

Озадачился включить запись онлайн-радио Digitally Imported на своём Keenetic Extra. Решил путём установки screen:

opkg install screen

и самого рекордера:

opkg install streamripper

Далее в скрине переходим в директорию, куда и будем всё добро складывать:

screen

cd /tmp/mnt/Music

Записываем:

streamripper <url>

Выходим из скрина путём нажатия комбинации клавиш <ctrl+a+d>.

На usb-носителе streamripper создаст директорию, в моём случае <Progressive Psy - Digitally Imported Premium>, и поддиректорию <incomplete>, в которой формируется сам mp3 файл, а готовый перемещается на уровень выше.

Скачал плейлист с актуальным ссылками тут

P.S. Иногда сообщениях streamripper можно увидеть следующее:

[skipping] <имя трека> - запись идёт, но начало записи не совпадает с началом трека, в этом случае готовый файл остаётся в incomplete.

[ripping] <имя трека> - запись идёт и в этом случае готовый файл также остаётся в incomplete.

Пока не понял как это исправить на уровне самого streamripper.

  • Thanks 2
Link to comment
Share on other sites

В 24.11.2016 в 23:56, Across сказал:

P.S. Иногда сообщениях streamripper можно увидеть следующее:

[skipping] <имя трека> - запись идёт, но начало записи не совпадает с началом трека, в этом случае готовый файл остаётся в incomplete.

[ripping] <имя трека> - запись идёт и в этом случае готовый файл также остаётся в incomplete.

Пока не понял как это исправить на уровне самого streamripper.

Старо как мир.

Link to comment
Share on other sites

В 30.11.2016 в 15:04, stuhin сказал:

без screen все нормально работает

ссылка не на плейлист

Я указал откуда скачал плейлист. По ссылке несколько жанровых направлений от классики до электронной музыки. Сами выбирайте.

Link to comment
Share on other sites

  • 1 month later...

Сделал небольшой скрипт, который может рипить сразу несколько станций.

В примере записываются 3 URL (их намеренно испортил, т.е. замените на свои по ссылке в первом сообщении).

На Giga II при рипе одновременно трех станций нагрузка на роутер небольшая. Вполне можно и больше рипить.

Этот скрипт можно запустить с параметром "stop" для завершения всех рипов.

Создаем файл stream-di.sh. Размещаем в нем указанный код и делаем файл исполняемым командой 'chmod +x stream-di.sh'.

Код скрипта:

Скрытый текст

 


#!/opt/bin/sh
prefix="/opt"
PATH=${prefix}/bin:${prefix}/sbin:/sbin:/bin:/usr/sbin:/usr/bin

# Каталог, куда будут писаться рипы
SDIR='/tmp/mnt/KINGSTON1/DI'

# Список URL для рипа в формате 'описание|URL'. На каждой строчке по одной станции
SLIST='Ambient|http://___.__.fm/ambient_hi?xxxx
AtmosphericBreaks|http://___.__.fm/atmosphericbreaks_hi?xxxx
ClassicVocalTrance|http://___.__.fm/classicvocaltrance_hi?xxxx'

# Если запустить с ключем stop, то завершаются все копии рипов. Иначе запускаем в screen рип каждого из URL
if [ "$1" != "stop" ]
    then
        for STATION in $SLIST
            do  
                # Вычленяем имя станции и URL
                SNAME=`echo $STATION | cut -d '|' -f 1`
                SURL=`echo $STATION | cut -d '|' -f 2`
                echo "Starting ripping $SNAME $SURL"
                # Запускаем процесс рипа с именем окна, состоящим из имени станции
                screen -t $SNAME streamripper $SURL -q -d $SDIR
            done
    else
        # Если запущен с ключем stop, завершаем все процессы рипа
        killall streamripper
fi

 

Также рекомендую предварительно настроить screen, разместив в конфигурационном файле код, представленный ниже. В этом случае экраны с запущенными сеансами будут подписаны и между ними можно будет легко переключаться по клавишам F11 и F12, чтобы посмотреть информацию по рипу станций. В принципе этим конфигом screen пользуюсь для всех случаев, но это отдельная тема для обсуждения...

Конфиг screen в  /opt/etc/screenrc:

Скрытый текст

# Bind F11 and F12 (NOT F1 and F2) to previous and next screen window
bindkey -k F1 prev
bindkey -k F2 next

startup_message off

# Window list at the bottom.
hardstatus alwayslastline
hardstatus string "%-w%{= BW}%50>%n %t%{-}%+w%<"

# From Stephen Shirley
# Don't block command output if the terminal stops responding
# (like if the ssh connection times out for example).
nonblock on

# Allow editors etc. to restore display on exit
# rather than leaving existing text in place
altscreen on

# Enable 256-color mode when screen is started with TERM=xterm-256color
# Taken from: http://frexx.de/xterm-256-notes/
#
# Note that TERM != "xterm-256color" within a screen window. Rather it is
# "screen" or "screen-bce"
# 
# terminfo and termcap for nice 256 color terminal
# allow bold colors - necessary for some reason
attrcolor b ".I"
# tell screen how to set colors. AB = background, AF=foreground
#termcapinfo xterm-256color 'Co#256:AB=\E[48;5;%dm:AF=\E[38;5;%dm'

 

Нужно понимать, что объем флэшки и диска небезграничный. Посчитайте через минут 20 объем зарипленных мелодий и определите насколько вам хватит размера диска.

Далее можно разместить в cron вызов скрипта с параметром stop, чтоб автоматически прекратить запись станций в нужный момент. Можно, конечно этого и не делать, тогда процесс streamripper завершится сам, когда место на диске кончится.

  • Thanks 1
Link to comment
Share on other sites

В 08.02.2017 в 17:50, K1fa сказал:

Отлично, записывает музыку с радио для машины, а что будет когда флешка полностью забъётся?

Я думаю запись на этом остановится. Можно написать простейший скрипт, который будет отслеживать размер свободного пространства и удалять самые старые файлы. Честно говоря, я об этом не задумывался, у меня 4 Тб на роутере висело.

Link to comment
Share on other sites

15 часов назад, Across сказал:

Я думаю запись на этом остановится. Можно написать простейший скрипт, который будет отслеживать размер свободного пространства и удалять самые старые файлы. Честно говоря, я об этом не задумывался, у меня 4 Тб на роутере висело.

4 Tb это понятно, но музыка нужна не дома, где везде есть wifi а в машине,  а там флешка всего на 16 Gb.

Вышел из положение командой -M [число]
Примеры на радио Russian Club Hits из списка по вашей ссылке в первом посте:

чтобы записать 10 Gb (10 000 Mb) музыки:

streamripper http://prem2.di.fm/russianclubhits_hi?ac4a342212fc9abdccd89eaf -M 10000

можно записать и по времени, ну скажем час (3600 секунд):

streamripper http://prem2.di.fm/russianclubhits_hi?ac4a342212fc9abdccd89eaf -l 3600

 

В 30.11.2016 в 15:44, Александр Рыжов сказал:

Чтобы каждый раз не исправлять сканирование трека на наличие паузы на нужное, вот так:

--xs_search_window=1000:1000

Я изменил в файле конфигурации streamripper.ini строчки:

xs_search_window_1=6000
xs_search_window_2=6000

на:

xs_search_window_1=1000
xs_search_window_2=1000


 

Также изменил кодировку чтобы корректно отображались русские буквы в id3 тегах и названиях файлов:

codeset_metadata=utf-8
codeset_id3=windows-1251


В streamripper.ini можно настроить все необходимое, в терминале пришлось набирать лишь

streamripper adress_vashego_radio.ru

В streamripper.ini можно зайти командой:

nano ~/.config/streamripper/streamripper.ini

Мой streamripper.ini для наглядности:

Скрытый текст

stream.thumb.jpg.5a313ca8981423f7b1237f3075e330a1.jpg

 

  • Thanks 2
Link to comment
Share on other sites

  • 11 months later...

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

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

Это может быть только дата, или произвольное имя-дата.

Делается с помощью аргумента -D %d.

Вот как у меня сейчас: streamripper http://sssxxx.ru:666/live -A -a live -D %d -l 555

Link to comment
Share on other sites

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.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...