Tweet对象的Entities部分中的URL错误

时间:2017-06-02 23:10:19

标签: api twitter tweets twython

我正在使用Twitter API从名为Twython的Python库中提取推文中的URL。我使用home_timeline API并查看entities来搜索网址。 通常,entities中的链接是正确的。但是,在某些情况下,链接是错误的。例如,这是来自帐户@WWF-Philippines的推文: enter image description here

当我将光标悬停在突出显示的链接上时,它会在状态栏上显示shortened_url1(我不能放在此处,因为Stackoverflow不允许)。如果我点击该链接,则会打开一个外部article。但是,如果我使用Twitter API查询相应的推文,这里是我得到的推文:

Need a guide to properly enjoy the great outdoors while minimizing human impact? This list is for you!\xe2\x80\xa6 shortened_url2

您可以看到此处的shortened_url2与悬停光标时显示的真实链接(shortened_url1)不同。如果我按照shortened_url2,它会打开相同的推文。 entities部分中的链接与此错误链接(shortened_url2)相同。

那么Twitter API有什么问题? 感谢。

1 个答案:

答案 0 :(得分:1)

我认为您正在查看实体的版本。

Twitter状态为 - https://twitter.com/WWF_Philippines/status/869027117652033536

从API调用https://api.twitter.com/1.1/statuses/show/869027117652033536.json会为我们提供以下实体:

"truncated": true,
"entities": {
    "hashtags": [],
    "symbols": [],
    "user_mentions": [],
    "urls": [{
        "url": "https:\/\/t.co\/UatUzmm9re",
        "expanded_url": "https:\/\/twitter.com\/i\/web\/status\/869027117652033536",
        "display_url": "twitter.com\/i\/web\/status\/8\u2026",
        "indices": [104, 127]
    }]
},

请注意顶部显示"truncated": true,

最近,Twitter更改了推文的显示方式以及它们在API中的表现方式 - 请参阅https://dev.twitter.com/overview/api/upcoming-changes-to-tweets

您需要在查询结尾添加?tweet_mode=extended。那会让你回来:

"truncated": false,
"display_text_range": [0, 126],
"entities": {
    "hashtags": [],
    "symbols": [],
    "user_mentions": [],
    "urls": [{
        "url": "https:\/\/t.co\/BgKxmFzrQc",
        "expanded_url": "http:\/\/bit.ly\/7LNTPrinciples",
        "display_url": "bit.ly\/7LNTPrinciples",
        "indices": [103, 126]
    }],

其中包含您想要的数据。