【问题标题】:Page Twitter's REST API with Node使用 Node 页面 Twitter 的 REST API
【发布时间】:2017-12-23 19:21:53
【问题描述】:

我正在尝试使用 Node js 从 Twitter 获取带有特定主题标签的推文列表。 Twitter 就是这样,每个请求最多只能获得 15 条推文,所以如果我想要一个相当大的推文列表,我需要发出多个请求。为了让 Twitter 知道您想要下一个推文列表,您需要提供一个“max_id”变量,该变量应该保存您从上一个请求中返回的推文列表的最小 id。这个过程记录在here

这是我的尝试:

var hashtag = "thisisahashtag"; // hashtag that we are looking for
var max_id = '';

do {
    twitter.search({
        q: "#" + hashtag,
        result_type: "recent",
        max_id: max_id
    },
        session.accessToken,
        session.accessTokenSecret,
        function(error, data, response) { // callback
            // get the ids of all the tweets from one response and do comparison for smallest one
            for(var i = 0; i < data.statuses.length; i++) {
                var id = data.statuses[i].id;
                if(max_id == '' || id < parseInt(max_id)) {
                    max_id = id;
                }
            }
            // do something with the data...
        }
    )
} while(max_id != '0');

我正在使用 node-twitter-api 模块来发出请求。这是行不通的,因为外部循环将在不等待查询的情况下继续触发。有没有更好的方法来做到这一点?

【问题讨论】:

    标签: node.js rest twitter


    【解决方案1】:

    Twitter 允许您一次请求多达 100 条推文。我为此添加了count 参数。您应该从回调中发起后续请求。这样你就可以序列化你的请求了。

    function twitterSearch() {
        twitter.search({
            q: "#" + hashtag,
            result_type: "recent",
            max_id: max_id,
            count: 100 // MAX RETURNED ITEMS IS 100
        },
            session.accessToken,
            session.accessTokenSecret,
            function(error, data, response) { 
                for(var i = 0; i < data.statuses.length; i++) {
                    var id = data.statuses[i].id;
                    if(max_id == '' || id < parseInt(max_id)) {
                        max_id = id;
                    }
                }
    
                // GET MORE TWEETS
                if (max_id != '0') 
                    twitterSearch();
            }
        );
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-10-08
      • 1970-01-01
      • 2014-04-25
      • 1970-01-01
      • 2020-03-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多