gpt4 book ai didi

r - 使用 R 创建与 twitter 流 API 的持久连接

转载 作者:行者123 更新时间:2023-12-04 17:38:12 27 4
gpt4 key购买 nike

我目前正在使用 R 中的 streamR 包从 twitter 中的过滤器流中流式传输推文。我有一个用于此目的的握手 ROAuth 对象。我的一段代码看起来像:

# load the Twitter auth object
load("twitter_oAuth3.RData")
load("keywords3.RData")

streamTweet = function(){
require(streamR)
require(ROAuth)

stack = filterStream(file.name="",track=keywords,timeout=500,oauth=twitter_oAuth)
return(stack)
}

我想创建一个实时应用程序,其中涉及将这些推文转储到一个 activeMQ 主题中。我的代码是:

require(Rjms)

# Set logger properties
url = "tcp://localhost:61616"
type = "T"
name = "TwitterStream"

# initialize logger
topicWriter = initialize.logger(url,type,name)

topicWrite = function(input){
# print("writing to topic")
to.logger(topicWriter,input,asString=TRUE,propertyName='StreamerID',propertyValue='1')
return()
}

logToTopic = function(streamedStack){
# print("inside stack-writer")
stacklength = length(streamedStack)
print(c("Length: ",stacklength))
for(i in 1:stacklength){
print(c("calling for: ",i))
topicWrite(streamedStack[i])
}
return()
}

现在我的问题是 filterStream() 需要的超时。我查看了幕后情况,发现了该函数进行的调用:

url <- "https://stream.twitter.com/1.1/statuses/filter.json"
output <- tryCatch(oauth$OAuthRequest(URL = url, params = params,
method = "POST", customHeader = NULL,
writefunction = topicWrite, cainfo = system.file("CurlSSL",
"cacert.pem", package = "RCurl")), error = function(e) e)

我尝试删除超时组件,但它似乎不起作用。有没有一种方法可以让我永远维护一个流(直到我杀死它),在每条推文进入主题时转储它?

附言我知道一个调用 twitter4j API 的 java 实现。然而,我不知道如何在 R 中做到这一点。

最佳答案

streamR 包的文档提到 filterStream() 中超时选项的默认选项是 0,这将使连接永久打开。

我引用:

"数字,连接到流的最大时间长度(以秒为单位)。这段时间后连接将自动关闭。例如,设置超时到 10800 将使连接保持打开状态 3 小时。默认为0,这将使连接永久打开。”

希望这对您有所帮助。

关于r - 使用 R 创建与 twitter 流 API 的持久连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16728768/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com