読者です 読者をやめる 読者になる 読者になる

ATND から参加者の Twitter アイコン画像をダウンロードする Ruby スクリプト

元ネタ こくちーずから申込者のアイコンをダウンロードし、座席表用のアカウントつき画像を作成する座席表職人のためのGroovyスクリプト - みちしるべ

Ruby の勉強がてら、ATND から参加者の Twitter アイコンをダウンロードするスクリプトを書いてみました。
ATND は API が用意されてるので元ネタよりもずっと簡単です。
今ままで Web アプリなんて作ったことないので、Web API とか JSON とか新鮮で楽しかったです。

元ネタではアイコンに TwitterID を埋め込んだ画像を出力してますが、面倒なので、とりあえずファイル名を TwitterID にして出力するようにしています。
そのうち、画像処理ライブラリ探して再チャレンジします。

require 'open-uri'
require 'json'

atnd_id = ARGV.first

url = "http://api.atnd.org/events/users/?format=json&event_id=#{atnd_id}"

json = open(url).read
result = JSON.parse(json)
members = result['events'][0]['users']

members.map do |member|
  id = member["twitter_id"]
  imgfile = member["twitter_img"]

  if (id && member["status"] == 1)
    ext = File::extname(imgfile)
    outfile = id + ext

    open(outfile, 'wb') do |dst|
     open(imgfile) do |src|
        dst.write(src.read)
      end
    end
  end
end

基本構造は ATNDから参加者のTwitterアカウントを抜き出すRubyスクリプト - Qiita を参考にしています。

どうもまだ、ブロック構文とか変数の型を宣言しないとか、Ruby の文法に慣れません。
もっと使わないとだめですね。