# [scripts] miniatures d'image et conversion ogg -> mp3

## Temet

Bon, je ne suis pas certain de l'utilité de mes deux petits scripts ici mais après tout, je partage ... si ça ne fait pas de bien, ça ne fera pas de mal.

Le premier script sert à générer une miniature d'une image comme chez les hébergeurs, mais plutôt utile à ceux qui mettent leurs images sur leur FTP. Il nécessite ImageMagick.

Ca donne quelque chose comme ça : http://goondy.free.fr/Images/gentop-thumb.png

(la balise "img" ne marche pas ici o_O')

Si vous l'appelez "genthumb" comme moi, vous pouvez faire :

```
genthumb image.png

genthumb image1.png  image2.png  image3.jpg

genthumb *.png
```

```
#!/bin/bash

# thanks to Remi, Anvil & NaiosKAE The Korrigan

# verifying usage

if [ "$#" = "0" -o "$1" = "-h" -o "$1" = "--help" ]; then

   echo Usage : $(basename $0) image [ image ... ]

   echo Used to generate thumbnails of a list of images.

   exit 1

fi

# loop that enables the treatment of a list of images

for i in "$@"; do

   # verifying file

   if [ -f "$i" ]; then

      # get image infos

      iinfos=$(identify -format "%m:%wx%h:%t:%e:%b" "$i")

      # get image type

      itype=$(echo $iinfos | awk -F":" '{print $1}')

      # get image resolution

      resolution=$(echo $iinfos | awk -F":" '{print $2}')

      # get image name, without extension

      name=$(echo $iinfos | awk -F":" '{print $3}')

      # get extension

      extension=$(echo $iinfos | awk -F":" '{print $4}')

      # get image size

      size=$(echo $iinfos | awk -F":" '{print $5}')

      # convert size to human readable format

      if [ $size -ge 1048576 ]; then

         sizeh="$(( size / 1048576 )) Mo"

      elif [ $size -ge 1024 ]; then

         sizeh="$(( size / 1024 )) Ko"

      else

         sizeh="$size o"

      fi

      # resize image and add infos

      convert "$i" -resize 400x200 -gravity South -background Black -fill white -splice 0x18 -draw "text 0,2 '$itype : $resolution - $sizeh'" "$name"-thumb.$extension

   else

      echo "$i" : file does not exist

   fi

done
```

--------------------------------------------------

Pour le deuxième script, mon baladeur ne lit pas les ogg. Jusqu'à présent je codais mes CDs en mp3 à cause de ça. Toutefois, mon coté libriste gagnant peu à peu du terrain, j'ai encodé mes derniers CDs en ogg.

J'ai donc fait un petit script pour convertir les ogg en mp3. De plus, mon baladeur lit les chansons par ordre alphabétique, il faut donc le numéro de piste en premier pour avoir les chansons dans l'ordre.

Le script s'utilise des façons suivantes (si vous l'appelez ibeadogg) :

```
ibeadogg chanson1.ogg chanson2.ogg chanson3.ogg ...

ibeadogg *.ogg

ibeadogg répertoire1 répertoire2 chanson1.ogg chanson2.ogg ...
```

Les fichiers sont encodés dans le home, dans un dossier "artist - titre de l'album".

