#!/bin/bash # # This script looks up your lasf.fm loved titles RSS feed # ("loved" happens when you click on the heart :) and # posts the latest unposted track on twitter and identica. # It remembers the latest posting in $HOME/.lastfmloved2twitter # and it logs to $HOME/.lastfmloved2twitter.log # Run it once a minute or something like that by editing # your crontab with # crontab -e # inserting a line: # * * * * * /usr/local/bin/lastfmloved2twitter # # USE AT OWN RISK! # ################################# # CONF HERE: LAST_FM_USER="foobar" TWITTER_USER="foobar" TWITTER_PASSWORD="foobar" IDENTICA_USER="foobar" IDENTICA_PASSWORD="foobar" # END OF CONF ################################# # ONLINE? (fw-friendly, no icmp ;) curl http://google.com &> /dev/null || { echo $(date) Offline... >> $HOME/.lastfmloved2twitter.log exit 1 } function tinyurl { tinyurl_result="$(curl -s -m 30 "http://tinyurl.com/create.php" -d url="$1" \ | egrep "
http://tinyurl.com" \ | sed -r 's/([^<]*).*/\1/')" echo $tinyurl_result } ITEM="$(curl --silent http://ws.audioscrobbler.com/2.0/user/$LAST_FM_USER/lovedtracks.rss | head -20 | grep -A 5 '- ')" PUBDATE="$(echo $ITEM | sed -r 's/.*
([^<]*).*/\1/')" OLD_PUBDATE="$(cat $HOME/.lastfmloved2twitter)" [ -z "$PUBDATE" ] && { echo $(date) PUBDATE is empty. >> $HOME/.lastfmloved2twitter.log exit 1 } [ "$PUBDATE" = "$OLD_PUBDATE" ] || { # New Posting! echo "$PUBDATE" > $HOME/.lastfmloved2twitter TITLE="$(echo $ITEM | sed -r 's/.* ([^<]*).*/\1/')" LINK="$(echo $ITEM | sed -r 's/.*([^<]*).*/\1/')" TINY_LINK="$(tinyurl "$LINK")" MESSAGE="Now playing (last.fm): $TITLE ($TINY_LINK)" echo $(date) $MESSAGE >> $HOME/.lastfmloved2twitter.log curl --basic --user "$TWITTER_USER:$TWITTER_PASSWORD" --data-ascii "status=$(echo "$MESSAGE" | tr ' ' '+')" "http://twitter.com/statuses/update.json" &> /dev/null curl --basic --user "$IDENTICA_USER:$IDENTICA_PASSWORD" --data-ascii "status=$(echo "$MESSAGE" | tr ' ' '+')" "http://identi.ca/api/statuses/update.json" &> /dev/null exit 99 } # nothing to do... # echo $(date) Nothing to do... >> $HOME/.lastfmloved2twitter.log exit 0