#AutoArtist by oorza
#
#Copies information from last.fm and submits it to artist wiki's on what.cd
#Current version is 0.7.1
#! /bin/bash
#script wide variables
declare -a SARRAY
ARTIST="none"
AID="none"
#Menu options
OPTIONS="\"Change artist\" \"Change Artist ID\" \"Download information from last.fm\" \"Download and compare current information from what.cd\" \"Post all to what.cd\" \"Submit Similar Artists\" \"Post image to what.cd\" \"Post description to what.cd\" \"Show current info\" \"quit\""
function getInfo {
wget -q --keep-session-cookies --load-cookies=./cookies.txt --save-cookies=./cookies.txt \
-U "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.12) Gecko/20080201 Firefox/2.0.0.12" \
--no-check-certificate "http://last.fm/music/$ARTIST/+wiki?action=edit" -O - |
perl -0777 -lne 'print for m[id="wikitextarea">(.*?)]sg' |
perl -0777 -lpe 's/\[.*?]//g' |
sed -e 's/\"/\"/g' > ./information/$ARTIST
IMG=$( wget -q --keep-session-cookies --load-cookies=./cookies.txt --save-cookies=./cookies.txt \
-U "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.12) Gecko/20080201 Firefox/2.0.0.12" \
--no-check-certificate "http://last.fm/music/$ARTIST/+wiki?action=edit" -O - |
grep imgHolder | grep -o 'src=".*[png|jpg|jpeg|gif]"' | sed 's/src="\(.*\)" alt.*/\1/' )
echo Using image: $IMG
}
function postDesc {
if [ "$ARTIST" = "none" ]; then
echo "You need an artist!"
elif [ "$AID" = "none" ]; then
echo "You need an artist ID!"
else
getOldImg
wget -q --keep-session-cookies --load-cookies=./cookies.txt --save-cookies=./cookies.txt \
-U "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.12) Gecko/20080201 Firefox/2.0.0.12" \
--post-data="body=$( cat ./information/$ARTIST )&image=$OLD&summary=automatically.generated.description&action=edit" \
--no-check-certificate "http://what.cd/artist.php?action=edit&artistid=$AID" && rm artist* &&
echo "Successfully updated what.cd! Artist and Artist ID reset." && ARTIST="none" && AID="none" && OLD=""
fi
}
function getOldImg {
OLD=$( wget -q --keep-session-cookies --load-cookies=./cookies.txt --save-cookies=./cookies.txt \
-U "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.12) Gecko/20080201 Firefox/2.0.0.12" \
--no-check-certificate "http://what.cd/artist.php?action=edit&artistid=$AID" -O - |
grep "name=\"image\"" | sed 's/.*value=\"\(.*\)\".*/\1/' )
}
function postIMG {
if [ "$ARTIST" = "none" ]; then
echo "You need an artist!"
elif [ "$AID" = "none" ]; then
echo "You need an artist ID!"
else
wget -q --keep-session-cookies --load-cookies=./cookies.txt --save-cookies=./cookies.txt \
-U "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.12) Gecko/20080201 Firefox/2.0.0.12" \
--post-data="image=$IMG&summary=automatically.generated.image&action=edit" \
--no-check-certificate "http://what.cd/artist.php?action=edit&artistid=$AID" && rm artist*
fi
}
function resetMenu {
PS3="Main menu (press Enter for options): "
}
function whatSearch {
PS3="Search menu (press Enter for options): "
select choice in Search Manual Return; do
if [ "$choice" = "Search" ]; then
if [ "$ARTIST" = "none" ]; then
echo "you need an artist!"
break
else
echo "Search for $ARTIST returns: "
wget -q --keep-session-cookies --load-cookies=./cookies.txt --save-cookies=./cookies.txt \
-U "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.12) Gecko/20080201 Firefox/2.0.0.12" \
--no-check-certificate "http://what.cd/torrents.php?artistname=$ARTIST&action=advanced" -O - |
grep "a href=\"artist.php" |
sed 's/.*id=\(.*\)\" title=\"View Artist\">\(.*\)<\/a> -.*/\1 \2/g'
echo -e "\nWhat is the Artist ID?"
read -e AID
resetMenu
break
fi
elif [ "$choice" = "Manual" ]; then
echo "What is the artist ID?"
read -e AID
resetMenu
break
elif [ "$choice" = "Return" ]; then
resetMenu
break
else
echo "Not a valid choice, try again!"
fi
done
}
function getArtist {
echo "Artist?"
read -e ARTIST
ARTIST=$( echo $ARTIST | sed -e 's/ /+/g' )
if [ -e information/$ARTIST ]; then
rm ./information/$ARTIST
echo "old $ARTIST information removed!"
fi
AID="none"
}
function compareOldNew {
PS3="Compare menu (press Enter for options):"
select compChoice in Current Last.fm Return; do
if [ "$compChoice" = "Current" ]; then
if [ "$AID" = "none" ]; then
echo "You need an artist ID!"
PS3="Press enter for options or select a number: "
break
else
wget -q --keep-session-cookies --load-cookies=./cookies.txt --save-cookies=./cookies.txt \
-U "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.12) Gecko/20080201 Firefox/2.0.0.12" \
--no-check-certificate "http://what.cd/artist.php?id=$AID" -O - |
perl -0777 -lne 'print for m[class="body">(.*?)]sg' |
sed 's/
//g' | sed 's/\"/\"/g'
echo -e "\n"
fi
elif [ "$compChoice" = "Last.fm" ]; then
cat ./information/$ARTIST
echo -e "\n"
elif [ "$compChoice" = "Return" ]; then
resetMenu
break
else
echo "Not a valid choice, try again!"
fi
done
}
function getSimilars {
COUNT=0
if [ "$ARTIST" = "none" ]; then
echo "You need an artist!"
else
wget -q http://last.fm/music/$ARTIST -O - |
grep "
array
fi
exec 10&-
}
function submitSimilars {
if [ "$ARTIST" = "none" ]; then
echo "You need an artist!"
elif [ "$AID" = "none" ]; then
echo "You need an artist ID!"
else
for (( i=0; i<${#SARRAY[@]}; i++ )); do
wget -q --keep-session-cookies --load-cookies=./cookies.txt --save-cookies=./cookies.txt \
-U "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.12) Gecko/20080201 Firefox/2.0.0.12" \
--post-data="action=add_similar&artistid=$AID&submit=+&artistname=${SARRAY[i]}" \
--no-check-certificate "http://what.cd/artist.php?id=$AID"
rm artist.php*
SARRAY[$i]=""
done
fi
rm array
}
if [ -d information/ ]; then
echo "directory exists!"
else
mkdir information
echo "directory created!"
fi
# and this is why I love bash menus
eval set $OPTIONS
resetMenu
select opt in "$@"; do
if [ "$opt" = "Change artist" ]; then
getArtist
elif [ "$opt" = "Change Artist ID" ]; then
whatSearch
elif [ "$opt" = "Download information from last.fm" ]; then
getInfo
getSimilars
elif [ "$opt" = "Download and compare current information from what.cd" ]; then
compareOldNew
elif [ "$opt" = "Post all to what.cd" ]; then
submitSimilars
postIMG
postDesc
elif [ "$opt" = "Submit Similar Artists" ]; then
submitSimilars
elif [ "$opt" = "Post image to what.cd" ]; then
postIMG
elif [ "$opt" = "Post description to what.cd" ]; then
postDesc
elif [ "$opt" = "Show current info" ]; then
echo "Current artist: $ARTIST, Artist ID: $AID"
elif [ "$opt" = "quit" ]; then
exit
else
echo "Not a valid selection, try again!"
fi
done