Suggerimento script

Postate qui per tutte le discussioni legate a Linux in generale.

Moderatore: Staff

Regole del forum
1) Citare sempre la versione di Slackware usata, la versione del Kernel e magari anche la versione della libreria coinvolta. Questi dati aiutano le persone che possono rispondere.
2) Per evitare confusione prego inserire in questo forum solo topic che riguardano appunto Gnu/Linux in genere, se l'argomento è specifico alla Slackware usate uno dei forum Slackware o Slackware64.
3) Leggere attentamente le risposte ricevute
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.

La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza della regola 5 porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.
Rispondi
Meskalamdug
Iper Master
Iper Master
Messaggi: 3965
Iscritto il: ven 14 mag 2004, 0:00

Suggerimento script

Messaggio 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?

Avatar utente
Thraphyx
Linux 2.x
Linux 2.x
Messaggi: 212
Iscritto il: ven 28 ago 2009, 22:43
Slackware: 14.1 multilib
Kernel: 3.10.17
Desktop: KDE 4.11.5

Re: Suggerimento script

Messaggio 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.

Meskalamdug
Iper Master
Iper Master
Messaggi: 3965
Iscritto il: ven 14 mag 2004, 0:00

Re: Suggerimento script

Messaggio da Meskalamdug »

Grazie
Molto gentile

Meskalamdug
Iper Master
Iper Master
Messaggi: 3965
Iscritto il: ven 14 mag 2004, 0:00

Re: Suggerimento script

Messaggio da Meskalamdug »

Noto tra l'altro una ottima conoscenza degli script bash.
Complimenti.

sixjan
Linux 2.x
Linux 2.x
Messaggi: 413
Iscritto il: dom 6 gen 2008, 11:46
Slackware: 14.1
Kernel: 3.10.17-smp
Desktop: Xfce 4.10

Re: Suggerimento script

Messaggio 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

Rispondi