#!/bin/bash default_top=/opt/music/src function list { type="$1" suffix="$2" case $type in "track") find $top -type f | grep "\.${suffix}$" ;; "lp"|"ep"|"single"|"live"|"compilation"|"tribute") find $top -type f | grep -v -e "/child/" -e "/original_soundtrack/" -e "/various_artists/" | grep -e "/${type}/" | grep "\.${suffix}$" | sed -e 's/\/[^/]*$//' | sort -u ;; "child") find $top -type f | grep -e "/child/" | grep "\.${suffix}$" | sed -e 's/\/[^/]*$//' | sort -u ;; "ost") find $top -type f | grep -e "/original_soundtrack/" | grep "\.${suffix}$" | sed -e 's/\/[^/]*$//' | sort -u ;; "va") find $top -type f | grep -e "/various_artists/" | grep "\.${suffix}$" | sed -e 's/\/[^/]*$//' | sort -u ;; "us") find $top -type f | grep -v -e "/various_artists/" -e "/original_soundtrack/" -e "/lp/" -e "/ep/" -e "/single/" -e "/live/" -e "/compilation/" -e '/misc/' -e "/tribute/" | grep "\.${suffix}$" | sed -e 's/\/[^/]*$//' | sort -u ;; esac } function count { type="$1" suffix="$2" echo "$( list ${type} ${suffix} | wc -l)" } if [[ "$1" == "-l" ]] then mode="list" shift else mode="stats" fi arg_top="$1" if [[ "${arg_top}" != "" ]] then top="$(realpath ${arg_top})" else top="${default_top}" fi if [[ "${mode}" == "stats" ]] then track_flac="$(count track flac)" track_ogg="$(count track ogg)" track_mp3="$(count track mp3)" track_music=$((${track_flac} + ${track_ogg} + ${track_mp3})) track_avi="$(count track avi)" track_mp4="$(count track mp4)" track_mkv="$(count track mkv)" track_video=$((${track_avi} + ${track_mp4} + ${track_mkv})) track_jpg="$(count track jpg)" track_png="$(count track png)" track_picture=$((${track_jpg} + ${track_png})) track_total=$((${track_music} + ${track_video} + ${track_picture})) lp_flac="$(count lp flac)" lp_ogg="$(count lp ogg)" lp_mp3="$(count lp mp3)" lp_music=$((${lp_flac} + ${lp_ogg} + ${lp_mp3})) ep_flac="$(count ep flac)" ep_ogg="$(count ep ogg)" ep_mp3="$(count ep mp3)" ep_music=$((${ep_flac} + ${ep_ogg} + ${ep_mp3})) single_flac="$(count single flac)" single_ogg="$(count single ogg)" single_mp3="$(count single mp3)" single_music=$((${single_flac} + ${single_ogg} + ${single_mp3})) live_flac="$(count live flac)" live_ogg="$(count live ogg)" live_mp3="$(count live mp3)" live_music=$((${live_flac} + ${live_ogg} + ${live_mp3})) compilation_flac="$(count compilation flac)" compilation_ogg="$(count compilation ogg)" compilation_mp3="$(count compilation mp3)" compilation_music=$((${compilation_flac} + ${compilation_ogg} + ${compilation_mp3})) tribute_flac="$(count tribute flac)" tribute_ogg="$(count tribute ogg)" tribute_mp3="$(count tribute mp3)" tribute_music=$((${tribute_flac} + ${tribute_ogg} + ${tribute_mp3})) child_flac="$(count child flac)" child_ogg="$(count child ogg)" child_mp3="$(count child mp3)" child_music=$((${child_flac} + ${child_ogg} + ${child_mp3})) ost_flac="$(count ost flac)" ost_ogg="$(count ost ogg)" ost_mp3="$(count ost mp3)" ost_music=$((${ost_flac} + ${ost_ogg} + ${ost_mp3})) va_flac="$(count va flac)" va_ogg="$(count va ogg)" va_mp3="$(count va mp3)" va_music=$((${va_flac} + ${va_ogg} + ${va_mp3})) us_flac="$(count us flac)" us_ogg="$(count us ogg)" us_mp3="$(count us mp3)" us_music=$((${us_flac} + ${us_ogg} + ${us_mp3})) set_flac_total=$((${lp_flac} + ${ep_flac} + ${single_flac} + ${live_flac} + ${compilation_flac} + ${tribute_flac} + ${child_flac} + ${ost_flac} + ${va_flac} + ${us_flac})) set_ogg_total=$((${lp_ogg} + ${ep_ogg} + ${single_ogg} + ${live_ogg} + ${compilation_ogg} + ${tribute_ogg} + ${child_ogg} + ${ost_ogg} + ${va_ogg} + ${us_ogg})) set_mp3_total=$((${lp_mp3} + ${ep_mp3} + ${single_mp3} + ${live_mp3} + ${compilation_mp3} + ${tribute_mp3} + ${child_mp3} + ${ost_mp3} + ${va_mp3} + ${us_mp3})) set_total=$((${lp_music} + ${ep_music} + ${single_music} + ${live_music} + ${compilation_music} + ${tribute_music} + ${child_music} + ${ost_music} + ${va_music} + ${us_music})) echo "Music Statistics from ${top}:" echo "Tracks:" printf "Music: Flac: %5s OGG: %5s MP3: %5s Total: %6s\n" ${track_flac} ${track_ogg} ${track_mp3} ${track_music} printf "Video: AVI: %5s mp4: %5s MKV: %5s Total: %6s\n" ${track_avi} ${track_mp4} ${track_mkv} ${track_video} printf "Picture: JPG: %5s PNG: %5s %5s Total: %6s\n" ${track_jpg} ${track_png} "" ${track_picture} printf " %5s %5s %5s Total: %6s\n" "" "" "" ${track_total} echo "" echo "Album | Flac | OGG | MP3 || Total" echo "---------+-------+-------+-------++------" printf "LP | %5s | %5s | %5s || %5s\n" ${lp_flac} ${lp_ogg} ${lp_mp3} ${lp_music} printf "EP | %5s | %5s | %5s || %5s\n" ${ep_flac} ${ep_ogg} ${ep_mp3} ${ep_music} printf "Single | %5s | %5s | %5s || %5s\n" ${single_flac} ${single_ogg} ${single_mp3} ${single_music} printf "Live | %5s | %5s | %5s || %5s\n" ${live_flac} ${live_ogg} ${live_mp3} ${live_music} printf "Compil | %5s | %5s | %5s || %5s\n" ${compilation_flac} ${compilation_ogg} ${compilation_mp3} ${compilation_music} printf "Tribute | %5s | %5s | %5s || %5s\n" ${tribute_flac} ${tribute_ogg} ${tribute_mp3} ${tribute_music} printf "Child | %5s | %5s | %5s || %5s\n" ${child_flac} ${child_ogg} ${child_mp3} ${child_music} printf "OST | %5s | %5s | %5s || %5s\n" ${ost_flac} ${ost_ogg} ${ost_mp3} ${ost_music} printf "VA | %5s | %5s | %5s || %5s\n" ${va_flac} ${va_ogg} ${va_mp3} ${va_music} printf "UnSorted | %5s | %5s | %5s || %5s\n" ${us_flac} ${us_ogg} ${us_mp3} ${us_music} echo "---------+-------+-------+-------++------" printf "Total | %5s | %5s | %5s || %5s\n" ${set_flac_total} ${set_ogg_total} ${set_mp3_total} ${set_total} else for suffix in flac ogg mp3 avi mp4 mkv jpg png do echo "Track ${suffix}:" list track ${suffix} | sed -e "s/^/track /" echo done for type in lp ep single live compilation tribute va ost us do for suffix in flac ogg mp3 do echo "Set ${type} ${suffix}:" list ${type} ${suffix} | sed -e "s/^/${type} /" echo done done fi