LoginSignup
8

More than 5 years have passed since last update.

TwitterのプロフィールアイコンのURLが変わってしまったので設定し直す

Posted at

ってのを、自分が管理しているいくつかのウェブアプリでやった。2014年1月のこと。

condition = "icon_url LIKE '%twimg%' AND icon_url NOT LIKE '%pbs%'"

User.where(condition).order(:id).each do |user|
  puts "(id:%d) @%s" % [user.id, user.name]

  url = user.icon_url

  begin
    open(url)
  rescue => error1
    if error1.class == OpenURI::HTTPError
      begin
        new_url = Twitter.user(user.twitter_id.to_i).profile_image_url
        new_url_replaced = new_url.sub(/_normal(\.[^.]+)$/) { |e| $1 }

        puts "\t#{url}\n\t=> #{new_url_replaced}"

        open(new_url_replaced)

        user.update_attribute(:icon_url, new_url_replaced)
      rescue => error2
        p error2
      end
    end
  else
    p error1
  end

  sleep 10
end

ActiveRecord の User ってモデルがあって icon_url っていうカラムにプロフィール画像の URL を格納してある場合の処理例。

こういうことがあったので、今後は Twitter の画像の URL をそのまま参照せずに、Amazon S3 の bucket 等を自分で用意してそこに画像をコピーして配置して参照する方法を取っていきたいな、という気持ち。

Qiita さんも、アイコンが死んでいる例をちょいちょい見かけて、のぞいてみたらやっぱり Twitter の URL っぽいやつがあったので、大変ですよね、お疲れさまです。アイコンの死骸があると表示も崩れて悲しいから、うまいこと対応できるといいですね。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8