直播推文,不受费率限制

时间:2013-01-12 22:21:13

标签: twitter request jsonp

我正在创建一个仪表板,可以在制作时在地图上绘制支持地理位置的推文。最大的问题是,为了让我模拟它真正的现场,新的请求永远是第二个。

enter image description here

根据Twitter的API限制,对于unAuth / OAth(分别),REST API调用限制为每小时150/350,因此每秒拨打一次电话是行不通的。也许我不得不满足于刷新延迟,但我很好奇是否有解决方法。

有没有办法让我有一个真正的实时Feed,只要用户发推,就会在地图上添加一个点?

以下是我的代码的一部分,用于宽松参考:

// url is set above with the search query
function firstQuery(terms, oldestTweet, page, pic) {
    getLimiter++;
    var encodedTerms = encodeURIComponent(terms);
    $.getJSON(url + '&page=' + page + '&max_id=' + oldestTweet + '&include_entities=1&result_type=recent&rpp=100&callback=?', function(tweets) {
        if ($(tweets.results).length) {
            if (storedLatestTweet < tweets.results[0].id) {
                storedLatestTweet = tweets.results[0].id;
            }
            page++;
            tweetCount = tweetCount + tweets.results.length;
            storedOldestTweet = tweets.results[tweets.results.length - 1].id;
            harvest(tweets, pic);
            firstQuery(terms, oldestTweet, page, pic);
        } else {
            // continue to loop if more need to be plotted with the oldest tweet id known
            if (getLimiter < 65 && tweetNumber < 10) {
                page = 1;
                firstQuery(terms, storedOldestTweet, page, pic);
            }
            return latestLoop(); // loops the request
        }
    });
}

function latestLoop() {
    latest(terms, storedLatestTweet, page, pic);

    // use queryLoop so that the timeout can be killed on new search
    queryLoop = setTimeout(function() {
        latestLoop();
    }, 1000); // the loop rate of the request...1 second isn't gonna work
}

1 个答案:

答案 0 :(得分:2)

您可以通过Twitter Stream API在Twitter上进行实时处理。但是流api并不会向您发送所有推文,您必须指定任一关键字来过滤包含给定关键字的推文,或者使用userIds来关注来自特定用户或地理位置的推文来过滤来自特定地点的推文。此外,关键字数量,用户ID也有限制等等。最后,twitter会在全球流量中为您提供最多1%的推文。因此,例如,如果您想出一个跟踪全球流量不到1%的过滤器,您将获得所有推文(理论上),否则您将错过一些推文,因为Twitter不会与您分享。

还有公共样本流,它可以从twitter提供一些示例数据。如果您只是为实验做这件事,它可以帮助您。 https://dev.twitter.com/docs/api/1.1/get/statuses/sample

我建议您确定要在Twitter上关注什么,并为流式api提供一个聪明的过滤器并跟踪地图上的结果。您还可以通过再次定期调用搜索API来填充应用程序中的缺失数据来提高您的结果(有时由于实时流式传输中的多种原因而不会发送推文,并且通过搜索API可以检索它们)

https://dev.twitter.com/docs/streaming-apis/streams/public