今回はTwitterのBOTから離れ、iTunesから曲名とアーティストを取得し、Twitterへ投稿するスクリプトを書いてみることにしました。
まず、iTunesからそれらの情報を取得する方法をググってみました。
すると、一番最初に出てくるのはAppleScript。しかし、これはMac専用らしいので除外。
続いて出てきたのは、C#。でも、私はC++までしか経験がない上、あくまでもRubyで実現することを前提としていたのでもちろん除外。
で、探しているうちに出てきたのがWin32ole。
JavaScriptのサンプルコードを参考にしたが、どうもCOMというものが絡んでいるらしく、それを使えば出来るらしい。
COMってなんぞやって人は、ここを参照されたし。
要するに、これ使えばWindows上で動作するプログラムを様々な言語から操作することが出来るってことらしい。
まぁ、とりあえず、出てきたJavaScriptのコードを参考に、曲名とアーティストを取得するスクリプトを書いてみました。
ちなみに、10行以内で収まるくらい非常に簡単なコードだった。
require 'win32ole' require 'kconv' #再生中のトラックを取得 itunes = WIN32OLE.new('iTunes.Application'); track = itunes.CurrentTrack; #テキスト作成 strNowPlaying = "NowPlaying♪ " + track.Artist + " - " + track.Name; #コンソールへ出力 print(Kconv.tosjis(strNowPlaying));たったこれだけ。意外と簡単。
行ごとにセミコロンが付いているのは、私の癖だと思ってください。
Rubyでは付けても付けなくても良いらしいとのことだが、私はあえて付けています。
あとは、作成されたテキストをTwitterへ投稿するようにするだけです。
require 'rubygems' require 'rubytter' require 'win32ole' require 'kconv' #idとパスワードの格納 id = 'TwitterID' pass = 'Password' #インスタンス作成 account = Rubytter.new(id,pass) #再生中のトラックを取得 itunes = WIN32OLE.new('iTunes.Application'); track = itunes.CurrentTrack; #テキスト作成 strNowPlaying = "NowPlaying♪ " + track.Artist + " - " + track.Name; #Twitterへポスト account.update(Kconv.kconv(strNowPlaying,Kconv::UTF8)); #コンソールへ出力(確認用) print(Kconv.tosjis(strNowPlaying));超簡単。
これでAPI経由にて曲の投稿ができます。
#musicっていうハッシュタグがあるから、それを付けてみるのも良いし、OAuth経由でポストするようにして、あたかも専用クライアントから投稿しているようにするのも面白いと思います。
いっそ、専用クライアントを自作してしまうのも手。
とりあえず、COMってやつを利用すればいろいろなことが出来そうです。今見ているサイト名とそのリンクを投稿するとか。
今回はこんなとこ。BOT作成の方はまだ難航中です・・うぅむ・・。
スポンサードリンク