twitteR パッケージで「お気に入り」を取得してみた

Favmemo を運用していることもあり、お気に入りをサクッと取得してごにょごにょしたくなることがあるんですが、twitteR パッケージではお気に入りを取得する関数が提供されていません。

というわけで取得する関数を作ってみました。(作ったと言える程のことはしてないですが・・・)

getFavorites <- function(user, n = 20, maxID = NULL, sinceID = NULL, ...) {
    uParams <- parseUsers(user)
    cmd <- "favorites/list"
    params <- buildCommonArgs(max_id = maxID, since_id = sinceID)
    params[['user_id']] <- uParams[['user_id']]
    params[['screen_name']] <- uParams[['screen_name']]
    # twInterfaceObj$maxResults: 100
    # 'Requests per rate limit' of 'favorites/list': 15/user
    statusBase(cmd, params, n, 1500, ...)
}
environment(getFavorites) <- getNamespace("twitteR")

@a_bicky のお気に入りを1件取得するには次のように実行します。

> getFavorites("a_bicky", 1)
[[1]]
[1] "beatinaniwa: GunosyのKPI運用について >\"若手なので若手Webエンジニア交流会でLTしてきた | y_matsuwitter's\" http://t.co/Umen0Bsq88"

次のような hook を登録しておくと twitteR を読み込んだ時にすぐにデータを取得できて便利かもです。

setHook(packageEvent("twitteR", "attach"), function(pkgname, pkgpath) {
    library(ROAuth)

    # cf. /2013/03/16/225842/
    rcurlEnv <- getNamespace("RCurl")
    mapUnicodeEscapes <- get("mapUnicodeEscapes", rcurlEnv)
    unlockBinding("mapUnicodeEscapes", rcurlEnv)
    assign("mapUnicodeEscapes", function(str) str, rcurlEnv)

    credentials <- OAuthFactory$new(
        handshakeComplete = TRUE,
        signMethod = "HMAC",
        consumerKey = "your consumer key",
        consumerSecret = "your consumer secret",
        oauthKey = "your access token",
        oauthSecret = "your access token secret"
        )
    registerTwitterOAuth(credentials)

    getFavorites <- function(user, n = 20, maxID = NULL, sinceID = NULL, ...) {
        uParams <- parseUsers(user)
        cmd <- "favorites/list"
        params <- buildCommonArgs(max_id = maxID, since_id = sinceID)
        params[['user_id']] <- uParams[['user_id']]
        params[['screen_name']] <- uParams[['screen_name']]
        # twInterfaceObj$maxResults: 100
        # 'Requests per rate limit' of 'favorites/list': 15/user
        statusBase(cmd, params, n, 1500, ...)
    }
    environment(getFavorites) <- getNamespace("twitteR")
    attach(list(getFavorites = getFavorites))
})

ではでは快適な R 生活を!