--- layout: old_post title: Last.fmの聴いてる曲をTwitterへ送るRailsデスクトップアプリ permalink: /tatsuya/show/321-last-fm-twitter-rails ---

RailsでApolloのようにデスクトップアプリを実現するSlingshot、やっと公開されたようなので試してみる。
どうせなので昨日の続きでTwitterのAPIをいじるアプリケーションで、iTunesなどで現在聴いている曲をLast.fmから取得しTwitterへ投げるアプリケーションを作ってみた。

・Webアプリ版はこちら http://twitt.tkmr.org/lastfm
・デスクトップアプリ版はこちらから(Macのみ、Winはそのうち)

  1. TwitterのID / Passwordを入力
  2. Last.fmのIDを入力
  3. Submit

Last.fmから現在聴いている曲を取ってきて、Twitterへ投げます。
その後20分に1回JavaScriptでリロードを行います、ブラウザを閉じると終了。

以下Railsアプリ作成→Slingshotアプリ作成の流れです。

1) 普通にRailsアプリケーションを作る


Slingshotは意識せず普通に作ればOK。簡単な物なので今回はDBは使わない、sessionでいいや。昨日と同様に今回もActiveResource使って。

status = Twitter::Status.new
status.text = "今これ聴いてる"
status.save
#POST http://twitter.com/statuses.xml

とか書きたかったけど、TwitterのAPIと合わないので残念。一応無理矢理使ってみた、でもこれならNet::HTTPで良いね:(

Twitter::Status.post(:update, {:status=>"今これ聴いてる"})

2) Slingshotを設定

#Subversionで落としてくる
svn co http://svn.joyent.com/slingshot/osx slingshot
#作成したRailsアプリをVMディレクトリへ移動
cp -r myapp slingshot/VM/trunk/
#VMディレクトリをSlingshot.appの中に移動
mv slingshot/VM slingshot/Slingshot.app/

3) データベースをSQLite3に変更


今回は関係無いけど、MySQLを設定している場合は config/database.yml を編集してSQLite3にしておく

4) 完了


動かしてみる、Slingshot.appをダブルクリック。

確かに、デスクトップで動作してる!!
やってみると本当に簡単、Webアプリと同じコードでデスクトップアプリが動くのは良いね。今回で言うと

と場合によって使い分けられるかも。あとはWebとローカルの同期・デスクトップ固有の機能・Update機能、なんて辺りも試してみよう。

ちなみに、既にSlingshotを試した方が言っているように
Railsでデスクトップアプリを作ってみる
Slingshotの評判
さすがにまだまだ問題点が目に止まるかも。中でmongrelが動いてるってのも多少強引だと思うし、完成したパッケージが圧縮しても30MBを超えるのはきつい。気軽に配布ってのを想像してたのでサイズはもう少し削りたいかも・・・・・。まぁ面白いプラットフォームになりそうなのは確かなので見守っていきたい。

おまけ:その他 Last.fm(iTunes)→Twitter をやっているサイト
iTunesで聞いている曲をTwitterにPostするPythonのスクリプト
[JavaScript]iTunesで聴いてる曲をTwitterにポストする
Plagger使ってLastFMの最近聴いた音楽をTwitterに投稿する
色々あるね。にしてもやっぱPlagger良いな