Cerca nel blog

mercoledì 2 maggio 2012

Creare playlist .pls e .m3u

Quest script permette di creare le playlist degli mp3 , crea le playlist per album e per artista , in due formati , ovvero .m3u e . pls , per usarlo basta metterno nella directory degli mp3 e lanciarlo
NB: script bash linux necessita del pacchetto mp3info



#! /bin/bash
#echo "scriptino lanciare con ./  v0.1"
#attenzione necessita del pacchetto mp3info

IFS=""
ls -1R | while read e
do

if echo "$e" | grep  "/"
then

export a=$(echo ${e} | sed 's/://g')

d=$a

echo $d"  sd"

#separa la directory di base dalla successiva in $d1 e $d2
export lu=$(echo ${#d})
let lu=$lu-1
export co=$(echo ${d:0:1})

while echo ${d:$lu:1} | grep -v "/"
do
let lu=$lu-1
done
export d1=$(echo ${d:0:$lu+1})
export d2=$(echo ${d:$lu+1:${#d}-$lu})


let scrivi=0
let conteggio=0

while read i
do



if echo "$i" | grep -i ".mp3"
then
let conteggio=$conteggio+1
if [ "$scrivi" -eq 0 ]
then
#scrive m3u
echo "#EXTM3U" >> $d1"/"$d2".m3u"
echo "" >> $d1"/"$d2".m3u"

#scrive pls
echo "[playlist]" >> $d1"/"$d2".pls"
echo "" >> $d1"/"$d2".pls"


let scrivi=1
fi
# #EXTINF:120,Titolo di esempio
export duratam=$(mp3info -p %m $d"/"$i)
export duratas=$(mp3info -p %s $d"/"$i)
let durata=($duratam*60)+$duratas
i2=$i
export i2=$(echo ${i2} | sed 's/\.mp3/ /g')
echo "#EXTINF:"$durata","$i2 >> $d1"/"$d2".m3u"
d3=$d
export d3i=$(echo ${d3} | sed 's/\./ /g')
t="$d2"'\'"$i"
echo "$t" >> $d1"/"$d2".m3u"
echo "" >> $d1"/"$d2".m3u"

#scrive pls
t="$d2"'/'"$i"
echo "File$conteggio=$t" >> $d1"/"$d2".pls"
echo "Title$conteggio=$i2" >> $d1"/"$d2".pls"
echo "Length$conteggio=$durata" >> $d1"/"$d2".pls"
echo "" >> $d1"/"$d2".pls"


fi


done < <(ls $d -1)


if (( "$conteggio" > 0 ))
then

echo "NumberOfEntries=$conteggio" >> $d1"/"$d2".pls"
echo "" >> $d1"/"$d2".pls"
echo "Version=2" >> $d1"/"$d2".pls"
echo "" >> $d1"/"$d2".pls"

fi
fi
done



#playlist artista #############################################
ls -1 | while read e
do
if file "$e" | grep  ": directory"
then
let scrivi=0
let conteggio=0


while read e2
do

if echo "$e2" | grep  "/"
then

export a=$(echo ${e2} | sed 's/://g')
d=$a

#separa la directory di base dalla successiva in $d1 e $d2
export lu=$(echo ${#d})
let lu=$lu-1
export co=$(echo ${d:0:1})

while echo ${d:$lu:1} | grep -v "/"
do
let lu=$lu-1
done
export d1=$(echo ${d:0:$lu+1})
export d2=$(echo ${d:$lu+1:${#d}-$lu})



while read i
do


if echo "$i" | grep -i ".mp3"
then
let conteggio=$conteggio+1
if [ "$scrivi" -eq 0 ]
then
#scrive m3u
echo "#EXTM3U" >> "$e.m3u"
echo "" >> "$e.m3u"
#scrive pls
echo "[playlist]" >> $e".pls"
echo "" >> $e".pls"


let scrivi=1
fi

# #EXTINF:120,Titolo di esempio
export duratam=$(mp3info -p %m $d"/"$i)
export duratas=$(mp3info -p %s $d"/"$i)
let durata=($duratam*60)+$duratas
i2=$i
export i2=$(echo ${i2} | sed 's/\.mp3/ /g')
echo "#EXTINF:"$durata","$i2 >> "$e.m3u"
d3=$d
export d3i=$(echo ${d3} | sed 's/\./ /g')
t="$d"'/'"$i"
export t=$(echo ${t} | sed 's_/_\\_g') # linux-windows
echo "$t" >> "$e.m3u"
echo "" >> "$e.m3u"

#scrive pls
echo "File$conteggio=$d3i/$i" >> $e".pls"
echo "Title$conteggio=$i2" >> $e".pls"
echo "Length$conteggio=$durata" >> $e".pls"
echo "" >> $e".pls"

fi

done < <(ls $d -1)

if (( "$conteggio" > 0 ))
then

echo "NumberOfEntries=$conteggio" >> $e".pls"
echo "" >> $e".pls"
echo "Version=2" >> $e".pls"
echo "" >> $e".pls"
fi

fi
done < <(ls $e -1R)


fi
done