Facebookの情報を取得する

あけましておめでとうございます。今年初の記事です。Rbloggersで気になった記事があったので、やってみようと思ったのですが、、、

http://applyr.blogspot.com/2012/01/mining-facebook-data-most-liked-status.html


いろいろ下記の設定をしたのですが、結局Rgraphvizが自分のマシンでは動かず、グラフを描くところまで行きませんでした。


コードはこちら↓

access_token <- "...................."

require(RCurl)
require(rjson)

# Facebook json function copied from original (Romain Francois) post
facebook <-  function( path = "me", access_token, options){
   if( !missing(options) ){
        options <- sprintf( "?%s", paste( names(options), "=", 
                           unlist(options), collapse = "&", sep = "" ) )
    } else {
        options <- ""
    }
    data <- getURL( sprintf( "https://graph.facebook.com/%s%s&access_token=%s",
                    path, options, access_token ), ssl.verifypeer = FALSE )
    fromJSON( data )
}


friends <- facebook( path=".../friends" , access_token=access_token)
# extract Facebook IDs
friends.id <- sapply(friends$data, function(x) x$id)


friends.name <- sapply(friends$data, function(x)  iconv(x$name,"UTF-8","ASCII//TRANSLIT"))
# short names to initials 
initials <- function(x) paste(substr(x,1,1), collapse="")
friends.initial <- sapply(strsplit(friends.name," "), initials) 

# friendship relation matrix
N <- length(friends.id)
friendship.matrix <- matrix(0,N,N)
for (i in 1:N) {
  tmp <- facebook( path=paste(".../mutualfriends", friends.id[i], sep="/") , access_token=access_token)
  mutualfriends <- sapply(tmp$data, function(x) x$id)
  friendship.matrix[i,friends.id %in% mutualfriends] <- 1
}

require(Rgraphviz)
# convert relation matrix to graph
g <- new("graphAM", adjMat=friendship.matrix)

# ellipse graph with initials
pdf(file="facebook1.pdf", width=25, height=25)
  attrs <- list(node=list(shape="ellipse", fixedsize=FALSE))
  nAttrs <- list(label=friends.initial)
  names(nAttrs$label) <- nodes(g)
  plot(g, "neato", attrs=attrs, nodeAttrs=nAttrs)
dev.off()

自分の環境では、最後のplot()でRがクラッシュてしまいます(32 bit版のRを使っても)。友人情報は取得できたので、Graphviz以外の方法でグラフを描けばいいかも。しかしRは他ソフトと連携しようとすると、エラーが多くなって安心して使えないですね。Rに限った話では無いかもしれませんが。


今回うまくいかなかったのも、原因は確定できませんが、64bitマシンを使ったからかなぁと。OSが変わるといろいろ大変ですね。。うまく行った方がいらっしゃれば、ぜひ教えて頂ければ幸いです。

ページTOPへ