Twitter 无速率限制的直播推文

Twitter 无速率限制的直播推文,twitter,request,jsonp,Twitter,Request,Jsonp,我正在创建一个仪表板,可以在地图上绘制支持地理位置的推文。最大的问题是,为了让我模拟它是真实的生活,一个新的要求是每秒钟 根据Twitter的API限制,对于unAuth/誓言,restapi调用被限制为每小时150/350次(分别),因此每秒调用一次是不可行的。也许我不得不接受刷新延迟,但我很好奇是否有解决办法 有没有一种方法可以让我拥有一个真正的实时提要,在用户推特时在地图上放置一个点 以下是我的部分代码供松散参考: // url is set above with the search

我正在创建一个仪表板,可以在地图上绘制支持地理位置的推文。最大的问题是,为了让我模拟它是真实的生活,一个新的要求是每秒钟

根据Twitter的API限制,对于unAuth/誓言,restapi调用被限制为每小时150/350次(分别),因此每秒调用一次是不可行的。也许我不得不接受刷新延迟,但我很好奇是否有解决办法

有没有一种方法可以让我拥有一个真正的实时提要,在用户推特时在地图上放置一个点

以下是我的部分代码供松散参考:

// 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
}
//url是在上面的搜索查询中设置的
函数firstQuery(术语、最旧tweet、页面、图片){
getLimiter++;
var encodedTerms=encodeURIComponent(术语);
$.getJSON(url+'&page='+page+'&max_id='+oldestweet+'&include_entities=1&result_type=recent&rpp=100&callback=?',函数(tweets){
if($(tweets.results).length){
if(storedLatestTweet
您可以通过twitter流API在twitter上进行实时处理。但stream api并没有向您发送所有推文,您必须指定关键字来过滤包含给定关键字的推文,或者指定用户名来跟踪来自给定用户的推文,或者指定地理位置来过滤来自特定位置的推文。此外,关键词数量、用户ID等也有限制。最后,twitter将提供全球流量中最多1%的推文。因此,例如,如果你设计了一个跟踪全球流量不足1%的过滤器,你将获得所有推文(理论上),否则你将错过一些推文,因为推文不会与你共享

还有一个公共样本流,它提供了一些来自twitter的样本数据。如果你只是为了做一个实验,它可以帮助你

我给你的建议是,确定你到底想在twitter上关注什么,为流式api设计一个聪明的过滤器,并从你的地图中跟踪结果。您还可以通过定期再次调用search api来填充应用程序中缺失的数据,从而提高搜索结果(有时,由于直播流中的多种原因,推文无法发送,您可以通过search api检索推文)


这可能是针对特定的关键字,但这些很可能是非常准确的。只需打开一个连接即可查看数据流。当您需要更改筛选器(添加关键字等)或由于某种原因引发异常时,可能需要重新启动连接(twitter api在大多数情况下工作顺利,连接不会中断太多,但也可能会发生。由于这种罕见的机会,监控流的状态是一个好主意。我在想如何将我的循环转换为能够处理流的东西时遇到了一点麻烦。你能帮我吗e out?在您提供的代码中,您使用的搜索api与流api不同。不幸的是,我不知道您编写代码的语言,无法为您正确修改代码。我使用java和twitter4j来流推特。在下面的文档中,只需检查最新的示例(第9个)顺便说一句,您的拖缆需要作为另一个进程工作,它将始终工作,以确保您不会丢失任何数据。检查流api以查看twitter所需的参数。