0
|
1 #! /usr/bin/env ruby
|
|
2 # -*- coding: euc-jp -*-
|
|
3 require"rubygems"
|
|
4 #gem `twitter`, `1.1.1`
|
|
5 require"oauth"
|
|
6 require"twitter"
|
|
7 require"nkf"
|
|
8 include Twitter
|
|
9
|
|
10 class Xsotter
|
|
11
|
|
12 def initialize (token_path)
|
8
|
13 @path = File.expand_path(token_path)
|
0
|
14 # @path = File.expand_path("~") + "/.xsotter_token"
|
|
15 @login = false
|
|
16 @kcode = "-e"
|
|
17 oauth if File.exist?(@path) == false
|
|
18
|
|
19 IO.foreach(@path) do |line|
|
|
20 a=line.chomp.split(" ")
|
|
21 @ACCESS_TOKEN = a[0]
|
|
22 @ACCESS_SECRET = a[1]
|
|
23 @kcode = a[2]
|
|
24 @login = true
|
|
25 end
|
|
26
|
|
27 Twitter.configure do |config|
|
|
28 config.consumer_key = 'SuucnlrR6yAOXz3AQaJG4Q'
|
|
29 config.consumer_secret = 'wCL1YIuGH8fIKvBfXKrBbacGF8mhJHBR3A11MpmyPw'
|
|
30 config.oauth_token = @ACCESS_TOKEN
|
|
31 config.oauth_token_secret = @ACCESS_SECRET
|
|
32 end
|
|
33 # comand(com)
|
|
34 end
|
|
35
|
|
36 def public_tl
|
|
37 return Twitter.public_timeline()
|
|
38 end
|
|
39
|
|
40 def comand(com)#com=array
|
|
41 case com[0]
|
|
42 when "--logout"
|
|
43 File.delete(path)
|
|
44 when "-k"
|
|
45 File.chmod(0700,@path)
|
|
46 open(@path,"w") do |txt|
|
|
47 token = @ACCESS_TOKEN + " " + @ACCESS_SECRET + " " + com[1]
|
|
48 txt.printf"%s",NKF.nkf(@kcode,token)
|
|
49 end
|
|
50 File.chmod(0400,@path)
|
|
51
|
|
52 when "-f"
|
|
53 f=Twitter.favorites.each do |fav|
|
|
54 str = NKF.nkf(@kcode, fav.user.screen_name + ":" + fav.text)
|
|
55 puts str
|
|
56 puts
|
|
57 end
|
|
58 when "-R"
|
|
59 if com[1]==nil
|
|
60 puts "使用法: xsotter -R ID"
|
|
61 else
|
|
62 Twitter.retweet(id=com[1])
|
|
63 end
|
|
64 when "-F"
|
|
65 if com[1]==nil
|
|
66 puts "使用法: xsotter -F ID"
|
|
67 else
|
|
68 Twitter.favorite_create(id=com[1])
|
|
69 end
|
|
70 when "-T"
|
|
71 str = ""
|
|
72 com.delete_at(0)
|
|
73 com.each do |i|
|
|
74 str += i + " "
|
|
75 end
|
|
76 str = NKF.nkf("-w", str)
|
|
77 Twitter.update(str)
|
|
78 when "-t"
|
|
79 Twitter.home_timeline.each do |line|
|
|
80 str = line.text
|
|
81 str = NKF.nkf(@kcode, line.user.screen_name + ": " + str )
|
|
82 puts str
|
|
83 puts "ID=#{line.id}"
|
|
84 puts
|
|
85 end
|
|
86 when "-r"
|
|
87 Twitter.mentions.each do |line|
|
|
88 str = line.text
|
|
89 str = NKF.nkf(@kcode, line.user.screen_name + ": " + str )
|
|
90 puts str
|
|
91 puts
|
|
92 end
|
|
93
|
|
94 else
|
|
95 puts NKF.nkf(@kcode, " -k KCODE :-e euc -j shift_jis\n -t :タイムラインを出力します。\n -T str :strをツイッターに投稿します。\n -r :自分宛てのリプライを出力します。\n -f 自分のお気に入りのツイートを出力します。\n -F ID :IDをお気に入りに追加します。\n -R ID ID:をリツイートします\n--logout :もう一度認証するまで使えなくなります。")
|
|
96 end
|
|
97
|
|
98
|
|
99 end
|
|
100
|
|
101 def oauth
|
|
102 consumer = OAuth::Consumer.new("SuucnlrR6yAOXz3AQaJG4Q", "wCL1YIuGH8fIKvBfXKrBbacGF8mhJHBR3A11MpmyPw", :site => "http://twitter.com")
|
|
103 request_token = consumer.get_request_token
|
|
104 puts
|
|
105 puts request_token.authorize_url #ここでURLがでて認証画面に
|
|
106 puts
|
|
107 puts "にアクセスし、Twitterにログインしてxsotterを認証し、PINを入手してください。"
|
|
108 puts
|
|
109 begin
|
|
110 puts"PINを入力してください。"
|
|
111 print"PIN="
|
|
112 oauth_verifier = STDIN.gets.chomp
|
|
113
|
|
114 token = request_token.get_access_token(:oauth_verifier => oauth_verifier )
|
|
115
|
|
116 open(@path,"w") do |txt|
|
|
117 token = token.token + " " + token.secret + " -e"
|
|
118 txt.printf"%s",NKF.nkf(@kcode,token)
|
|
119 end
|
|
120 File.chmod(0400,@path)
|
|
121 puts "xsotterでログインできるようになりました。もういちど実行してください。"
|
|
122 exit(0)
|
|
123 rescue
|
|
124 puts"PINを間違えて入力しているかも、もう一度チャレンジしてみて "
|
|
125 exit(1)
|
|
126 end
|
|
127 end
|
|
128
|
|
129 end
|
|
130
|
|
131 if $0 == __FILE__
|
|
132 consumer = OAuth::Consumer.new("SuucnlrR6yAOXz3AQaJG4Q", "wCL1YIuGH8fIKvBfXKrBbacGF8mhJHBR3A11MpmyPw", :site => "http://twitter.com")
|
|
133 request_token = consumer.get_request_token
|
|
134 puts
|
|
135 puts request_token.authorize_url #ここでURLがでて認証画面に
|
|
136 puts
|
|
137 puts "にアクセスし、Twitterにログインしてxsotterを認証し、PINを入手してください。"
|
|
138 puts
|
|
139 begin
|
|
140 puts"PINを入力してください。"
|
|
141 print"PIN="
|
|
142 oauth_verifier = STDIN.gets.chomp
|
|
143
|
|
144 token = request_token.get_access_token(:oauth_verifier => oauth_verifier )
|
|
145
|
|
146 open("./token","w") do |txt|
|
|
147 token = token.token + " " + token.secret + " -e"
|
|
148 txt.printf"%s",NKF.nkf("-w",token)
|
|
149 end
|
|
150 puts "xsotterでログインできるようになりました。もういちど実行してください。"
|
|
151 exit(0)
|
|
152 rescue
|
|
153 puts"PINを間違えて入力しているかも、もう一度チャレンジしてみて "
|
|
154 exit(1)
|
|
155 end
|
|
156 end
|