Есть ли какая-нибудь работа по извлечению разговоров в Твиттере с использованием последней версии Twitter REST API v1.1?

Я работаю над проектом, в котором нужно найти разговор пользователя Twitter. Например, я хочу получить все ответы на этот твит BBC World Service. Используя API REST v1.1, я могу получить временную шкалу (твит, ретвит) пользователя Twitter. Но я не нашел никакой документации / работы по извлечению ответов на конкретный твит. Есть ли какая-нибудь работа по получению ответов на конкретный твит вообще?

1 ответ

Решение

Для получения ответов на определенный твит нет вызова 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 и посмотрите, соответствует ли это статусу, который вы ищете.

TwitterAPI v2 позволяет извлекать всю цепочку беседы, используя в поиске только идентификатор беседы. (В v1.1 вам нужно было написать собственный код для его сборки)

Ответы на конкретный твит, а также ответы на эти ответы включаются в беседу, происходящую из одного исходного твита. Независимо от того, сколько цепочек ответов получится, все они будут иметь общий идентификатор беседы с исходным твитом, который вызвал диалог. Используя 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

Другие вопросы по тегам