view RCS/xsotter.rb,v @ 0:b79b888eceac

init
author KAMURA Sota <c109047@e.koeki-u.ac.jp>
date Mon, 06 Feb 2012 17:25:58 +0900
parents
children
line wrap: on
line source

head	1.5;
access;
symbols;
locks
	c109047:1.5; strict;
comment	@# @;


1.5
date	2011.07.11.07.58.42;	author c109047;	state Exp;
branches;
next	1.4;

1.4
date	2011.07.11.03.10.17;	author c109047;	state Exp;
branches;
next	1.3;

1.3
date	2011.07.08.14.32.40;	author c109047;	state Exp;
branches;
next	1.2;

1.2
date	2011.07.08.05.02.19;	author c109047;	state Exp;
branches;
next	1.1;

1.1
date	2011.07.08.04.33.41;	author c109047;	state Exp;
branches;
next	;


desc
@@


1.5
log
@Xsotterクラス実装
@
text
@#! /usr/bin/env ruby




require"rubygems"

#gem `twitter`, `1.1.1`

require"oauth"
require"twitter"
require"nkf"
include Twitter

$KCODE = "-e"
class Xsotter
  
  def initialize (com)
    @@path = File.expand_path("~") + "/.xsotter_token"
    @@login = false
    
    oauth if File.exist?(@@path) == false
    
    IO.foreach(@@path) do |line|
      a=line.chomp.split(" ")
      @@ACCESS_TOKEN = a[0]
      @@ACCESS_SECRET = a[1]
      @@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 comand(com)
    case com[0]
    when "--logout"
      File.delete(path)
    when "-f"
      f=Twitter.favorites.each do |fav|
        str = NKF.nkf("-e", 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("-e", 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("-e", line.user.screen_name + ": " + str )
        puts str 
        puts
      end
      
    else 
      puts" -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
        txt.printf"%s",NKF.nkf("-e",token)
      end
      File.chmod(0400,@@path)
      puts "xsotterでログインできるようになりました。もういちど実行してください。"
      exit(0)
    rescue 
      puts"PINを間違えて入力しているかも、もう一度チャレンジしてみて " 
      exit(1)
    end 
  end   
  
end

begin 
  xsotter = Xsotter.new(ARGV)
rescue =>err
  puts err
  case err 
  when /POST/
    puts"同じ内容のツイートを連続で投稿することはできません。140文字を超えたツイートもできません。"
  end
  
end
@


1.4
log
@-R リツイートする
-f お気に入りにいれる

を追加
@
text
@d4 1
a4 1
path = File.expand_path("~") + "/.xsotter_token"
d15 2
a16 6
begin
  IO.foreach(path) do |line|
    a=line.chomp.split(" ")
    ACCESS_TOKEN = a[0]
    ACCESS_SECRET = a[1]
  end
d18 11
a28 15
  Twitter.configure do |config|
    config.consumer_key = 'SuucnlrR6yAOXz3AQaJG4Q'
    config.consumer_secret = 'wCL1YIuGH8fIKvBfXKrBbacGF8mhJHBR3A11MpmyPw'
    config.oauth_token = ACCESS_TOKEN
    config.oauth_token_secret = ACCESS_SECRET
  end 

  case ARGV[0]
  when "--logout"
    File.delete(path)
when "-f"
    f=Twitter.favorites.each do |fav|
      str = NKF.nkf("-e", fav.user.screen_name + ":" + fav.text)
      puts str
      puts
d30 22
a51 2
  when "-R"
    if ARGV[1]==nil
d53 9
a61 9
    else
      Twitter.retweet(id=ARGV[1])
    end
  when "-F"
    if ARGV[1]==nil
      puts "使用法: xsotter -F ID"
    else
      Twitter.favorite_create(id=ARGV[1])
    end
d63 22
a84 9
    str = ""
    ARGV.delete_at(0)
    ARGV.each do |i|
      str += i + " "
    end
    str = NKF.nkf("-w", str)
    Twitter.update(str)
  when "-t"
    Twitter.home_timeline.each do |line|
d86 2
a87 5
      str = line.text
      str = NKF.nkf("-e", line.user.screen_name + ": " + str )
      puts str 
      puts "ID=#{line.id}"
      puts
d89 2
a90 9
  when "-r"
    Twitter.mentions.each do |line|
      str = line.text
      str = NKF.nkf("-e", line.user.screen_name + ": " + str )
      puts str 
      puts
    end
  else 
    puts" -t :タイムラインを出力します。\n -T str :strをツイッターに投稿します。\n -r :自分宛てのリプライを出力します。\n -f 自分のお気に入りのツイートを出力します。\n -F ID :IDをお気に入りに追加します。\n -R ID ID:をリツイートします\n--logout :もう一度認証するまで使えなくなります。"
d92 2
a93 7
  
rescue => err
  puts err
  case err 
  when /POST/
    puts"同じ内容のツイートを連続で投稿することはできません。140文字を超えたツイートもできません。"
  else
a94 1

d108 1
a108 1
      open(path,"w") do |txt|
d112 1
a112 1
      File.chmod(0400,path)
d114 1
a114 1
    
d116 14
a129 2
      puts"PINを間違えて入力しているかも、もう一度チャレンジしてみて? " 
    end
d131 1
a132 1

@


1.3
log
@自分宛てのリプライ取得を -r に変更
@
text
@d32 13
a44 1
  when "-f"
d46 1
a46 1
      puts "使用法: xsotter -f ID"
d75 1
a75 1
    puts" -t :タイムラインを出力します。\n -T str :strをツイッターに投稿します。\n -a :自分当てのリプライを出力します。\n -f ID :IDをお気に入りに追加します。\n --logout :もう一度認証するまで使えなくなります。"
@


1.2
log
@ツイートをお気に入りに追加できるように(-f オプション追加)
@
text
@d55 1
a55 1
  when "-a"
@


1.1
log
@Initial revision
@
text
@d32 7
a38 1
  when "-T"
d48 1
d52 1
d63 1
a63 1
    puts" -t タイムラインを出力します。\n -T str strをツイッターに投稿します。\n -a 自分当てのリプライを出力します。\n --logout もう一度認証するまで使えなくなります。"
@

yatex.org