git.lirion.de

Of git, get, and gud

aboutsummaryrefslogtreecommitdiffstats
path: root/bin/mp3dir2html
diff options
context:
space:
mode:
Diffstat (limited to 'bin/mp3dir2html')
-rwxr-xr-xbin/mp3dir2html70
1 files changed, 70 insertions, 0 deletions
diff --git a/bin/mp3dir2html b/bin/mp3dir2html
new file mode 100755
index 0000000..fcb5494
--- /dev/null
+++ b/bin/mp3dir2html
@@ -0,0 +1,70 @@
+#!/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 " -h\t\tPrint this help text and exit"
+ echo -e " -d DIRECTORY\tSpecify a directory to be scanned"
+ echo -e " \t\tWithout supplying DIRECTORY, the current directory will be used."
+}
+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/\ &\ /\ \&amp\;\ /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/^/<tr><td>/g;s/\t/<\/td><td>/g;s/$/<\/td><\/tr>/g' content.csv >> content.php
+rm content.csv
+echo -e '\n\n</table>\n</div>\n</div>\n</body>\n</html>' >> content.php
+
+echo