gpt4 book ai didi

node.js - 使用 ntwitter 在 Node.js 中多次调用 Twitter 流 API

转载 作者:搜寻专家 更新时间:2023-10-31 23:06:40 25 4
gpt4 key购买 nike

我有以下代码:

var access_token_key, access_token_secret, consumer_key, consumer_secret, get_twitter, listen, twitter;

twitter = require('ntwitter');

consumer_key = 'bogus';
consumer_secret = 'fake';

// consumer
access_token_key = 'falsey';
access_token_secret = 'unreal';

get_twitter = function(key, secret) {
return new twitter({
consumer_key: consumer_key,
consumer_secret: consumer_secret,
access_token_key: key,
access_token_secret: secret
});
};

listen = function(feed) {
var api = get_twitter(access_token_key, access_token_secret);
return api.stream('statuses/filter', {track: feed.track}, function(stream) {
console.log('setting up stream for %s', feed.track);

stream.on('data', function(data) {
console.log('data for %s', feed.track);
console.log('\t' + data.user.screen_name + ': ' + data.text);
});

stream.on('end', function(response) {
console.log('ending stream for %s', feed.track);
});

stream.on('destroy', function(response) {
console.log('destroying stream for %s', feed.track);
});
});
};

module.exports.listen = listen;

当我调用 listen({track: 'superbowl'}) 时,它起作用了。欢呼!它可以做一个小应用程序应该做的一切!我在控制台中得到这个:

setting up stream for superbowl
data for superbowl
user: tweet

但在那之后,我调用了 listen({track: 'humble bundle'}),它设置了新的流,但发生了这种情况:

setting up stream for humble bundle
ending stream for superbowl
destroying stream for superbowl
data for humble bundle
user: tweet

我是不是做错了什么?我还没有完全掌握 Node 或 Twitter 的某些概念吗?

最佳答案

来自访问和速率限制下的 Twitter 流式 API 文档 (https://dev.twitter.com/docs/streaming-api/concepts):

Each account may create only one standing connection to the Streaming API. Subsequent connections from the same account may cause previously established connections to be disconnected. Excessive connection attempts, regardless of success, will result in an automatic ban of the client's IP address. Continually failing connections will result in your IP address being blacklisted from all Twitter access.

也就是说,您一次只能有一个流媒体连接。为了接收这两组结果,您需要改为使用 listen({track: 'superbowl, humble bundle'})。这意味着您无法更改正在收听的内容,必须停止收听、修改查询并重新开始收听。

关于node.js - 使用 ntwitter 在 Node.js 中多次调用 Twitter 流 API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9088238/

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