ど素人のTwitter_bot作成日誌
Amebaでブログを始めよう!

曜日をつぶやく

「今日って何曜日だっけ?」


とよくなるので、曜日をつぶやかせようと思った。



曜日をつぶやくソース


====================================================

接続は前回に同じ

====================================================


require "date"

wdays = ["日", "月", "火", "水", "木", "金", "土"]
day = Time.now
client.update(Kconv.toutf8("今日は#{wdays[day.wday]}曜日です"))


=====================================================



ここを参考にした

http://www.namaraii.com/rubytips/?%C6%FC%C9%D5%A4%C8%BB%FE%B9%EF#l3


時刻中の曜日を日本語に変換する。
Time#wdayメソッドにより曜日を数値で取得。
wdayの値は0が日曜日で、6が土曜日に対応する。





自動フォロー返しと自動リムーブ

■自動フォロー返しと自動リムーブ


#========================================================
require 'rubygems'
require 'twitter_oauth'
require 'kconv'

#==========ここから接続の記述(*には自分の設定を入れる)===================


CONSUMER_KEY = '******'
CONSUMER_SECRET = '******'
ACCESS_TOKEN = '******'
ACCESS_TOKEN_SECRET = '******'

client = TwitterOAuth::Client.new(
:consumer_key => CONSUMER_KEY,
:consumer_secret => CONSUMER_SECRET,
:token => ACCESS_TOKEN,
:secret => ACCESS_TOKEN_SECRET
)

#==========ここまで接続の記述===================


#自動フォローする
#フォローされている人 - 自分がフォローしている人

(client.followers - client.friends).each do | t |
follower_id = t["id"]
name = t["screen_name"]
#puts "#{follower_id}:#{name}"
client.friend("#{follower_id}")
end


#リムーブする
#自分がフォローしている人- フォローされている人

(client.friends - client.followers ).each do | t |
follower_id = t["id"]
name = t["screen_name"]
#puts "#{follower_id}:#{name}"
client.unfriend("#{follower_id}")
end
#========================================================


改善点

  ・ツィート非公開の人はフォローできない。
  ・Twitterで1回のリクエストで取得できるのが100件。
   100件以上フォロワーが増えている場合はすべてをフォローできない。
  ・タスクで約24時間周期で自動フォロー・リフォローする様に設定する必要がある。


   #puts "#{follower_id}:#{name}"はテスト用の記載。



■RUBYでリストの比較ってどうやるの?


自動フォロー返しについて考えると・・・・


 1.APIフォローしているユーザーのリストを読み込む。
 2.API自分のフォローワーのリストを読み込む。
 3.1と2を比較してフォローしていないIDのユーザーをフォローする


自動フォロー返しを文章にすると3行だけども・・・・・

配列を2つ作って、該当するidがあるかどうかを
forとかwhileで、配列[i]・[j]をぐるぐる回して比較するのかと思い、
Array#size、Array#lengthだのRubyの配列数をとるのを調べていたらなんと・・・・・


「・Rubyは配列同士の引き算ができるので、引き算で比較する。」
http://www.nikkei.com/tech/business/article/g=96958A9C93819499E0E5E2E3888DE0E5E2E7E0E2E3E2E2E2E2E2E2E2;df=3;p=9694E1E2E2E6E0E2E3E2E2E5E7E6


Rubyどうなってんのwwww

楽チンすぎだろww



■フォローをはずす「unfriend」


フォローする場合はの例が本に記載してあったが、
フォロー解除については記載がなかったので、下記を参照。

http://d.hatena.ne.jp/ten-you/20100818/1282148976



フォローする。>> [Twitterクライアントクラス].friend([ユーザID又はスクリーンネーム])
フォロー解除する。>> [Twitterクライアントクラス].unfriend([ユーザID又はスクリーンネーム])


friendの反対はunfriendって事らしい!


friendships/destroyを調べていても、
unfriendについて書いてある所が全然なくて結構ロスった。


TwitterBot作り、少しでも動くのを見ると楽しいな~と実感できて初心者にはいいな。
でもRuby基礎を勉強しないと色々と時間がかかってダメかも。
Ruby関連のサイトを見てるが、やっぱり本を買って勉強した方が頭に入りそうかな。


コマンドラインのウインドウ

タスクスケジューラーでバッチを実行する度に、
コマンドプロンプトが表示されるので表示しないようにしたい。


動かすバッチファイルのショートカットを作成。


ショートカットのファイル名を修正する。
  「hello.bat へのショートカット」→「Shello.bat」とした。

  (日本語が入っていると面倒らしい。)

右クリックでプロパティ>ショートカットタブで「実行時の大きさ:最小化」を選択。


コントロールパネルのタスクで、
  実行するファイル名の参照で「Shello.bat」を選択する

  (表示されるファイル名をコピーしておく)開くをクリック


実行するファイル名に、自動でリンク先のファイル名が選択されるので、

ファイル名をショートカット名に修正する。


  "C:\Documents and Settings\web2\My Documents\bot\hello.bat"

                                           ↓
  "C:\Documents and Settings\web2\My Documents\bot\Shello.bat.lnk"


ショートカットを実行させる指定にしたので最小化される。
この方法だとタスクバーにはコマンドプロンプトが表示されてしまう。


参考

http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=541&forum=6&3