トップ «前の日記(Aug 21, 2009 (Fri)) 最新 次の日記(Aug 30, 2009 (Sun))» 編集


Aug 28, 2009 (Fri)

{}

_ Twitterで自動フォロー返しするよ、ただしRで

「protected なひと」と、「発言数が100回以下のひと(SPAMアカウント対策)」は自動でフォローされませんよー。

twitteRには Twitter API の friendship methods まわりが実装されていないので、curl で直接API叩いちゃってます。ただ、RCurlでPOSTメソッドでアクセスする方法がよくわからないので、curl -d を system からコールしてます。やりかた知っているひとがいたら教えてください。

あと、userFriends() とか user object な list を返すくせに、こいつがなぜか unlist できない。S4オブジェクトを格納した list は unlist できないとかですかね?

R ムズカシイネ\(^o^)/

library("twitteR")

# make twitter's session
myuser     <- "chii_pc"
mypassword <- "ちょびっツ"
mysession  <- initSession(myuser, mypassword)

myfriends   <- userFriends(myuser, session=mysession)
myfriends   <- unlist(lapply(myfriends, function(x) x@screenName))

myfollowers <- userFollowers(myuser, session=mysession)

addusers <- lapply(myfollowers,
  function(myfollower) {
    # new friend or not?
    if (! any(myfriends == myfollower@screenName) ) {
      # protected or not?    
      if (! myfollower@protected) {
        # spam or not?
        if (myfollower@statusesCount > 100) {
          return(myfollower)
        }
      }
    }
  }    
)

createFriendship <- function(user, password, friend) {
  url <- paste("http://twitter.com/friendships/create/", friend, ".xml", sep="")
  user.and.pass <- paste(user, password, sep=":")
  cmd <- paste("curl", "-u", user.and.pass, "-d", '""', url, sep=" ")
  
  cat(cmd, "\n")
  system(cmd)
  return(cmd)
}

devnull <- lapply(addusers,
  function(myfollower) {
    if ( ! is.null(myfollower) ) {
      createFriendship(myuser, mypassword, myfollower@screenName)
      Sys.sleep(3)
      return(myfollower)
    }
  }
)

あとは cron でぐーるぐる。

*/5 * * * *   R --vanilla -q -f /どっか/ディレクトリ/chii_pc/following.r
Tags: R Twitter

トップ «前の日記(Aug 21, 2009 (Fri)) 最新 次の日記(Aug 30, 2009 (Sun))» 編集

Google
 
Web itoshi.tv

リンクは誰にも妨げられないあなたの権利です。お好きにどうぞ。 CC 表示2.1 日本
このサイトの各種商品のリンクは Amazonアソシエイト楽天アフィリエイト を利用している場合があります。