Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!
Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.

Użytkownik


Witam!
Czy jest jakis soft co by nagrywał radio internetowe i działał w konsoli? Chcę nagrać audycję ale mam dostęp tylko do konsoli.
Offline



Użytkownik




Użyszkodnik
Kiedyś z azhagiem potrzebowaliśmy stworzyć narzędzie do nagrywania strumienia radia internetowego. Było ono udoskonalane by rozwiązywało problemy które pojawiały się dopiero w trakcie jego używania. W efekcie radzi sobie z przerwanymi strumieniami, całość przekodowuje do Ogg V i wysyła powiadomienie na Jabbera. Wygląda mniej więcej tak:
#!/bin/bash
# Skrypt do nagrywania audycji koncertowych w Radiowej Trójce
# Autor: Mirosław "Minio" Zalewski <miniopl@gmail.com> http://minio.xt.pl
# katalog na koncerty
CEL=$HOME
# Plik źródłowy.
LISTA=$CEL/lista.txt
# Plik logu
LOG=$HOME/www/XXX/trojka-log
ID=$RANDOM
# Zmienna zawiera linijkę z dzisiejszym koncertem albo jest pusta
# regexp jest tak sprytnie pomyślany, że sprawdza czy koncert jest dzisiaj i o tej właśnie godzinie.
KONCERT=$(egrep "^$(date +%-e.%m.%Y).*$(date +%k)\.[0-9]{2} --.*" $LISTA)
if [[ -z $KONCERT ]]; then
# Dzisiaj nie ma żadnego koncertu, nie mamy tu czego szukać.
exit;
fi
# Wyciąga minutę, o której zaczyna się koncert.
MINUTA=$(echo "$KONCERT"| awk -F ' -- ' '{print $3}'| cut -d . -f 2)
MINUTA=${MINUTA##0}
TEMP=$(echo "$KONCERT"| awk -F ' -- ' '{print $NF}')
if [ ${#TEMP} -le 3 ]; then
JAK_DLUGO=$((TEMP + 3))
fi
unset TEMP
JAK_DLUGO=${JAK_DLUGO:-63}
# Liczy różnicę pomiędzy teraz a chwilą rozpoczęcia koncertu - 1
# (w domyśle ma zaczynać nagrywanie wcześniej, aby nie ominąć ani chwili).
# W zdecydowanej większości przypadków czeka ok. 4 minuty.
if [[ $MINUTA -ne 0 ]]; then
if [[ $(date +%M) -ne $(( MINUTA - 1)) ]]; then
sleep $(( ( ( MINUTA - 1 ) - $(date +%M) ) * 60))
fi
fi
ARTIST=$(echo "$KONCERT" |tail -1 | awk -F ' -- ' '{print $2}')
DESCR=$(echo "$KONCERT" |tail -1 | awk -F ' -- ' '{print $4}')
I=0
echo -e "\n\nRozpoczynam logowanie nagrywania ${ARTIST}." >>"${LOG}"
echo -e "Data: $(date +'%d.%m.%Y'). Godzina: $(date +'%H:%M')\n" >>"${LOG}"
# Nagrywa przez tyle minut
# (tutaj liczy różnicę między 63 a minutą rozpoczęcia koncertu.
# Idea jest taka, żeby zacząć minutę przed i skończyć dwie minuty po.)
sleep $(( JAK_DLUGO - MINUTA ))m &
SLEEP_PID=$!
# Gdyby nie ustawić tej zmiennej, w pętelce sprawdzałby czy istnieje
# katalog /proc i w rezultacie nigdy nie rozpoczął nagrywania.
# Przypisuje nieracjonalnie wysoką liczbę aby być pewnym, że taki proces
# przypadkiem nie wystąpi w systemie.
# (Po prostu nie mam pomysłu jak inaczej to zrobić, działa na słowo honoru)
MPLAYER_PID=666894629430327204379
PROTOCOL=http
# Pętelka. Tak długo jak istnieje proces sleep powyżej, sprawdza czy
# istnieje proces mplayera. Jeżeli nie, uruchamia go.
# Sprawdzanie wykonywane jest co pół minuty.
while [ -e /proc/${SLEEP_PID} ]; do
if [ ! -e /proc/${MPLAYER_PID} ]; then
# ripuje stream
mplayer -nolirc -vc dummy -vo null -ao pcm:file=$CEL/../audio-$ID-$((I++)).wav "${PROTOCOL}://stream.polskieradio.pl/program3" >/dev/null 2>>"${LOG}" &
MPLAYER_PID=$!
I=$((I + 1))
echo -e "\n$(date +'%H:%M'): mplayer nie działał. Uruchamiam.\n" >>"${LOG}"
if [ ${PROTOCOL} = 'http' ]; then
PROTOCOL=mms
elif [ ${PROTOCOL} = 'mms' ]; then
PROTOCOL=http
fi
fi
sleep 30
done
kill ${MPLAYER_PID}
if [ $(ls $CEL/../audio-$ID-* |wc -l) -gt 1 ]; then
echo -e "\n$(date +'%H:%M'): rozpoczynam łączenie plików wav\n" >>"${LOG}"
sox $(ls -t --reverse $CEL/../audio-$ID-*) $CEL/../audio-$ID.wav
else
mv $(ls $CEL/../audio-$ID-*) $CEL/../audio-$ID.wav
fi
echo -e "\n$(date +'%H:%M'): rozpoczynam enkodowanie.\n" >>"${LOG}"
# koduje do OGG V
oggenc -q 3 -o "$CEL/$(date +%Y-%m/%Y.%m.%d)-$(echo $ARTIST| tr ' ' _ ).ogg" \
-a "$ARTIST" \
-t "Koncert w Radiowej Trójce -- $(date +%-e.%m\ %Y)" \
-l "Koncert w Radiowej Trójce -- $(date +%-e.%m\ %Y)" \
-d "$(date +%F)" \
-c "DESCRIPTION=$DESCR" $CEL/../audio-$ID.wav >/dev/null 2>>"${LOG}"
echo "Zakończono logowanie o $(date +'%H:%M')" >>"${LOG}"
echo -e "\n---------------------------------------\n" >>"${LOG}"
# wysyła powiadomienia na Jabbera
echo "Dostępny jest nowy koncert. Bezpośredni link do pobrania:
http://tajnaStrona.pl/$(date +%Y-%m/%Y.%m.%d)-$(echo $ARTIST| tr ' ' _ ).ogg
Szczegóły na http://tajnejStronie.pl
(wiadomość generowana automagicznie, nie odpowiadaj na nią)" | \
sendxmpp -s "Nowy koncert: $ARTIST" -r "Powiadomienia" \
ktoś@gdzieś.net
# Po skończonej pracy -- załóż maj... znaczy posprzątaj po sobie ;)
rm $CEL/../audio-$ID*.wavOffline
streamripper
uruchamiasz:
streamripper ip.stacji.radiowej



Oldtimer




genialny skrypt :P jeszcze pod Państwową Wolną Komercyjną Stację, która wie co dobre ;)
Offline

Użytkownik


a jak nagrać taki strumien
http://www.polskieradio.pl/sluchaj/play.aspx?p=r4
Offline






Admin łajza







mihoo_koz napisał(-a):
a jak nagrać taki strumien
http://www.polskieradio.pl/sluchaj/play.aspx?p=r4
osadzony jest tam plik o takiej treści
<asx version = "3.0">
<entry>
<ref href = "mms://stream.polskieradio.pl/program4"/>
<ref href = "rtsp://stream.polskieradio.pl/program4"/>
<ref href = "http://stream.polskieradio.pl/program4"/>
<Title>Polskie Radio BIS</Title>
<Author>Polskie Radio SA</Author>
<Copyright>Polskie Radio SA</Copyright>
<Banner></Banner>
</entry>
<Title>Polskie Radio BIS</Title>
<Author>Polskie Radio SA</Author>
<Copyright>Polskie Radio SA</Copyright>
<Banner></Banner>
<LogURL href = ""/>
</asx>teraz chyba oczywiste jak nagrać
Offline
Cześć.
Mam taki problem z powyższym skryptem, że podczas działania proces mplayera dopełnia zużycie procesora do 100% i to niezależnie czy w debianie stabilnym czy testowym.
Offline