diff 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
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/xsotter_class_111.rb	Thu Mar 22 14:06:08 2012 +0900
@@ -0,0 +1,137 @@
+#! /usr/bin/env ruby
+# -*- coding: euc-jp -*-
+#gem version 1.8.20
+require"rubygems"
+gem "twitter", "1.1.1"
+require"twitter"
+require"oauth"
+require"nkf"
+
+include Twitter
+
+class Xsotter
+  
+  def initialize (token_path)
+     @path = File.expand_path(token_path)
+    # @path = File.expand_path("~") + "/.xsotter_token"
+    @login = false
+    @kcode = "-e"
+    oauth if File.exist?(@path) == false
+    
+    IO.foreach(@path) do |line|
+      a=line.chomp.split(" ")
+      @ACCESS_TOKEN = a[0]
+      @ACCESS_SECRET = a[1]
+      @kcode = a[2]
+      @login = true 
+    end
+    
+    Twitter.configure do |config|
+      config.consumer_key = 'SuucnlrR6yAOXz3AQaJG4Q'
+      config.consumer_secret = 'wCL1YIuGH8fIKvBfXKrBbacGF8mhJHBR3A11MpmyPw'
+      config.oauth_token = @ACCESS_TOKEN
+      config.oauth_token_secret = @ACCESS_SECRET
+    end 
+   # comand(com)
+  end  
+  
+  def public_tl 
+    return Twitter.public_timeline()
+  end
+  
+  def comand(com=[true])#com=array
+    case com[0]
+    when "--logout"
+      File.delete(path)
+    when "-k"
+      File.chmod(0700,@path)
+      open(@path,"w") do |txt|
+        token = @ACCESS_TOKEN + " " +  @ACCESS_SECRET + " " + com[1]
+        txt.printf"%s",NKF.nkf(@kcode,token)
+      end
+      File.chmod(0400,@path)
+      
+    when "-f"
+      f=Twitter.favorites.each do |fav|
+        str = NKF.nkf(@kcode, fav.user.screen_name + ":" + fav.text)
+        puts str
+        puts
+      end
+    when "-R"
+      if com[1]==nil
+        puts "使用法: xsotter -R ID"
+      else
+        Twitter.retweet(id=com[1])
+      end
+    when "-F"
+      if com[1]==nil
+        puts "使用法: xsotter -F ID"
+      else
+        Twitter.favorite_create(id=com[1])
+      end
+    when "-T"
+      str = ""
+      com.delete_at(0)
+      com.each do |i|
+        str += i + " "
+      end
+      str = NKF.nkf("-w", str)
+      Twitter.update(str)
+    when "-t"
+      Twitter.home_timeline.each do |line|        
+        str = line.text
+        str = NKF.nkf(@kcode, line.user.screen_name + ": " + str )
+        puts str 
+        puts "ID=#{line.id}"
+        puts
+      end
+    when "-r"
+      Twitter.mentions.each do |line|
+        str = line.text
+        str = NKF.nkf(@kcode, line.user.screen_name + ": " + str )
+        puts str 
+        puts
+      end
+      
+    else 
+      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 :もう一度認証するまで使えなくなります。")
+    end
+    
+    
+  end
+
+  def oauth
+    consumer = OAuth::Consumer.new("SuucnlrR6yAOXz3AQaJG4Q", "wCL1YIuGH8fIKvBfXKrBbacGF8mhJHBR3A11MpmyPw", :site => "http://twitter.com")
+    request_token = consumer.get_request_token 
+    puts
+    puts request_token.authorize_url #ここでPINコードへのURLがでる
+    puts
+    puts "にアクセスし、Twitterにログインしてxsotterを認証し、PINを入手してください。"
+    puts
+    begin
+      puts"PINを入力してください。"
+      print"PIN="
+      oauth_verifier = STDIN.gets.chomp
+      
+      token = request_token.get_access_token(:oauth_verifier => oauth_verifier )
+      
+      open(@path,"w") do |txt|
+        token = token.token + " " + token.secret + " -e"
+        txt.printf"%s",NKF.nkf(@kcode,token)
+      end
+      File.chmod(0400,@path)
+      puts "xsotterでログインできるようになりました。もういちど実行してください。"
+      exit(0)
+    rescue 
+      puts"PINを間違えて入力しているかも、もう一度チャレンジしてみて " 
+      exit(1)
+    end 
+  end   
+  
+end
+
+if $0 == __FILE__
+  xsotter=Xsotter.new("~/.xsotter_token")
+  xsotter.comand()
+  #  xsotter.oauth
+end

yatex.org