view xsotter_class.rb @ 6:6c763cb4ea40

change path on xsotter_mail.rb
author KAMURA Sota <c109047@e.koeki-u.ac.jp>
date Tue, 07 Feb 2012 20:08:20 +0900
parents f1a06832e7de
children 2ebeaae57e96
line wrap: on
line source

#! /usr/bin/env ruby
# -*- coding: euc-jp -*-
require"rubygems"
#gem `twitter`, `1.1.1`
require"oauth"
require"twitter"
require"nkf"
include Twitter

class Xsotter
  
  def initialize (token_path)
   p  @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)#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 #ここで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__
  consumer = OAuth::Consumer.new("SuucnlrR6yAOXz3AQaJG4Q", "wCL1YIuGH8fIKvBfXKrBbacGF8mhJHBR3A11MpmyPw", :site => "http://twitter.com")
  request_token = consumer.get_request_token 
  puts
  puts request_token.authorize_url #ここで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("./token","w") do |txt|
      token = token.token + " " + token.secret + " -e"
      txt.printf"%s",NKF.nkf("-w",token)
    end
    puts "xsotterでログインできるようになりました。もういちど実行してください。"
    exit(0)
  rescue 
    puts"PINを間違えて入力しているかも、もう一度チャレンジしてみて " 
    exit(1)
  end
end

yatex.org