Mercurial > hgrepos > hgweb.cgi > xsotter
comparison xsotter_class_111.rb @ 12:42e9379d8c1d default tip
gem ver up to 1.8.20 twitter ver up 2.1.1
author | KAMURA Sota <c109047@e.koeki-u.ac.jp> |
---|---|
date | Thu, 22 Mar 2012 14:06:08 +0900 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
11:4dcbbfa7f191 | 12:42e9379d8c1d |
---|---|
1 #! /usr/bin/env ruby | |
2 # -*- coding: euc-jp -*- | |
3 #gem version 1.8.20 | |
4 require"rubygems" | |
5 gem "twitter", "1.1.1" | |
6 require"twitter" | |
7 require"oauth" | |
8 require"nkf" | |
9 | |
10 include Twitter | |
11 | |
12 class Xsotter | |
13 | |
14 def initialize (token_path) | |
15 @path = File.expand_path(token_path) | |
16 # @path = File.expand_path("~") + "/.xsotter_token" | |
17 @login = false | |
18 @kcode = "-e" | |
19 oauth if File.exist?(@path) == false | |
20 | |
21 IO.foreach(@path) do |line| | |
22 a=line.chomp.split(" ") | |
23 @ACCESS_TOKEN = a[0] | |
24 @ACCESS_SECRET = a[1] | |
25 @kcode = a[2] | |
26 @login = true | |
27 end | |
28 | |
29 Twitter.configure do |config| | |
30 config.consumer_key = 'SuucnlrR6yAOXz3AQaJG4Q' | |
31 config.consumer_secret = 'wCL1YIuGH8fIKvBfXKrBbacGF8mhJHBR3A11MpmyPw' | |
32 config.oauth_token = @ACCESS_TOKEN | |
33 config.oauth_token_secret = @ACCESS_SECRET | |
34 end | |
35 # comand(com) | |
36 end | |
37 | |
38 def public_tl | |
39 return Twitter.public_timeline() | |
40 end | |
41 | |
42 def comand(com=[true])#com=array | |
43 case com[0] | |
44 when "--logout" | |
45 File.delete(path) | |
46 when "-k" | |
47 File.chmod(0700,@path) | |
48 open(@path,"w") do |txt| | |
49 token = @ACCESS_TOKEN + " " + @ACCESS_SECRET + " " + com[1] | |
50 txt.printf"%s",NKF.nkf(@kcode,token) | |
51 end | |
52 File.chmod(0400,@path) | |
53 | |
54 when "-f" | |
55 f=Twitter.favorites.each do |fav| | |
56 str = NKF.nkf(@kcode, fav.user.screen_name + ":" + fav.text) | |
57 puts str | |
58 puts | |
59 end | |
60 when "-R" | |
61 if com[1]==nil | |
62 puts "使用法: xsotter -R ID" | |
63 else | |
64 Twitter.retweet(id=com[1]) | |
65 end | |
66 when "-F" | |
67 if com[1]==nil | |
68 puts "使用法: xsotter -F ID" | |
69 else | |
70 Twitter.favorite_create(id=com[1]) | |
71 end | |
72 when "-T" | |
73 str = "" | |
74 com.delete_at(0) | |
75 com.each do |i| | |
76 str += i + " " | |
77 end | |
78 str = NKF.nkf("-w", str) | |
79 Twitter.update(str) | |
80 when "-t" | |
81 Twitter.home_timeline.each do |line| | |
82 str = line.text | |
83 str = NKF.nkf(@kcode, line.user.screen_name + ": " + str ) | |
84 puts str | |
85 puts "ID=#{line.id}" | |
86 puts | |
87 end | |
88 when "-r" | |
89 Twitter.mentions.each do |line| | |
90 str = line.text | |
91 str = NKF.nkf(@kcode, line.user.screen_name + ": " + str ) | |
92 puts str | |
93 puts | |
94 end | |
95 | |
96 else | |
97 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 :もう一度認証するまで使えなくなります。") | |
98 end | |
99 | |
100 | |
101 end | |
102 | |
103 def oauth | |
104 consumer = OAuth::Consumer.new("SuucnlrR6yAOXz3AQaJG4Q", "wCL1YIuGH8fIKvBfXKrBbacGF8mhJHBR3A11MpmyPw", :site => "http://twitter.com") | |
105 request_token = consumer.get_request_token | |
106 puts | |
107 puts request_token.authorize_url #ここでPINコードへのURLがでる | |
108 puts | |
109 puts "にアクセスし、Twitterにログインしてxsotterを認証し、PINを入手してください。" | |
110 puts | |
111 begin | |
112 puts"PINを入力してください。" | |
113 print"PIN=" | |
114 oauth_verifier = STDIN.gets.chomp | |
115 | |
116 token = request_token.get_access_token(:oauth_verifier => oauth_verifier ) | |
117 | |
118 open(@path,"w") do |txt| | |
119 token = token.token + " " + token.secret + " -e" | |
120 txt.printf"%s",NKF.nkf(@kcode,token) | |
121 end | |
122 File.chmod(0400,@path) | |
123 puts "xsotterでログインできるようになりました。もういちど実行してください。" | |
124 exit(0) | |
125 rescue | |
126 puts"PINを間違えて入力しているかも、もう一度チャレンジしてみて " | |
127 exit(1) | |
128 end | |
129 end | |
130 | |
131 end | |
132 | |
133 if $0 == __FILE__ | |
134 xsotter=Xsotter.new("~/.xsotter_token") | |
135 xsotter.comand() | |
136 # xsotter.oauth | |
137 end |