#!/bin/bash
#(C) http://matvey.org.ru

PATH=$PATH:/bin:/usr/bin:/usr/local/bin:/sbin:/usr/sbin:/usr/local/sbin
LANG=C
cmddir=`dirname $0`
cmdname=`basename $0`
newtmpdir=`mktemp -d /tmp/$cmdname.XXXXXX`
mkdir -p "${newtmpdir}" 
pagebuffer="$newtmpdir/musicpage"
cookies="$newtmpdir/musiccookie"
LOGIN_URL="http://vkontakte.ru/login.php"
phpcli=`which php`
#ua='Mozilla/5.0 (X11; U; Linux i386; en-US; rv:1.8.0.5) Gecko/20060902 Firefox/1.5.0.5'
ua='Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)'
mp3rename=`which mp3rename`
curl=`which curl`

function usage() {
cat <<EOF 
USAGE: ./$cmdname LOGIN PASSWORD USERID --norename 

	--norename is optional, if you have no mp3rename installed.

Script will store Music in your $HOME/Music/ directory.
Order of arguments is important. 
Script will not tell you about wrong password.
Script will continue downloading files after interrupt.

Enjoy! ( Send your comments to matvey spam copters.ru )
EOF
} 

if [ "$1" = "" ]
        then
                usage
                exit 1
        else
		LOGIN="$1"
fi

if [ "$2" = "" ]
        then
                usage
                exit 1
        else
                PASSWORD="$2"
fi  

if [ "$3" = "" ]
        then
		usage
		exit 1
	else
		echo $3 | grep -q "id"
			if [ "$?" == "0" ]
				then
					USERID=`echo $3 | awk -F"id" '{print$2}'`
					MUSIC_URL="http://vkontakte.ru/audio.php?id=$USERID"
				else
				        USERID="$3"
                			MUSIC_URL="http://vkontakte.ru/audio.php?id=$USERID"
			fi
fi


if [ "$4" == "--norename" ]
        then
                echo "Renaminig skipped"
        else

                if [ "$mp3rename" == "" ]
                        then
cat <<EOF
	
	mp3rename not found! Please install it.  

In Debian/Ubuntu Linux you can run: sudo apt-get install mp3rename

For MacOSX you can use option --norename , iTunes will rename your files automatically.
EOF
                                exit 1
                fi
fi

if [ "$curl" == "" ]
        then                
cat <<EOF

	Curl not found, please install it! 
In Debian/Ububtu you can run: sudo apt-get install curl.
EOF
                exit 1
fi

function cleanup () {
	#echo $pagebuffer 
        rm -rf "$newtmpdir"
}

trap 'cleanup' EXIT
trap 'cleanup' SIGTERM



#login
curl --connect-timeout 120 -c $cookies -b $cookies --user-agent "$ua" --referer "$LOGIN_URL" -d "try_to_login=1&email=$LOGIN&pass=$PASSWORD&expire=1&submit=."  "$LOGIN_URL" > $pagebuffer

#get mp3 links
curl -L --connect-timeout 120 -c $cookies -b $cookies --user-agent "$ua" --referer "$LOGIN_URL" "$MUSIC_URL" > $pagebuffer

#set defaults
mp3rename -s "(&a-&b)-&t" &> /dev/null

#http://http://cs4259.vkontakte.ru/u31448419/audio/f3c837ee4a8d.mp3.vkontakte.ru/u410/audio/.mp3
#download files! :)
for i in `grep 'return operate' $pagebuffer |awk -F"(" '{print$2}' |awk -F")" '{print$1}' | awk -F"," '{print$2}' |awk -F"'" '{print$1$2$3}'`; 
do 
	cd $newtmpdir
	echo "$i"
	curl -C - -O "$i"
done

#get ammount
ammount=`ls $newtmpdir/*.mp3 |wc -l`

#change timestamp
touch $newtmpdir/*.mp3

echo "Downloaded $ammount mp3 file from user $USERID"

if [ "$4" == "--norename" ]
        then
                echo "Renaminig skipped"
        else

		#rename and move files
		mp3rename $newtmpdir/*.mp3 &> /dev/null
fi

mkdir -p $HOME/Music/$USERID &> /dev/null
mv $newtmpdir/*.mp3 $HOME/Music/$USERID
echo "Stored music in $HOME/Music/$USERID"
exit 0

