#!/bin/bash # Paste a file here that contains the HTML code to be placed _before_ the MP3 tag list. DIRLISTHEAD="/etc/mp3dir2html/head.php" # Regular expression that is to be excluded in the final listing DIRLISTEX='^Susperia|^B.*hse.*nkelz' # CORE SCRIPT FROM HERE. DON'T FIDDLE IF YOU DON'T KNOW WHAT YOU'RE DOING. function m3l_help { echo "Usage: $(basename $0) [options]";echo echo "Options:" echo -e "\t-h\t\tPrint this help text and exit" echo -e "\t-d DIRECTORY\tSpecify a directory to be scanned" } while getopts "ht:r:p:v" params; do case $params in "h") m3l_help exit 0 ;; "d") SDIR="$OPTARG" ;; esac done if [ "$SDIR" == "" ]; then SDIR="*" fi function m3l_rm_verb { #As -q nukes away too much, we have to omit that and remove status stuff here: grep -v 'directories scanned' | grep -v 'files read' } function m3l_prep_table { #Let's create a tab separated table with empty values where we have none but need at least an empty one. # (Besides, this kind of rhymes.) # Additionally: ampersand handling sed 's/========.*/====/g' | sed 's/\t$/\t" "/g' | tr '\n' '\t' |\ sed 's/====/\n====/g;s/====\t/====/g' |\ sed 's/Artist\t//;s/Title\t//;s/Album\t//;s/\(.*\)Year\t/\1/;s/\(.*\)Track\t/\1/' |\ uniq | sed 's/====//g;s/\ &\ /\ \&\;\ /g' | tr -s '\n' |\ sed 's/\t0\t/\t"0"\t/g' } function m3l_fin_table { #Sort stuff, grep away lame artists and finally: put everything in order and remove the quotation marks # from the entries again (leaving a whitespace char on an empty entry actually). sort -t \t -k 1,2 -k 2,3 -k 4,5 -k 3,4 |\ grep -vE "$DIRLISTEX" |\ awk -F '\t' '{print $1"\t"$2"\t"$3}' |\ sed 's/" "/ /g;s/"0"/0/g' } exiftool -ext .mp3 -ext .MP3 -ext .wma -ext .WMA -ext .ogg -ext .OGG -lang en -Artist -Title -Album -Year -Track -t -r $SDIR |\ m3l_rm_verb |\ m3l_prep_table |\ m3l_fin_table > content.csv cat "$DIRLISTHEAD" > content.php sed 's/^/