#!/bin/bash # # mklst A playlist-generator for mp3blaster # # Version: 0.4-0 31-May-2004 kaethorn@stud.uni-stuttgart.de echo "mklst - v0.4-0" if [ -z "$1" ] then echo "Usage: mklst [list-output] [directory]" exit 1 else if [ -z "$2" ] then echo "Usage: mklst [list-output] [directory]" else EXTENSION=$(echo "$1" | sed -e 's/.*\.//') FOLDER="$2" if [ "$EXTENSION" == "lst" ] then OUT="$1" else OUT=""$1".lst" fi fi fi TEMP=/tmp/mklist-temp # clean beforehand echo -n " - clearing old files ..." if [ -e "$OUT" ] then rm $OUT fi if [ -e "$TEMP" ] then rm $TEMP fi echo ".done" # list all the dirs and format them to mp3blaster-list format; need to add a fake-line: echo -n " - building file-index ..." find $FOLDER | egrep -i ".mp3|.ogg" | sort | sed -e 1i//fake/line >> $TEMP echo ".done" # playlists have to start like this... echo -n " - formatting file-index ." echo "" >> $OUT echo -n "." MAXLINE=$(wc -l < "$TEMP") LN=1 # begin at line 1 STAT=0 echo -n ".." while [ "$LN" -le "$MAXLINE" ] do if [ "$STAT" -eq 0 ] then echo -n -e "\b-" let STAT="$STAT"+1 else if [ "$STAT" -eq 1 ] then echo -n -e "\b\\" let STAT="$STAT"+1 else if [ "$STAT" -eq 2 ] then echo -n -e "\b|" let STAT="$STAT"+1 else echo -n -e "\b/" let STAT=0 fi fi fi F1=$(cat $TEMP | sed -n -e "$LN"p | sed -e 's/\/.*\///g' | sed -e 's/\[/\\\[/g' | sed -e 's/\]/\\\]/g' | sed -e 's/\./\\\./g') FOLDER1=$(cat $TEMP | sed -n -e "$LN"p | sed -e 's/'"$F1"'//' | sed -e 's/\/$//' | sed -e 's/\/.*\///g') FILE1=$(cat $TEMP | sed -n -e "$LN"p) let LN2="$LN"+1 F2=$(cat $TEMP | sed -n -e "$LN2"p | sed -e 's/\/.*\///g' | sed -e 's/\[/\\\[/g' | sed -e 's/\]/\\\]/g' | sed -e 's/\./\\\./g') FOLDER2=$(cat $TEMP | sed -n -e "$LN2"p | sed -e 's/'"$F2"'//' | sed -e 's/\/$//' | sed -e 's/\/.*\///g') FILE2=$(cat $TEMP | sed -n -e "$LN2"p) #debug: #echo $FOLDER1 #echo $FOLDER2 if [ "$FOLDER1" == "$FOLDER2" ] then echo $FILE1 | sed -e 's/./\t&/' >> $OUT else echo $FILE1 | sed -e 's/./\t&/' >> $OUT echo "" >> $OUT echo "" >> $OUT fi LN=$(($LN+1)) done echo -e "\b.done" echo -n " - cleaning file-index ..." # remove the fakeline: cat $OUT | sed -e '/fake\/line/d' > $OUT # remove obsolete <\GROUP> in the 2nd line: cat $OUT | sed -e 2d > $OUT # remove last line: cat $OUT | sed -e '$d' > $OUT echo ".done" echo -n " - cleaning temp-file ..." # purge the temp-file if [ -e "$TEMP" ] then rm $TEMP fi echo ".done" exit 0