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