I can’t really take credit for this, it’s just a slightly modified version of what’s available from this guy: http://atastypixel.com/blog/keeping-ichat-and-adium-status-in-sync-with-twitter/ You can use the instructions provided on that site to get this setup.
I increased the frequency and had to remove the tilde (~) from the path in the cronjob.
#!/usr/bin/env ruby # # Update iChat/Adium status from last.fm # # Michael Tyson # http://michael.tyson.id.au # Set last.fm username here Username = 'yourUsername' require 'net/http' require 'rexml/document' # Download timeline XML and extract latest entry url = "http://ws.audioscrobbler.com/1.0/user/" + Username + "/recenttracks.rss" xml_data = Net::HTTP.get_response(URI.parse(url)).body doc = REXML::Document.new(xml_data) latest = doc.root.elements['channel/item/title'] message = '♫ ' + latest.text.gsub(/^[^:]+:s*/, '') exit if ! message # Apply to status script = 'set message to "' + message.gsub(/"/, '\"') + ""n" + 'tell application "System Events"' + "n" + 'if exists process "iChat" then tell application "iChat" to set the status message to message' + "n" + 'if exists process "Adium" then tell application "Adium" to set status message of every account to message' + "n" + 'end tell' + "n" IO.popen("osascript", "w") { |f| f.puts(script) }
I’m getting this error message when executing the script via terminal:
“228:242: syntax error: A identifier can’t go after this identifier. (-2740)”
Any ideas?
Thank you!