Обновить статус Facebook с помощью R?

Возможно ли обновить мой статус facebook из сеанса R?

EDIT 1: прочитав ответы до сих пор, я хотел бы указать, что меня просто интересует, существует ли пакет, который предоставляет эту функциональность, подобно тому, как прекрасный пакет twitteR делает для Twitter. Кроме того, что-то не обязательно должно быть "полезным" для того, чтобы быть "забавным", именно так я предпочитаю учиться.

Отредактируйте 2: Извините, если кто-нибудь оскорбляет меня, не уточняя, как я задал свой вопрос. Я использовал R неофициально в течение 2 месяцев, и мне сказали, что SO - хорошее место, чтобы задавать вопросы (да, я прочитал руководство по интро).

Ответ 1

Примечание. Следующие только успешно регистрируют вас в facebook. Я не знаю, почему обновление состояния в конце не работает, но, возможно, оно по-прежнему имеет некоторое значение. Он основан на сообщении в блоге в Baratttalo в марте и который, как я думал, пройдет в пятницу днем.

Я не собирался отвечать на это, но, глядя на некоторые другие ответы и видя, как вы помогли мне в mathoverflow, я подумал, что я сделаю это.

вам нужно будет установить пакеты RCurl и XML из http://www.omegahat.org/ (это довольно классный веб-сайт, чтобы посмотреть даже на забаву я думаю).

В любом случае скопируйте и вставьте это:

library(RCurl)
library(XML)

log.into.facebook <- function(curl, id) {
  curlSetOpt( .opts = list(postfields = paste('email=', URLencode(id$login.email), '&pass=', URLencode(id$login.password), '&login=', URLencode('"Login"'), sep=''), 
                    post = TRUE,
                    header = FALSE,
                    followlocation = TRUE,
                    ssl.verifypeer = FALSE,
                    cookiejar = 'my_cookies.txt', 
                    cookiefile = 'my_cookies.txt',                                                                          
                    useragent = 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3'), curl = curl) 
  u <- "https://login.facebook.com/login.php?m&amp;next=http%3A%2F%2Fm.facebook.com%2Fhome.php"             
  doc <- getURL(u, curl = curl)
  return(doc)
}

get.update.stutus.form.id <- function(curl, doc) {
  curlSetOpt( .opts = list(post = FALSE), curl = curl)
  doc <- getURL("http://m.facebook.com/home.php" , curl = curl)
  html <- htmlTreeParse(doc, useInternal = TRUE)

  # this gets the post_form_id value
  form.id.node <- getNodeSet(html, '//input[@name="post_form_id"]')
  form.id <- sapply(form.id.node, function(x) x <- xmlAttrs(x)[[3]])

  # we'll also need the exact name of the form processor page
  form.num.node <- getNodeSet(html, '//form[@method="post"]')
  form.num <-  sapply(form.num.node, function(x) x <- xmlAttrs(x)[[1]])
  form.num <- strsplit(form.num, "/")[[1]][3]

  return(list(form.id = form.id, form.num = form.num))
}

# This function doesn't work. I would love to know why though as it 'looks' right to me
update.status <- function(doc, curl, id) {
  form <- get.update.stutus.form.id (curl, doc)

  curlSetOpt( .opts = list(post = TRUE,
                    postfields = paste('post_form_id=', form$form.id, '&status=', URLencode(id$status), '&update=', URLencode('"Update status"'), sep = '')), 
              curl = curl)
  u <- paste("http://m.facebook.com", form$form.num, sep = "/")
  doc <- getURL(u, curl = curl)
  return(doc)
}

и здесь, как вы используете вышеперечисленные функции (изменяйте значения идентификатора для вашего журнала)

id <- list()
id$status <- "Hello world!"
id$login.email <- "YOUR LOGIN EMAIL"
id$login.password <- "YOUR LOGIN PASSWORD"

# log into facebook, seems to work fine
curl <- getCurlHandle()
doc <- log.into.facebook(curl, id)


# this is the bit that doesn't work, no idea why though. 
update.status(doc, curl, id)

Надеюсь, что это поможет немного, может быть, это даст вам представление. Кроме того, я думаю, что вопрос, который вы задали, в порядке, может быть, просто будет немного более конкретным в следующий раз, и, возможно, вы избежите некоторых комментариев, которые вы получили здесь: -)

Тони Брейал

P.S. Я думаю, что все это есть api, но если все, что вас интересует, обновляет статус, мне очень нравится идея использования пакета twitteR и связывания обновлений с facebook.

Ответ 2

Я так не думаю. Это потребует создания пакета для поддержки API Facebook, и никто не сделал этого для Р. (И, действительно, почему бы им это сделать? Это не лучший инструмент для работы! И это не так, как вы можете вытащить большие объемы данных из Facebook делать анализ данных...)

Что вы можете сделать, это использовать пакет twitteR, обновить свой статус в Twitter, а затем подключить свои учетные записи Twitter и Facebook к получить обновление в Facebook.

Ответ 3

Я должен признать, что никогда бы не подумал, что кто-то задаст такой вопрос, но..:)

Используйте пакет httpRequest (http://cran.fiocruz.br/web/packages/httpRequest/index.html), чтобы обновить свой статус. Это просто ПОСТ. Я не могу найти пример в R, но вот пример в PHP - нетрудно понять, что делается: http://fbcookbook.ofhas.in/2009/02/07/facebook-reveals-status-api-how-to-use-it/

Ответ 4

Конечно, изучите API и создайте пакет.

Если ваш вопрос действительно был "кто-нибудь уже сделал эту работу для меня?" то ответ может быть отрицательным.

В ответ на комментарий классик "Это R. Нет, если. Только как". все еще применяется. Цитирование из пакета fortunes:

> library(fortunes)
> fortune("Yoda")

Evelyn Hall: I would like to know how (if) I can extract some of the
information from the summary of my nlme.
Simon Blomberg: This is R. There is no if. Only how.
   -- Evelyn Hall and Simon 'Yoda' Blomberg
      R-help (April 2005)

> 

Итак, скачайте twitteR, посмотрите, как он использует RCurl для доступа к веб-API и аналогичным образом для Facebook API. Или заплатите кому-то, чтобы сделать это за вас.

Ответ 5

Прямо сейчас (декабрь 2013 г.) можно обновить статус Facebook, используя R. Вам нужно всего лишь использовать пакет RFacebook (http://cran.r-project.org/web/packages/Rfacebook/), Все, что вам нужно, это настроить все (здесь у вас есть учебник - http://thinktostart.wordpress.com/2013/11/19/analyzing-facebook-with-r/), а после этого есть функция updateStatus, например:

updateStatus("Here is my new status",  token)