Pagina 1 di 1
Suggerimento script
Inviato: sab 10 set 2011, 0:17
da Meskalamdug
Vorrei creare uno script che salvi ogni giorno uno stream radio nella directory musica,
con un nome diverso(es. 1.mp3,2.mp3,3.mp3),so già come farlo con tempfile e $RANDOM
ma preferirei qualcosa di più ordinato.
Es..
mplayer
http://radio -dumpstream -dumpfile musica/?????
al posto di ????? cosa mi suggerite di mettere per ottenere
1.mp3 2.mp3,etc?
Ovviamente non deve sovrascrivere gli esistenti ma creare
un nuovo file con un nome sequenziale,es se sono presenti
1.mp3 2.mp3 4.mp3 5.mp3 6.mp3...crea 7.mp3.
Cosa mi suggerite?
Re: Suggerimento script
Inviato: sab 10 set 2011, 3:02
da Thraphyx
Assumendo che la directory in cui andranno salvati gli stream contenga solo quelli e basta (numerati come 1.mp3,2.mp3 ... n.mp3), farei qualcosa del genere:
Codice: Seleziona tutto
#!/bin/bash
DIR="/path/to/stream"
MAX=0
files=`find $DIR -iname "*.mp3"`
for f in $files
do
CUR=$(basename $f | sed "s/\.mp3//")
if [ $CUR -gt $MAX ]; then
MAX=$CUR
fi
done
let COUNTER=$MAX+1
mplayer http://radio -dumpstream -dumpfile "$DIR/$COUNTER.mp3"
Così anche se ne cancelli uno, il conteggio va avanti comunque dall'ultimo scaricato.
Re: Suggerimento script
Inviato: sab 10 set 2011, 20:28
da Meskalamdug
Grazie
Molto gentile
Re: Suggerimento script
Inviato: sab 10 set 2011, 20:32
da Meskalamdug
Noto tra l'altro una ottima conoscenza degli script bash.
Complimenti.
Re: Suggerimento script
Inviato: dom 11 set 2011, 11:22
da sixjan
ciao. credo che potresti avere problemi con
la numerazione sequenziale, poiché quel "find" NON elenca
in ordine alfabetico/numerico.
questo vuol dire che prima o poi sovrascriverai
un file.
io farei così per avere la certezza dell'ultimo file salvato,
tenendo conto del tuo schema:
Codice: Seleziona tutto
DIR="/path/to/stream"
cd $DIR
if ls *.mp3 &>/dev/null; then
ULTIMO=$(ls -1 *.mp3 | cut -f1 -d. | sort -n | tail -1)
let ULTIMO=$ULTIMO+1
else
ULTIMO=1
fi
mplayer http://radio -dumpstream -dumpfile $ULTIMO.mp3"
cd
valuta anche la possibilità di nominare gli stream usando
il comando date.
Codice: Seleziona tutto
DATE=$(which date)
NOMEFILE=$($DATE +%Y_%m_%d_%H_%M_%S).mp3
sostituisci %S con %s per la versione paranoica.
ciao