mk-mode BLOG

このブログは自作の自宅サーバに構築した Debian GNU/Linux で運用しています。
PC・サーバ構築等の話題を中心に公開しております。(クローンサイト: GitHub Pages

ブログ開設日2009-01-05
サーバ連続稼働時間
Reading...
Page View 合計
Reading...
今日
Reading...
昨日
Reading...

Ruby - TinyURL で URL 短縮!

[ プログラミング ] [ Ruby ]

こんばんは。

過去に Ruby で URL を Bitly 短縮する方法について記事にしました。

今回は、Ruby で URL を TinyURL 短縮する方法についてです。

0. 前提条件

  • Ruby 2.3.0-p0 での作業を想定。
  • RubyGems ライブラリも公開されているが、今回は使用しない。
  • Ruby を使用しているとは言っても、やっていることは指定の URL にクエリストリングを付加してアクセスして、レスポンスから短縮された URL を取得しているだけ。

1. Ruby スクリプト作成

tinyurl_shoten.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#!/usr/local/bin/ruby
# coding:utf-8
#*************************************
# TinyURL API で ロング URL を短縮する
#*************************************
#
require 'cgi'
require 'open-uri'

class TinyurlShorten
  URL_BASE = "http://tinyurl.com/api-create.php"

  def initialize(arg)
    @url_long = arg
  end

  def shorten
    puts "URL(LONG) : #{@url_long}"
    query = "url=#{URI.encode(@url_long)}"
    url_short = open("#{URL_BASE}?#{query}") { |f| f.read }
    puts "URL(SHORT): #{url_short}"  # => http://tinyurl.com/j3nceqk
  end
end

exit 0 unless __FILE__ == $0
exit 0 unless arg = ARGV.shift
TinyurlShorten.new(arg).shorten

以下は、 Net/HTTP ライブラリを使用したバージョン。

tinyurl_shoten_2.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#!/usr/local/bin/ruby
# coding:utf-8
#*************************************
# TinyURL API で ロング URL を短縮する
#*************************************
#
require 'cgi'
require 'net/http'
require 'open-uri'

class TinyurlShorten
  SERVER = "tinyurl.com"
  PATH   = "/api-create.php"

  def initialize(arg)
    @url_long = arg
  end

  def shorten
    puts "URL(LONG) : #{@url_long}"
    query = "url=#{URI.encode(@url_long)}"
    url_short = Net::HTTP.get(SERVER, "#{PATH}?#{query}")
    puts "URL(SHORT): #{url_short}"  # => http://tinyurl.com/j3nceqk
  end
end

exit 0 unless __FILE__ == $0
exit 0 unless arg = ARGV.shift
TinyurlShorten.new(arg).shorten

3. Ruby スクリプト実行

コマンドライン引数に短縮したい URL を指定して実行するだけ。

1
2
3
4
5
6
7
$ ./tinyurl_shorten.rb http://www.mk-mode.com/
URL(LONG) : http://www.mk-mode.com/
URL(SHORT): http://tinyurl.com/j3nceqk

$ ./tinyurl_shorten_2.rb http://www.mk-mode.com/
URL(LONG) : http://www.mk-mode.com/
URL(SHORT): http://tinyurl.com/j3nceqk

当方は普段は Bitly 短縮を利用しているので TinyURL 短縮を利用することはありませんが、有事の際の Bitly 短縮の代替として TinyURL 短縮について理解しておいても損はないでしょう。

以上。

Comments