ホーム > デスクトップ, 開発 > OS Xのアドレスブックのアイコンを最新のTwitterのアイコンで自動更新する

OS Xのアドレスブックのアイコンを最新のTwitterのアイコンで自動更新する

タイトル長いですが。

OS Xのアドレスブックのカードには、アイコンというか写真を設定できます。ここを設定しておくと、OS Xと同期しているiPhoneで着信あった時にアイコンが表示されたりするので、判りやすかったりします。

問題は知人各位の写真の調達なんですが、僕はmixiとかTwitterとかSkypeのアイコンを貼付けて使っています。ただみなさんアイコンを時々変更されるので、気が付くと懐かしいアイコンになっていたりします。

そこで、最新のTwitterアイコンで、アドレスブックを自動更新するスクリプトを書いてみました。

データ入力
まずは、知人各位のカードに、「URL」を追加してください。内容はTwitterのユーザページのURLである、「http://twitter.com/user_name」としてください。ラベルは「自宅」とか「勤務先」とか選べますが、何でも構いません。URLの内容がTwitterのユーザページになっている事が全てです。

スクリプトをインストール
今回作ったスクリプトはターミナルで動作するrubyスクリプトなのですが、動作させるために必要なパッケージをインストールする必要があります。ターミナルで下記のコマンドを入力してください。

gem install twitter4r

これはRubyGemsによってユーザ領域にインストールされるので、システムを壊す心配はありません。

次に、以下のスクリプトをAddressIconPaster.rbという名前のテキストファイルとして保存してください。

#!/usr/bin/ruby

require 'osx/cocoa'
OSX.require_framework 'AddressBook'
require 'rubygems'
require 'twitter'
require 'open-uri'

twitter = Twitter::Client.new(:login => ARGV[0], :password => ARGV[1])

address_book = OSX::ABAddressBook.sharedAddressBook
address_book.people.each do |person|
  urls = person.valueForProperty(OSX::KABURLsProperty)
  if urls
    for index in 0...urls.count
      url = urls.valueAtIndex(index)
      if /^http:\/\/twitter.com\/(.+)/ =~ url
         user = twitter.user($1)
         open(user.profile_image_url) do |file|
           person.setImageData(OSX::NSData.dataWithRubyString(file.read))
         end
      end
    end
  end
end
address_book.save

アイコンの自動更新を実行
ご自分のTwitterのユーザ名とパスワードを用意して、ターミナルで下記のコマンドを入力してください。

ruby AddressIconPaster.rb ユーザ名 パスワード

これで、カードにTwitterのURLを設定した全てのユーザのアイコンが最新の物に更新されます。

知人のカードにTwitterのURLを入力する事は、今回のアイコン設定が必要なくても自然な事だと思いますし、特別な設定が必要ないので良い感じではないかと思います。

せっかくだから、RubyCocoaでGUIを付ける所がまでやれよ自分……という気もしましたが、iPad弄りが楽しいのでここまでに致したく存じます。

広告
カテゴリー:デスクトップ, 開発 タグ:
  1. まだコメントはありません。
  1. No trackbacks yet.

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中

%d人のブロガーが「いいね」をつけました。