Discussione: registrare in mp3?
View Single Post
Old 16-10-2009, 00:11   #2
Gimli[2BV!2B]
Senior Member
 
L'Avatar di Gimli[2BV!2B]
 
Iscritto dal: Feb 2006
Città: Parma
Messaggi: 3010
Script per scaricare tutto:
Codice:
#!/bin/bash

#Script per il recupero dei file *.ra della trasmissione radiofonica "Alle otto della sera"
#Organizzazione dati sui server:
# - Indici generali: ogni pagina contiene max 10 link ad altrettante serie di puntate
# - Indici serie: ogni indice di serie contiene link a file *.ram, uno per puntata
# - File *.ram: contengono praticamente solo del testo, cioè il link allo stream .*ra

#cartella di lavoro
mkdir -p alle8dellasera
cd alle8dellasera

COUNTER=1
while [  $COUNTER -lt 14 ]; do
  INDEX_ALLEOTTO="alleottodellasera$COUNTER.cfm"

  #recupero indici generali
  wget -O - "http://www.radio.rai.it/radio2/alleottodellasera.cfm?PageNum_Get_tipologie=$COUNTER" > $INDEX_ALLEOTTO

  #estraggo i link alle serie di puntate
  LINKS=`cat $INDEX_ALLEOTTO | sed -e '/href=\"http:\/\/www.radio.rai.it\/radio2\/alleotto\//!d' -e 's/.*href=[^h]*//' -e 's/".*$//' | uniq | sort`

  #creo cartelle di lavoro numerate, una per serie
  if [[ ! -d "serie$COUNTER" ]]; then 
    mkdir "serie$COUNTER"
  fi

  NR_INDEX=1
  for serie in $LINKS; do
    echo $serie
    #recupero indici serie
    wget -q -O - $serie > "serie$COUNTER/index$NR_INDEX.htm"

    #estraggo i link ai file *.ram
    RAMS=`cat "serie$COUNTER/index$NR_INDEX.htm" | sed -e '/Q_CANALE=http:\/\/www.radio.rai.it\/\/radio2\/alleotto\//!d' -e 's/.*Q_CANALE=[^h]*//' -e 's/.ram.,.*$/.ram/' | uniq | sort`

    for ram in $RAMS; do
      #recupero l'indirizzo dello stream *.ra
      STREAM=`wget -q -O - $ram`
      #pulizia necessaria...
      STREAM=`echo $STREAM | sed -e 's/.*rtsp:\/\/*/rtsp:\/\//' -e 's/.ra[^[:print:]]*$/.ra/'`
      #alcuni sono rappresentati come stream pnm -> li forzo ad rtsp
      STREAM=`echo $STREAM | sed -e 's/.*pnm:\/\/*/rtsp:\/\//'`

      #suddivido i file per serie: estraggo i nomi necessari
      FILENAME=`echo $STREAM | sed -e 's/.*\///'`
      SERIENAME=`echo $STREAM | sed -e 's/\/[^\/]*$//' -e 's/.*\///'`

      #creazione cartelle serie
      if [[ ! -d "../$SERIENAME" ]]; then 
        mkdir "../$SERIENAME"
      fi
      if [[ ! -f "../$SERIENAME/$FILENAME" ]]; then
        #se il file non esiste procedo con il download
        echo -e "\nIn download: $SERIENAME/$FILENAME = $STREAM"
        if ! mplayer -prefer-ipv4 -noframedrop -dumpfile ../$SERIENAME/$FILENAME -dumpstream $STREAM ; then
          echo -e "\n\nERROR! $STREAM -> $SERIENAME/$FILENAME\n\n"
          exit 1
        fi
      else
        #il file esiste già.
        #Due casi possibili:
        # - è già stato scaricato in un'esecuzione precedente
        # - è stato solamente iniziato ed è incompleto...
        # QUESTO SCRIPT NON SI ACCORGE DI AVENTUALI FILE INCOMPLETI E NON LI SCARICA PIU'
        echo -e "\nGià scaricato o interrotto: $SERIENAME/$FILENAME = $STREAM\n"
      fi
    done

    let NR_INDEX=NR_INDEX+1
  done

  let COUNTER=COUNTER+1 
done
#Gimli
Scarica solo i file *.ra, non ho controllato per fare eventuali conversioni di formato.

Non ho idea di quanti file/dati e quanto tempo possa occorrere per un dump completo... (probabilmente proverò ad eseguirlo nel week-end).

Ho letto che stanno per chiuderla questa trasmissione? Un paio d'anni fa avevo orari che mi permettevano di seguirla ed era molto interessante.
__________________
~Breve riferimento ai comandi GNU/Linux (ormai non molto breve...)

Ultima modifica di Gimli[2BV!2B] : 18-10-2009 alle 02:22. Motivo: pnm -> rstp
Gimli[2BV!2B] è offline   Rispondi citando il messaggio o parte di esso