```
#!/bin/bash

# used to convert ogg files in mp3

# requires ogg123, lame & taginfo

# usage

if [ "$#" = "0" -o "$1" = "-h" -o "$1" = "--help" ]; then

   echo "Usage : $(basename $0) file [ file ... ]"

   echo "Used to convert a list of ogg files in mp3. Directories containing ogg files are allowed."

   exit 1

fi

# function that converts an ogg file in a mp3 file

oggtomp3()

{

   ftype=$(file -b "$1" | awk -F", " '{print $1}') # type of the file

   if [ "$ftype" = "Ogg data" ]; then

      echo "Processing : $1"

   

      artist=$(taginfo "$1" | grep ARTIST | tr -d "\"" | awk -F"=" '{print $2}')

      album=$(taginfo "$1" | grep ALBUM | tr -d "\"" | awk -F"=" '{print $2}')

      title=$(taginfo "$1" | grep TITLE | tr -d "\"" | awk -F"=" '{print $2}')

      track=$(taginfo "$1" | grep TRACK | tr -d "\"" | awk -F"=" '{print $2}')

   

      if ! [ -d "$HOME/$artist - $album (mp3)" ]; then

         mkdir "$HOME/$artist - $album (mp3)"

      fi

      if [ $track -le 9 ]; then

         outfile="$HOME/$artist - $album (mp3)/0$track - $artist - $title.mp3"

      else

         outfile="$HOME/$artist - $album (mp3)/$track - $artist - $title.mp3"

      fi

   

      ogg123 -q --device=wav "$1" -f - | lame --quiet -m j -q 5 --cbr -b 128 \ 

         --tt "$title" --ta "$artist" --tl "$album" --tn "$track" - "$outfile"

   else

      echo "File is not ogg file, skipping it."

   fi

}

for i in "$@"; do

   # checking file

   if [ -d "$i" ]; then

      # processing a directory

      for j in "$i"/*.ogg; do

         if [ -f "$j" ]; then

            oggtomp3 "$j"

         fi

      done

   elif [ -f "$i" ]; then

      # processing a file

      oggtomp3 "$i"

   else

      echo "File does not exist, skipping it."

   fi

done

echo "Done."
```

Last edited by Temet on Sat Sep 02, 2006 11:52 am; edited 1 time in total

----------

## gaaruto

Merci bien Temet, je connaissais déjà mais bon, ca fait plaisir de voir ca ici  :Wink: 

Tcho ma poule   :Very Happy: 

----------

## Temet

Enlight m'a fait remarqué que l'emploi des awk est excessif dans le premier (dans le deuxième aussi mais bon), on a donc cherché comment remplacer.

Voilà:

```
#!/bin/bash

# thanks to Remi, Anvil & NaiosKAE The Korrigan

# verifying usage

if [ "$#" = "0" -o "$1" = "-h" -o "$1" = "--help" ]; then

   echo Usage : $(basename $0) image [ image ... ]

   echo Used to generate thumbnails of a list of images.

   exit 1

fi

# loop that enables the treatment of a list of images

for i in "$@"; do

   # verifying file

   if ! [ -f "$i" ]; then

      echo "$i" : file does not exist

      exit 1

   fi

   

   # get image infos

   iinfos=($(identify -format "%m %wx%h %e %b" "$i"))

   itype=${iinfos[0]}

   resolution=${iinfos[1]}

   extension=${iinfos[2]}

   isize=${iinfos[3]}

   name=$(basename "$i" .${iinfos[2]})

   # convert size to human readable format

   if [ $isize -ge 1048576 ]; then

      sizeh="$(( isize / 1048576 )) Mo"

   elif [ $isize -ge 1024 ]; then

      sizeh="$(( isize / 1024 )) Ko"

   else

      sizeh="$isize o"

   fi

   # resize image and add infos

   convert "$i" -resize 300x182 -gravity South -background Black -fill \

      white -splice 0x18 -draw "text 0,2 '$itype : $resolution - $sizeh'" \

      "$name"-thumb.$extension

done

```

Coté perfs, c'est pareil (j'ai vérifié avec un time, c'est un poil plus rapide même, mais négligeable).Last edited by Temet on Sat Sep 02, 2006 11:49 am; edited 2 times in total

----------

## fb99

rien ne vaut un peu d'exercice mano, mais chercher simplifie parfois la vie 

```
*  media-sound/mp32ogg

      Latest version available: 0.11-r4

      Latest version installed: [ Not Installed ]

      Size of downloaded files: 9 kB

      Homepage:    http://faceprint.com/code/

      Description: A perl script to convert MP3 files to Ogg Vorbis files.

      License:     Artistic

*  media-sound/ogg2mp3

      Latest version available: 0.5

      Latest version installed: [ Not Installed ]

      Size of downloaded files: 12 kB

      Homepage:    http://amor.cms.hu-berlin.de/~h0444y2j/linux.html

      Description: A perl script to convert Ogg Vorbis files to MP3 files.

      License:     GPL-2

```

au cas ou le tiens buggerais, enjoy  :Smile: 

----------

## Temet

Ouais je le savais, mais la conversion c'est une seule ligne dans le script, et comme tout le reste est bien bash, j'avais pas envie de foutre un script perl et d'être obligé de l'installer pour ça  :Wink: 

----------

