0

我正在创建一个仪表板,它将在制作时在地图上绘制启用地理的推文。最大的问题是,为了让我模拟它是真实的,每秒钟都会发出一个新的请求。

在此处输入图像描述

根据 Twitter 的 API 限制,对于 unAuth/OAth(分别),REST API 调用限制为每小时 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
}
4

1 回答 1

2

You can do live processing on twitter through Twitter Stream API. But stream api doesn't send you all tweets, you have to specify either keywords to filter tweets containing given keywords or userIds to follow tweets coming from given users or geo location to filter tweets coming from a particular place. Also there are limits on number of keywords, user ids to follow etc. And lastly twitter will give you upmost 1% percent of the tweets in the global traffic. So for example if you come up with a filter which tracks less than 1% of the global trafic you will get all the tweets (in theory) otherwise you will miss some tweet as twitter won't share them with you.

还有一个公共示例流,它为您提供了一些来自 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

于 2013-01-13T18:06:26.937 回答