mk-mode BLOG

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

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

Ruby - Twitter API でリスト取得!

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

こんばんは。

Ruby で Twitter API を使用して、自分が作成したリストを取得する方法についてです。

当方は、以前から Ruby + Twitter API + MySQL でツイートやフォロー・フォロワー等を管理していますが、自分が作成したリストとフォローユーザとの連権はしていませんでした。
しかし、この度、どのユーザをリストに追加したのかを把握するために、自分の作成したリストの一覧やリストに登録したユーザの一覧を管理するようにしました。

今回は、自分の作成したリストの一覧を取得する方法についてです。

0. 前提条件

  • Ruby 1.9.3-p327 で作成・動作確認。
  • RubyGems twitter を導入済み。
  • OAuth 認証のための Customer Key, Customer Secret, Access Token, Access Token Secret を取得済み。

OAuth 認証については、今回は説明しません。当ブログ過去記事やネット等でお調べください。

1. Ruby スクリプト作成

作成した Ruby スクリプトは以下の通り。
このスクリプトでは、screen_name を指定して、そのユーザが作成したリストID・リスト名・モード(公開か非公開か)・作成日・登録ユーザ数を取得している。
引数や取得できる項目等については Twitter API のサイト等で確認できます。

twitter_get_lists.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
64
65
66
67
68
69
70
71
72
73
74
75
76
# -*- coding: utf-8 -*-
require 'twitter'
require 'oauth'
require 'time'

# Twitter UserName
USER_NAME = "foo"
# Consumer key, Secretの設定
CONSUMER_KEY     = "XXXXXXXXXXXXXXXXXXXX"
CONSUMER_SECRET  = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
# Access Token Key, Secretの設定
ACCESS_TOKEN_KEY = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
ACCESS_SECRET    = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"

# メインクラス
class TwitterGetLists
  def initialize
    @count    = 0   # 件数カウント用
  end

  # リスト取得
  def get_list
    begin
      # OAuth 設定
      Twitter.configure do |config|
        config.consumer_key       = CONSUMER_KEY
        config.consumer_secret    = CONSUMER_SECRET
        config.oauth_token        = ACCESS_TOKEN_KEY
        config.oauth_token_secret = ACCESS_SECRET
      end

      # JSON データ取得
      client = Twitter::Client.new
      res = client.lists(:screen_name => USER_NAME)
      res.each do |list|
        list_id      = list[:id]
        list_name    = list[:name]
        mode         = list[:mode]
        created_at   = Time.parse(list[:created_at].to_s).strftime("%Y-%m-%d %H:%M:%S")
        member_count = list[:member_count]
        puts "[#{list_id}] #{list_name}, #{mode}, #{created_at}, #{member_count}"
        @count += 1
      end

      # 件数
      puts "COUNT : #{@count}"
    rescue => e
      str_msg = "[EXCEPTION][" + self.class.name + ".get_list] " + e.to_s
      STDERR.puts str_msg
      exit 1
    end
  end
end

################

####  MAIN  ####

################
begin
  puts "STARTED!!"
  puts "-" * 40

  # 処理クラスインスタンス化
  obj_main = TwitterGetLists.new

  # リスト取得
  obj_main.get_list

  puts "-" * 40
  puts "FINISHED!"
rescue => e
  str_msg = "[EXCEPTION]" + e.to_s
  STDERR.puts str_msg
  exit 1
end

2. Ruby スクリプト実行

以下のようにして Ruby スクリプトを実行する。

1
$ ruby twitter_get_lists.rb

3. 参考サイト


これで、ツイッターのリストが取得できます。
当方は、実際には、取得したデータをデータベース(MySQL)に保存したり(1日1回定時起動)して、別途作成した Rails アプリで閲覧・管理しています。

以上。

Comments