JavaScriptでTwitterAPIを使ってツイートを取得しました。
取得する条件がたくさん指定できるのですが、自分が取得した例(乃木坂46の公式アカウントの投稿を取得)を紹介しようと思います!
Developer PortalにてBearer Tokenを取得済みであることを前提とします。
❯ node -v
v16.5.0
❯ yarn -v
1.22.10https://developer.twitter.com/en
上記サイトの、Search Tweetsを試しました。
いくつかの言語で書かれたサンプルコードもGitHubにあるので、そちらを参考にコードを編集しました。
サンプルコード内の、recent_search.jsを使用しました。
サンプルコードで使用されていたパッケージのインストールを行います。
yarn add -D dotenv needleツイートを取得する条件を指定するために、以下の箇所を編集していきます。
// Edit query parameters below
// specify a search query, and any additional fields that are required
// by default, only the Tweet ID and text fields are returned
const params = {
  query: "from:twitterdev -is:retweet",
  "tweet.fields": "author_id",
};paramsに記載できるものは以下ページ内のQuery parametersから参照できます。
https://developer.twitter.com/en/docs/twitter-api/tweets/search/api-reference/get-tweets-search-recent
また、以下ページにQuery parametersの、'query'に指定できるOperatorsが記載されています。
https://developer.twitter.com/en/docs/twitter-api/tweets/search/integrate/build-a-query
from:のあとに、乃木坂46公式アカウントのusernameを指定します。
const params = {
  query: "from:nogizaka46",
};実行してみます。
❯ node index.js
{
  data: [
    {
      id: '1469316238299914247',
      text: '【ニュース更新】 「乃木坂配信中」にて【食わず嫌い】見破ることはできるか? 掛橋VS筒井 初めて食べるものを当てるゲーム【対決】公開! https://t.co/DzKeBqAnQm https://t.co/PPUPJN2Wwb'
    },
  〜〜省略〜〜アカウント指定に加え、投稿内の画像を取得しようと思います。
media.fieldsとexpansionsを追加します。
ドキュメント内、media.fieldsの説明欄に書かれているように、media.fieldsにはexpansionsも記載する必要があります。
The Tweet will only return media fields if the Tweet contains media and if you’ve also included the expansions=attachments.media_keys query parameter in your request.
const params = {
  query: "from:nogizaka46",
  expansions: "attachments.media_keys",
  "media.fields": "url",
};実行結果
❯ node index.js
{
  data: [
    {
      attachments: { media_keys: [ '3_1469316236475461634' ] },
      id: '1469316238299914247',
      text: '【ニュース更新】 「乃木坂配信中」にて【食わず嫌い】見破ることはできるか? 掛橋VS筒井 初めて食べるものを当てるゲーム【対決】公開! https://t.co/DzKeBqAnQm https://t.co/PPUPJN2Wwb'
    },
    〜〜省略〜〜
  ],
  includes: {
    media: [
      {
        media_key: '3_1469316236475461634',
        type: 'photo',
        url: 'https://pbs.twimg.com/media/FGQPVRHVcAIJKaX.jpg'
      },
      〜〜省略〜〜
    ]
}includesが追加され、画像や動画のURLが追加で取得できます。
さらに追加で、ツイートのいいね数などを取得できる'tweet.fields': 'public_metrics'を追加してみました。
const params = {
  query: "from:nogizaka46",
  "tweet.fields": "public_metrics",
  expansions: "attachments.media_keys",
  "media.fields": "url",
};実行結果
❯ node index.js
{
  data: [
    {
      text: '【ニュース更新】 「乃木坂配信中」にて【食わず嫌い】見破ることはできるか? 掛橋VS筒井 初めて食べるものを当てるゲーム【対決】公開! https://t.co/DzKeBqAnQm https://t.co/PPUPJN2Wwb',
      attachments: { media_keys: [ '3_1469316236475461634' ] },
      public_metrics: {
        retweet_count: 599,
        reply_count: 12,
        like_count: 4111,
        quote_count: 46
      },
      id: '1469316238299914247'
    },
    〜〜省略〜〜
}public_metricsが追加されました。
実行した当時の最新ツイートを確認すると、時間差で多少の違いが出ていますが、たしかにツイートの情報が取得できていることを確認できました。
 
2021年11月にTwitter API v2がTwitterの主要APIになったので、使ってみたい!と思い試してみました。
今後TwitterAPIを使用したアプリケーションも作ってみたいなと思いました!