#!/bin/bash
function get_avi_info {
typeset fileinfo=$(file "$1" | cut -d: -f2-)
typeset codec=""
if [[ $fileinfo = *video:* ]]
then
codec=$(echo "$fileinfo" |
sed -e 's/.*video: //' | sed 's/,.*//')
fi
[ "$codec" != "" ] && echo "with $codec codec."
}
function get_mp3_info {
typeset fileinfo=$(file "$1" | cut -d: -f2-)
typeset encoding=""
if [[ $fileinfo = *kBit:* ]]
then
encoding=$(echo "$fileinfo" |
sed -e 's/.*MP3, //' | sed 's/JStereo/joint-stereo/')
else
encoding=$(mpg123 -t "$file" 2>&1 | grep "^MPEG 1" |
sed -e 's/MPEG.*III, //')
fi
[ "$encoding" != "" ] && echo "encoded at $encoding."
}
echo "
"
while [ $# -ge 1 ]
do
for file in $1.*
do
dir=$(dirname "$file")
name=$(basename "$file")
nf=$(echo "$name" | fgrep -c .)
type=$(echo "$name" | awk -F. '{print $NF}')
if [ ! -f "$file" ]
then
echo "$name not yet available."
continue
fi
size=$(ls -l "$file" | awk '{print $5}')
un=0
while [ $size -gt 10000 ]
do
let un=un+1
let size=size/1000
done
units=""
case "${#size}" in
0) echo "Assertion failed: File size field is empty."
exit 1 ;;
1|2|3) value="$size" ;;
4) value="${size:0:1}.${size:1:1}"
let un=un+1
;;
esac
case "$un" in
0) units="Bytes" ;;
1) units="KB" ;;
2) units="MB" ;;
3) units="GB" ;;
4) units="TB" ;;
5) units="PB" ;;
6) units="EB" ;;
7) units="ZB" ;;
8) units="YB" ;;
esac
additional=""
case "$type" in
avi) type="AVI media"
additional=$(get_avi_info "$file") ;;
asf) type="Advanced Streaming Format" ;;
htm|html) type="Web page" ;;
mov) type="QuickTime video" ;;
mp3) type="MPEG-1 layer 3 audio"
additional=$(get_mp3_info "$file") ;;
mp4) type="MPEG-4 audio" ;;
mpeg|mpg) type="MPEG-1 video" ;;
ogg) type="OGG audio" ;;
pdf) type="Adobe PDF document" ;;
rm) type="RealMedia media" ;;
txt) type="Text file" ;;
wav) type="WAV audio" ;;
web) continue ;;
*) type="$type media" ;;
esac
echo "- $file: $type ($value $units) $additional"
done
shift
done
echo "
"
exit 0