at backyard

Color my life with the chaos of trouble.

公式のTwitter SDKをJavaScriptから触ってみたメモ(ツイート取得、アカウント取得編)

昨日の続き

shinshin86.hateblo.jp

目次

公式のTwitter TypeScript SDKを触ってみる

github.com

インストールは下記

yarn add twitter-api-sdk
# or
# npm install twitter-api-sdk

TypeScript SDKなのだけど、ひとまずJavaScript(Node.js - ESModule)で書いていく。

touch main.mjs

※なおこのSDKに関するドキュメントはぱっと見つけられなかったのでソースコードを読んで、調べています。 だいたいやりたいことは下記で定義されているソースコード内に定義されているので、こちらを直接見るのがオススメ。

github.com

特定のツイートを取得するサンプル

昨日のポスト内で取得している Bearer Token環境変数に格納して利用していく。

プログラムを実行する際は下記のように実施する。

BEARER_TOKEN=<Bearer Token> node main.mjs

まずは特定のツイートを取得するサンプル。

import { Client } from "twitter-api-sdk";

const client = new Client(process.env.BEARER_TOKEN);

const tweetId = "ツイートごとに振られる固有のID(該当するツイートページのURLなどから分かる)";
const tweet = await client.tweets.findTweetById(tweetId);
console.log(tweet);

指定したツイートをLikeしたアカウントの一覧を取得するサンプル

なお、paginationがあるエンドポイントでは、下記のようにforぶんを使って繰り返し取得できる。

import { Client } from "twitter-api-sdk";

const client = new Client(process.env.BEARER_TOKEN);

const tweetId = "ツイートごとに振られる固有のID(該当するツイートページのURLなどから分かる)";
const users = client.users.tweetsIdLikingUsers(tweetId);
for await (const page of users) {
  console.log(page.data);
}

指定したツイートをリツイートしたアカウントの一覧を取得するサンプル

import { Client } from "twitter-api-sdk";

const client = new Client(process.env.BEARER_TOKEN);

const tweetId = "ツイートごとに振られる固有のID(該当するツイートページのURLなどから分かる)";
const users = client.users.tweetsIdRetweetingUsers(tweetId);
for await (const page of users) {
  console.log(page.data);
}

指定したユーザのツイート一覧を取得するサンプル

GitHubのREADMEにあがっているやつだと分かりにくかったので、ユーザ名から逆引きして取得できるようにしています。
(そもそもuserIdの取得方法がよく分からなかったので、その作業もSDKを通じて行っている)

import { Client } from "twitter-api-sdk";

const client = new Client(process.env.BEARER_TOKEN);

const userName = "<対象のユーザ名(@から始まるやつ)>";
const { data } = await client.users.findUserByUsername(userName);

// data.idにuserIdが格納されている
const tweets = client.tweets.usersIdTweets(data.id);

for await (const page of tweets) {
  console.log(page.data);
}

指定したユーザーがいいねしたツイート一覧を取得するサンプル

import { Client } from "twitter-api-sdk";

const client = new Client(process.env.BEARER_TOKEN);

const userName = "<対象のユーザ名(@から始まるやつ)>";
const { data } = await client.users.findUserByUsername(userName);

const tweets = client.tweets.usersIdLikedTweets(data.id);

for await (const page of tweets) {
  console.log(page.data);
}

指定したユーザーがリツイートしたツイート一覧を取得するサンプル

パッと見ソースコードから見つけられなかったが、内容的にないというのは考えにくい?後で再度探して見るのでTODO

指定したユーザーのフォロワー一覧を取得するサンプル

こちらも client.users.findUserByUsername を用いて、ユーザ名から逆引きしてユーザIDを取得して利用。

import { Client } from "twitter-api-sdk";

const client = new Client(process.env.BEARER_TOKEN);

const usernName = "<対象のユーザ名(@から始まるやつ)>";
const { data } = await client.users.findUserByUsername(usernName);

const followers = client.users.usersIdFollowers(data.id);

for await (const page of followers) {
  console.log(page.data);
}

指定したユーザーのフォロー一覧を取得するサンプル

上のサンプルと似ているが、usersIdFollowing を使えばフォロー中のアカウントを取得できる

import { Client } from "twitter-api-sdk";

const client = new Client(process.env.BEARER_TOKEN);

const usernName = "<対象のユーザ名(@から始まるやつ>";
const { data } = await client.users.findUserByUsername(usernName);

const followings = client.users.usersIdFollowing(data.id);

for await (const page of followings) {
  console.log(page.data);
}