Twitter API推文位置

时间:2016-04-06 02:19:04

标签: javascript twitter

我可以使用以下方式轻松获取推文文字和用户信息:

var tweet = data.statuses[index];
tweet.text, tweet.user.screen_name etc

然而我似乎无法获得推文的位置信息(即从哪里发送)。它总是似乎是空的?

由于

1 个答案:

答案 0 :(得分:1)

我对这个问题的解决方案是以下逻辑:

    function setLocation(tweet){
        var location = null;

        // Try coordinates first, as it gives the most concrete data.
        if (tweet.coordinates) {
            location = (tweet.coordinates.coordinates).toString();
        }
        // Next up, try tweet.place, which could also have a full street address, and will have at least the full_name and country, if not null 
         else if (tweet.place) {
            var street = "";
            if (tweet.place.attributes.street_address){
                street += tweet.place.attributes.street_address + ", ";
                if (tweet.place.attributes['623:id']){
                    street += tweet.place.attributes['623:id'] + ", "; 
                }
            } 
            location = street + tweet.place.full_name + ", " + tweet.place.country;
        // Lastly, if all else fails, grab the user location. This data is pretty poor, but is at least something. You may not want it, depending on your usage.
        } else if (tweet.user && tweet.user.location){
            location = tweet.user.location;         
        } 
        return location;
    }

在这个逻辑中,我在三个不同的地方查找可用的位置:tweet.coordinatestweet.place及其子字段,以及tweet.user.location。所有这些字段可能存在于完整的JSON格式的推文中,但Twitter非常明确地表明它们不一定。因此,我有所有if语句检查是否存在字段/值。

然而,大约1/3到1/2的时间,推文上根本没有任何位置数据。你无能为力,在上面的代码中,如果没有位置,你将得到一个空的回报。如果您的逻辑要求您必须拥有每条推文的位置数据,则可以将&geocode=true放入查询字符串中。这将导致Twitter在其响应中过滤掉未定位的推文。我自己还没有用过,所以不能保证它能做到这一点。根据我对上述功能的经验,很少有推文(我估计不到1%)启用了地理编码,因此使用geocode=true可能会大幅减少响应数据量。

免责声明:我在我的代码中优先考虑tweet.coordinates,然后继续检查将提供下一个最可靠数据的字段,直到我到达tweet.user.location,这是用户列出的任何内容在他们的个人资料这可能是任何事情。它偶尔会给你一些类似于" In Outer $ paaaaaaace' - 据推测,这可能不准确,对大多数应用程序肯定没有帮助。因此,买家要注意user.location;它适用于我的过程,但您可能需要应用更严格的限制来满足您的逻辑。

最后,一个澄清器:我一直连接字符串,并将位置作为字符串返回。这是为了兼容性,因为我不确定我是否会找到坐标(以及使用'坐标和'类型'属性)的对象或其他选项之一。同样,从一条推文到下一条推文的差异很大。你不能总是指望返回相同的数据,并且需要在推文中提供奇怪的东西,或根本没有东西。

有关推文内容的更多详情,请参阅this。它真的有助于澄清可以抓住位置的地方。这是另一个详细说明推文places.

的网站