mk-mode BLOG

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

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

Ruby - Twitter アカウント(Screen Name)登録済みチェック!

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

こんばんは。

Twitter アカウントの Screen Name (@xxxx の部分) が登録済みか否かをチェックするための Ruby スクリプトです。

1個や数個程度なら Web ブラウザで https://twitter.com/xxxxxxxx のように URL を指定してチェックすればよいのですが、一度に大量にチェックしたいケースがあったために Ruby スクリプトを作成した次第です。

以下、その記録です。

0. 前提条件

  • Linux Mint 17(64bit) での作業を想定。
  • Ruby 2.1.5-p273 での作業を想定。
  • 単純に HTTP ステータスが HTTPSuccess になるかどうかをチェックしているだけ。

1. Ruby スクリプトの作成

以下のような Ruby スクリプトを作成した。

check_twitter_accounts.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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
#! /usr/local/bin/ruby
# coding: utf-8
#= Twitter アカウント登録済みチェック
#
# date          name            version
# 2014.12.07    mk-mode.com     1.00 新規作成
#
# Copyright(C) 2014 mk-mode.com All Rights Reserved.
#---------------------------------------------------------------------------------
# 引数 : なし
#---------------------------------------------------------------------------------
#++
require 'net/http'

class CheckTwitterAccount
  URL = "https://twitter.com/"
  ACCOUNTS = [
    "hogehoge",
    "fugafuga",
    "zxc123vbn456m"
  ]

  # Main process
  def exec
    begin
      ACCOUNTS.each do |ac|
        res = url_request("#{URL}#{ac}")
        puts res ? "  * #{ac}" : "  - #{ac}"
      end
    rescue => e
      STDERR.puts "[#{e.class}] #{e.message}"
      e.backtrace.each{|trace| STDERR.puts "\t#{trace}"}
      exit 1
    end
  end

private

  # Check URL request recursively
  #   @param  url[String]
  #   @param  limit[Integer]
  #   @return [Boolean]
  def url_request(url, limit = 5)
    return false if limit == 0

    begin
      res = Net::HTTP.get_response(URI.parse(url))
    rescue
      return false
    else
      case res
      when Net::HTTPSuccess
        return true
      when Net::HTTPRedirection
        url_request(res['location'], limit - 1)
      else
        return false
      end
    end
  end
end

CheckTwitterAccount.new.exec

2. Ruby スクリプト実行

実行してみる。
Twitter アカウントが登録済み(URL が存在)の場合は 行頭に * を、未登録(URL が未存在)の場合は行頭に - を出力するようにしている。

1
2
3
4
$ ./check_twitter_account.rb
  * hogehoge
  * fugafuga
  - zxc123vbn456m

3. その他

Ruby スクリプトを見ても分かるとおり、HTTP ステータスをチェックしているだけである。
よって、 Twitter アカウントの存在チェックのみならず、単純に URL 存在チェックのにも流用可能である。


当方、Twitter Bot をシリーズ化して運用しています。
しかし、自分が決めた命名規則で新規にアカウントを登録しようとした際に登録済みであることが稀にあるため、今回のようなチェックスクリプトを作成した次第です。

以上。

Comments