Ruby - TinyURL で URL 短縮!
Updated:
過去に Ruby で URL を Bitly 短縮する方法について記事にしました。
今回は、Ruby で URL を TinyURL 短縮する方法についてです。
0. 前提条件
- Ruby 2.3.0-p0 での作業を想定。
- RubyGems ライブラリも公開されているが、今回は使用しない。
- Ruby を使用しているとは言っても、やっていることは指定の URL にクエリストリングを付加してアクセスして、レスポンスから短縮された URL を取得しているだけ。
1. Ruby スクリプト作成
File: 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
28
#!/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
if __FILE__ == $0
exit 0 unless arg = ARGV.shift
TinyurlShorten.new(arg).shorten
end
以下は、 Net/HTTP ライブラリを使用したバージョン。
File: 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 を指定して実行するだけ。
$ ./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