节点推特 npm 包

node twitter npm package

我已经通过 npm 安装了 node-twitter 并使用以下代码创建了一个 index.js 文件。当我在控制台中 运行 节点 index.js 时,我没有得到任何响应。我已经包含了我自己的密钥和秘密,所以这似乎不是问题所在。

var Twitter = require('twitter');

var client = new Twitter({
  consumer_key: process.env.TWITTER_CONSUMER_KEY,
  consumer_secret: process.env.TWITTER_CONSUMER_SECRET,
  access_token_key: process.env.TWITTER_ACCESS_TOKEN_KEY,
  access_token_secret: process.env.TWITTER_ACCESS_TOKEN_SECRET,
});

client.stream('statuses/filter', {track: 'nyc'},  function(stream){
  stream.on('data', function(tweet) {
    console.log(tweet.text);
  });

  stream.on('error', function(error) {
    console.log(error);
  });
});

您正在连接到 Twitter 的流式传输端点之一,因此只有当有人在那个准确时刻发布了一条包含文本 'nyc' 的推文时,您才会看到更新。

我怀疑这不是您的意图,而是您希望搜索包含文本 'nyc' 的最新推文,如下所示:

client.get('/search/tweets.json?q=nyc', function(error, tweets, response){
  if(error) throw error;
  console.log(tweets);
});

Twitter 搜索 API 文档是 here。如果您确实 想要流式传输推文,我建议使用类似 forever.js 的东西来让您的脚本 运行 足够长以收听推文并输出它们。

编辑:因为你想在推文进来时流式传输,你可以使用 forever.js 来保留你的脚本 运行,如下所示:

var forever = require('forever-monitor');

var child = new (forever.Monitor)('twitter.js', {
    max: 1,
    silent: false,
    args: []
});

child.on('exit', function () {
    console.log('twitter.js has exited after 3 restarts');
});

child.start();

其中 twitter.js 是问题中发布的文件。如果您想从指定时间向后或向前搜索,可以在 Twitter API docs.

中找到有关如何执行此操作的详细信息