Repository 32bit  Forum
Repository 64bit  Wiki

ShellRipper by DanBadJar

Da Slacky.eu.

Descrizione

Questo script estrae tracce da CD Audio, le rippa in MP3 (con diverse opzioni di campionamento) e assegna i TAG ai files estratti. Puoi editarlo per modificare le directory di lavoro, cioè dove risiederanno i files estratti in formato WAV e convertiti poi in MP3. Richiede: cdparanoia,lame,id3v2

Script

#!/bin/sh

###############################################################################
# Definizione delle directory di lavoro
OUTPUT_WAV=~/scripts/shellripper/wav
OUTPUT_MP3=~/scripts/shellripper/mp3
###############################################################################
# Definizione del percorso dei file binari utilizzati per le operazioni
CDPARANOIA_BIN=/usr/bin/cdparanoia
LAME_BIN=/usr/bin/lame
ID3V2_BIN=/usr/bin/id3v2
###############################################################################

tag_thismp3()
{
 clear
 echo -e "*** Tagging del disco $NOMEDISCO *** \n"
 echo "Artista?"
 read -r ARTISTA
 echo "Anno?"
 read -r ANNO
 echo "Genere?"
 read -r GENERE
 for FILE in `ls -1 $OUTPUT_MP3/$NOMEDISCO/`
 do
   echo "TAG di nome della canzone nel file: $FILE ?"
   read -r CANZONE
   id3v2 -a "$ARTISTA" $OUTPUT_MP3/$NOMEDISCO/$FILE
   id3v2 -y "$ANNO" $OUTPUT_MP3/$NOMEDISCO/$FILE
   id3v2 -A "$NOMEDISCO" $OUTPUT_MP3/$NOMEDISCO/$FILE
   id3v2 -t "$CANZONE" $OUTPUT_MP3/$NOMEDISCO/$FILE
   id3v2 -g "$GENERE" $OUTPUT_MP3/$NOMEDISCO/$FILE
   echo "->Tagging di $CANZONE completato"
 done
 echo -e "\n Premere un tasto per continuare"
 read -r TASTO
 main
}

remove_files()
{
 clear
 echo -e "*** Cancellazione album rippati dalle directory di lavoro *** \n"
 if [ `ls -1 $OUTPUT_WAV | wc -l` -gt 0  ]; then
         echo -e "I seguenti album possono essere cancellati: \n"
         LISTA_ALBUMS=`ls -1 $OUTPUT_WAV`
         echo -e "$LISTA_ALBUMS \n"
         echo "Quale vuoi cancellare? (Q per tornare al Menu)"
         read -r SCELTA
         case $SCELTA in
          'Q' | 'q') main
                     ;;
         esac
         if [ ! -d $OUTPUT_WAV/$SCELTA ] ; then
                echo "Album non esistente. Premere un tasto per continuare"
                read -r TASTO
                remove_files
         else
                NOMEDISCO=$SCELTA
                rm -Rf $OUTPUT_WAV/$SCELTA
                rm -Rf $OUTPUT_MP3/$SCELTA
                echo "Cancellazione completata. Premere un tasto per continuare"
                read -r TASTO
                main
        fi
 else
        echo "Non ci sono album da cancellare. Premere un tasto per continuare"
        read -r TASTO
        main
 fi

}

ripping()
{
 clear
 echo "*** Ripping ***"
 echo
 if [ `ls -1 $OUTPUT_WAV | wc -l` -gt 0  ]; then
        echo -e "I seguenti album sono pronti per essere rippati \n"
        LISTA_ALBUMS=`ls -1 $OUTPUT_WAV`
        echo -e "$LISTA_ALBUMS \n"
        echo "Quale vuoi rippare? (Q per tornare al Menu)"
         read -r SCELTA
         case $SCELTA in
          'Q' | 'q') main
                     ;;
         esac
         if [ ! -d $OUTPUT_WAV/$SCELTA ] ; then
                echo "Album non esistente. Premere un tasto per continuare"
                read -r TASTO
                ripping
         else
                NOMEDISCO=$SCELTA
                convert_wav2mp3
         fi
 else
   echo "Non ci sono album da rippare. Premere un tasto per continuare."
   read -r TASTO
   main
 fi

}

