是否有解决方案可以使用最新的 Twitter REST API v1.1 获取 Twitter 会话?

5
我正在处理一个项目,需要检索Twitter用户的对话。例如,我想获取BBC World Service这条推文的所有回复。使用REST API v1.1,我可以获取Twitter用户的时间轴(推文,转推)。但是,我没有找到任何有关获取特定推文回复的文档/解决方法。是否有任何方法来获取特定推文的回复?
2个回答

21

没有用于获取特定推文回复的API调用。 不过,您可以作弊!

使用搜索API,您可以构建一个搜索查询,其中:

  • 是回复@bbcworldservice的。
  • 发生在推文发布后。
  • 可选地,在特定日期/时间之前。

因此,在这种情况下,可以使用以下内容进行搜索:

https://api.twitter.com/1.1/search/tweets.json?
    q=%23bbcworldservice&
    since_id=489366839953489920&
    count=100

您将获得一份推文列表(最多100个)。然后,您需要搜索它们以查找in_reply_to_status_id_str,并查看它是否与您正在寻找的状态匹配。


1
这真的很扎实,比我能想出的任何东西都要好。 - DWRoelands
截至2017年,此方法存在的问题是,Twitter上的对话可能会包含未提及实际推文创建者(即根推文)的推文。在这种情况下,“q=%23user”的方法只会返回在谈话中提到“@user”的推文,这可能会在向用户显示时导致对话潜在的空白。但另一方面,这仍然是获取推文回复的唯一方式。 - Anjan Biswas
这个解决方案获取过去7天内的消息。https://twittercommunity.com/t/tweet-conversation-is-not-returning-the-tweets/154235 - Bruno Quaresma

2
TwitterAPI v2允许您仅使用搜索中的conversation_id检索整个对话线程。(在v1.1中,您必须编写自定义代码来构建它)
给定推文的回复以及对这些回复的回复都包含在从单个原始推文开始的对话中。无论有多少回复线程产生,它们都将共享与引发对话的原始推文相同的conversation_id。使用Twitter API v2,您可以检索和重构整个对话线程,以便更好地了解正在说什么以及对话和想法如何发展。
示例:
curl --request GET \
  --url 'https://api.twitter.com/2/tweets?ids=1225917697675886593&tweet.fields=author_id,conversation_id,created_at,in_reply_to_user_id,referenced_tweets&expansions=author_id,in_reply_to_user_id,referenced_tweets.id&user.fields=name,username' \
  --header 'Authorization: Bearer $BEARER_TOKEN' 

响应将会像这样。
{
    "data": [
        {
            "id": "1225917697675886593",
            "text": "@TwitterEng",
            "created_at": "2020-02-07T23:02:10.000Z",
            "author_id": "2244994945",
            "in_reply_to_user_id": "6844292",
            "conversation_id": "1225912275971657728",
            "referenced_tweets": [
                {
                    "type": "quoted",
                    "id": "1200517737669378053"
                },
                {
                    "type": "replied_to",
                    "id": "1225912275971657728"
                }
            ]
        }
    ],
    "includes": {
        "users": [
            {
                "username": "TwitterDev",
                "name": "Twitter Dev",
                "id": "2244994945"
            },
            {
                "username": "TwitterEng",
                "name": "Twitter Engineering",
                "id": "6844292"
            }
        ],
        "tweets": [
            {
                "id": "1200517737669378053",
                "text": "| ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄|\n             don't push            \n             to prod on            \n               Fridays                  \n|___________| \n(\\__/)  ||\n(•ㅅ•) ||\n/   づ",
                "created_at": "2019-11-29T20:51:47.000Z",
                "author_id": "2244994945",
                "conversation_id": "1200517737669378053"
            },
            {
                "id": "1225912275971657728",
                "text": "Note to self: Don't deploy on Fridays",
                "created_at": "2020-02-07T22:40:37.000Z",
                "author_id": "6844292",
                "conversation_id": "1225912275971657728"
            }
        ]
    }
}

更多信息请查看 Twitter API 的Conversation页面。


1
有人知道为什么上述请求只返回了两条推文,而实际上有数百条回复吗? https://twitter.com/TwitterEng/status/1225912275971657728 - Alex Spurling
2
@AlexSpurling 这可能是因为API只检索了上周发布的推文。“最近的搜索端点允许您以编程方式访问在过去一周内发布的经过筛选的公共推文,并可通过标准和学术研究产品轨道获得。” - Mohammad Mustafa

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接