Rubyでbit.lyのAPI経由で短縮URLを取得する

「ブログからRSSをとってきて、更新があったらTwitterにツイートをPOSTする。」

ということをやっているんだけど、URLの短縮化はAPIまかせにしているので
140字の制限に対してまだ余裕がある場合はURLは
「https://blog.bungu-do.jp/archives/1646」
と、そのまま表示される

この場合URLの文字数は37文字

最初はまあ、bungu-doという文字も見えていいかなと思ったけど、
RT(Retweet)された場合などにURLがそのままだと結構文字数制限が
つらくなってくることに気づいた。

だから短縮URLなんだとようやく気づいた。

なので、文字数に足りる足りないに限らず、短縮URLにしておくことに決めた。

そこで、下記記事を参考に当然のごとくRubyでクラスにshortenメソッドを追加した。

参考記事:
bit.ly (短縮URL) API呼び出し (その1) m-kawato@hatena_diary

後はPOSTするところにshortenメソッドをかますだけでOK

  def shorten(long_url)
    id = 'USER_ID'
    api_key = 'API_KEY'
    version = '2.0.1'

    query = "version=#{version}&longUrl=#{long_url}&login=#{id}&apiKey=#{api_key}"
    result = JSON.parse(Net::HTTP.get("api.bit.ly", "/shorten?#{query}"))
    result['results'].each_pair {|long_url, value|
      return value['shortUrl']
    }
  end

bit.lyのアカウントを取得すればAPI KEYをもらえます。

通常URL
https://blog.bungu-do.jp/archives/1646 【37文字】

短縮URL
http://bit.ly/3OcFKj 【20文字】

37文字から20文字へとあんまり変わらないような気もするけど・・・・

もっと長いURLでも20文字になる。

たとえば

irb(main):001:0> 'http://japan.cnet.com/news/biz/story/0,2000056020,20403566,00.htm'.size
=> 65
irb(main):002:0> 'http://bit.ly/42A19r'.size
=> 20

65文字から20文字へと3分の1以下になる。

うまくいけばこの記事のPOSTもちゃんとツイートされるはず・・・

追記:
無事更新されましたとさ
bitly

関連記事

    None Found

“Rubyでbit.lyのAPI経由で短縮URLを取得する” への1件の返信

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です