Twitter API Part 3-- ツイート ID から会話ID, 画像URL, Like, RTを取得する
Tags: twitter
Published: 2022-05-22 12:57:21


https://developer.twitter.com/en/docs/tutorials/postman-getting-started

docs を見てツイートの詳細データを取得してみる

## 会話ID

```php
https://api.twitter.com/2/tweets/1528004049932816384?tweet.fields=conversation_id
```

tweet.fields で conversation_id を value に指定すると

```json
{
    "data": {
        "conversation_id": "1528004049932816384",
        "id": "1528004049932816384",
        "text": "すくすく育っとるな〜 https://t.co/OB0LAKtKwA"
    }
}
```

会話 ID が取得できた。これを使うと会話のツリーを表示できるのだろうか？

---

## entities/urls

同じくフィールドに　entities を指定して
同じく 4 つの犬の画像のツイートを取得してみる

```json
{
    "data": {
        "id": "1528004049932816384",
        "text": "すくすく育っとるな〜 https://t.co/OB0LAKtKwA",
        "entities": {
            "urls": [
                {
                    "start": 11,
                    "end": 34,
                    "url": "https://t.co/OB0LAKtKwA",
                    "expanded_url": "https://twitter.com/xxhama2/status/1528004049932816384/photo/1",
                    "display_url": "pic.twitter.com/OB0LAKtKwA",
                    "media_key": "3_1528004043674898432"
                },
                {
                    "start": 11,
                    "end": 34,
                    "url": "https://t.co/OB0LAKtKwA",
                    "expanded_url": "https://twitter.com/xxhama2/status/1528004049932816384/photo/1",
                    "display_url": "pic.twitter.com/OB0LAKtKwA",
                    "media_key": "3_1528004043649732608"
                },
                {
                    "start": 11,
                    "end": 34,
                    "url": "https://t.co/OB0LAKtKwA",
                    "expanded_url": "https://twitter.com/xxhama2/status/1528004049932816384/photo/1",
                    "display_url": "pic.twitter.com/OB0LAKtKwA",
                    "media_key": "3_1528004043637149696"
                },
                {
                    "start": 11,
                    "end": 34,
                    "url": "https://t.co/OB0LAKtKwA",
                    "expanded_url": "https://twitter.com/xxhama2/status/1528004049932816384/photo/1",
                    "display_url": "pic.twitter.com/OB0LAKtKwA",
                    "media_key": "3_1528004044899635200"
                }
            ]
        }
    }
}
```

すると urls という配列になっていて

* start
* end
* url
* expanded_url
* display_url
* media_key

それぞれ、これらが入っている。

url が 

```
https://t.co/1234
```

の形の短縮 URL

expanded_url が 

```php
"https://twitter.com/xxhama2/status/1234/photo/1"
```

の形の表の通常の URL

display_url が 

```php
pic.twitter.com/1234
```

の形の画像 URL (アクセスするとツイートに誘導される)

になっている。

この中では　display_url から画像が表示できると予想する。

---

## in_reply_to_user_id

他者からのリプライでは ID が取れるが、自分へのリプライは表示されなかった。

---

## public_metrics

公開測定基準？

* RT
* リプライ
* いいね
* 引用 RT

これらの数を取得できる。

```php
https://api.twitter.com/2/tweets/
1528085462044545025?
tweet.fields=public_metrics
```

これを実行すると

```json
{
    "data": {
        "id": "1528085462044545025",
        "public_metrics": {
            "retweet_count": 3,
            "reply_count": 0,
            "like_count": 21,
            "quote_count": 0
        },
        "text": "一緒に食べてるなごむw https://t.co/6tjUzFtiqx"
    }
}
```

このように　RT と いいね などの数が取れた。
これはとても便利そう。

## organic_metrics

いいね、RT、リプライ数、これの他にインプレッション数が見れる。
しかし普通にリクエストしても

> "Sorry, you are not authorized to access 'organic_metrics.impression_count' on the Tweet with id : [1234].",

権限がないと出てしまった。

https://developer.twitter.com/en/docs/tutorials/postman-getting-started

> Requires user context authentication.

とドキュメントに書いてあるので
api_secret などをリクエストに含めないといけないのかもしれない。

---

## まとめ

ツイート ID から tweet.fileds の value を変えてリクエストすることで

* conversation_id で そのツイートの会話ツリーとして ID
* entities.urls.display_url でツイートの画像URL
* public_metrics で いいね や RT 数

これらの詳細情報が獲得できたが

インプレッション数はさらなる認証がないと取得できなかった。

---

## 次回

これまではツイートID から詳細を取得してきた
次は ユーザーID からそのユーザーのツイートリストを取得したい。