【问题标题】:How to stream tweets from specific accounts如何从特定帐户流式传输推文
【发布时间】:2017-06-29 03:33:09
【问题描述】:

我正在使用 twitter npm 包尝试从指定帐户流式传输推文。

我在浏览 twitter api 文档时遇到了问题,所以我有点困惑。

我可以点击 REST 端点来获取指定的用户推文信息:

    var client = new Twitter({});

    client.get('statuses/user_timeline', { screen_name: user }, function(error, tweets) {
      if(error) throw error;
      console.log(tweets);
    });

如何流式传输推文?甚至可能吗?如果没有,我还能如何做到这一点?我希望它尽可能地响应迅速。

【问题讨论】:

    标签: javascript node.js twitter


    【解决方案1】:

    想通了……

        var stream = client.stream('statuses/filter', { follow: userId });
    
        stream.on('data', function(event) {
          console.log(event && event.text);
        });
    

    这将客户端流阅读器将显示自动生成的推文。

    很遗憾,用户的 screen_name 不能使用,所以你必须事先找出来。

    【讨论】:

      【解决方案2】:

      我编写了下面的代码,并且能够获取用户的最后 20 条推文并将它们保存在文件 log.txt 中。

      var Twitter = require('twitter');
      var fs = require("fs");
      
      //Your keys go inside {}
      var client = new Twitter({});
      
      //These are the parameters for the API call
      var params = {
          screen_name: 'damiengold', //use damiengold instead of @damiengold
          count: 20
      };
      
      //Perform the API call and return data
      client.get('statuses/user_timeline.json', params, function(error, tweets, response) {
          var dataToFile;
          if (!error) {
              for (var i = 0; i < tweets.length; i++) {
                  console.log(tweets[i].created_at + " " + tweets[i].text);
                  console.log("-------------------------------");
      
                  dataToFile = tweets[i].created_at + " " + tweets[i].text + "\n-----------\n";
      
                  //This block of code will append tweets to the file called "log.txt".
                  fs.appendFile("log.txt", dataToFile, function(err) {
      
                      // If the code experiences any errors it will log the error to the console.
                      if (err) {
                          return console.log(err);
                      }
                  })
              }
          }
      
          console.log("Last 20 tweets are now displayed on the screen and saved in log.txt.");
      
      });
      

      【讨论】:

      • 感谢您的回复,但我正在寻找一种不需要我在 setInterval 中运行它的实时解决方案
      • setInterval 是什么意思?
      • @Robodude 我没有遇到任何实时获取数据的问题。
      • 如果您查看我的解决方案,您会看到更多我正在尝试做的事情。它通过流自动获取推文,因此不需要手动调用其余 api 调用。
      猜你喜欢
      • 1970-01-01
      • 2018-10-14
      • 1970-01-01
      • 1970-01-01
      • 2021-03-16
      • 1970-01-01
      • 1970-01-01
      • 2018-05-03
      • 2023-01-02
      相关资源
      最近更新 更多