convert_wav2mp3()
 {
  rm -f $OUTPUT_MP3/$NOMEDISCO/*
  echo -e "Specifica il bitrate (kb/s) di compressione MP3: \n"
  echo "1) 32"
  echo "2) 40"
  echo "3) 48"
  echo "4) 56"
  echo "5) 64"
  echo "6) 80"
  echo "7) 96"
  echo "8) 112"
  echo "9) 128"
  echo "10) 160"
  echo "11) 192"
  echo "12) 224"
  echo "13) 256"
  echo "14) 320"
  read -r SCELTA
  case $SCELTA in
    '1') BITRATE=32
         ;;
    '2') BITRATE=40
         ;;
    '3') BITRATE=48
         ;;
    '4') BITRATE=56
         ;;
    '5') BITRATE=64
         ;;
    '6') BITRATE=80
         ;;
    '7') BITRATE=96
         ;;
    '8') BITRATE=112
         ;;
    '9') BITRATE=128
         ;;
    '10') BITRATE=160
         ;;
    '11') BITRATE=192
         ;;
    '12') BITRATE=224
         ;;
    '13') BITRATE=256
         ;;
    '14') BITRATE=320
         ;;
  esac

  for FILE in `ls -1 $OUTPUT_WAV/$NOMEDISCO/`
  do
    echo "Come vuoi rinominare il file $FILE ? (Senza spazi)"
    read -r FILERINOMINATO
    lame -b $BITRATE $OUTPUT_WAV/$NOMEDISCO/$FILE $OUTPUT_MP3/$NOMEDISCO/$FILERINOMINATO
  done
  echo "Conversione completata. I files sono in: $OUTPUT_MP3/$NOMEDISCO/ "
  echo "Vuoi taggarli subito? (S/N)"
  read -r SCELTA
  case $SCELTA in
   'S' | 's') tag_thismp3
       ;;
   'N' | 'n') main
       ;;
    *) main
       ;;
  esac
 }

start_extract()
 {
  if [ ! -d $OUTPUT_WAV/$NOMEDISCO ]; then
        mkdir $OUTPUT_WAV/$NOMEDISCO
  fi
  if [ ! -d $OUTPUT_MP3/$NOMEDISCO ]; then
        mkdir $OUTPUT_MP3/$NOMEDISCO
  fi
  cdparanoia -B "$TRACCIAINIZIO-$TRACCIAFINALE" $OUTPUT_WAV/$NOMEDISCO/$NOMEDISCO.wav
  echo "Estrazione CD in tracce audio WAV completato. Convertirle in MP3 ora? (S/N)"
  read -r SCELTA
  case $SCELTA in
   'S' | 's') convert_wav2mp3
        ;;
   'N' | 'n') main
        ;;
    *) main
        ;;
  esac
 }


extract()
 {
  echo "Estrazione tracce da CD"
  cdparanoia -vsQ
  echo "Nome del disco (senza spazi . 0 per tornare al menu principale) : "
  read -r NOMEDISCO
  case $NOMEDISCO in
  '0') main
       ;;
  *)   echo "Traccia di inizio?"
       read -r TRACCIAINIZIO
       echo "Traccia finale?"
       read -r TRACCIAFINALE
       start_extract
       ;;
  esac
 }

main()
 {
  clear
  if [ ! -d $OUTPUT_WAV ] ; then
        mkdir -p $OUTPUT_WAV
  fi
  if [ ! -d $OUTPUT_MP3 ] ; then
        mkdir -p $OUTPUT_MP3
  fi
  echo "+----------------------------------+"
  echo "+      Shell Ripper 0.1beta        +"
  echo "+         by DanBadJar             +"
  echo "+----------------------------------+"
  if [ ! -f $CDPARANOIA_BIN ] ; then
        echo "ATTENZIONE: cdparanoia non trovato!"
  fi
  if [ ! -f $LAME_BIN ] ; then
        echo "ATTENZIONE: lame non trovato!"
  fi
  if [ ! -f $ID3V2_BIN ] ; then
        echo "ATTENZIONE: id3v2 non trovato!"
  fi
  if [ ! -f $CDPARANOIA_BIN ] || [ ! -f $LAME_BIN ] || [ ! -f $ID3V2_BIN ] ; then
        exit 1
  fi

  echo -e "1) Estrai tracce da CD "
  echo -e "2) Ripping "
  echo -e "3) Cancellazione albums rippati dalle directory di lavoro \n"
  echo -e "0) Uscita \n"
  read -r SCELTA
  case $SCELTA in
  '1') extract
       ;;
  '2') ripping
       ;;
  '3') remove_files
       ;;
  '0') exit 0
       ;;
  *) main
     ;;
  esac
 }

main

--Danbadjar 19:15, 20 Set 2008 (CEST)

Strumenti personali
Namespace

Varianti