はじめに
nodejsで画像付きのツイートを調べてみる。
色々サイトを参考にするが、意外と動かない。
Twitter APIの1.1と2.0が混在していて何がなんだか。aiに聞いてもぐふわふわしちゃう。
要するに画像のアップロードは1.1じゃないとできない。
だけど、ツイート1.1ではできず、2.0じゃないとできない。
1.1でアップロード。アップロードが完了するとmedia idを発行してくれる。
そのmedia idをつけて2.0でアップロードという方法らしいです。
twitterManager.ts
import {TwitterApi, TwitterApiReadWrite} from 'twitter-api-v2';
export class TwitterManager {
constructor() {
}
public tweet = async (message:string, filePath:string):Promise<void> =>
{
const client:TwitterApi = new TwitterApi({
appKey: process.env.API_KEY,
appSecret: process.env.API_KEY_SECRET,
accessToken: process.env.ACCESS_TOKEN,
accessSecret: process.env.ACCESS_TOKEN_SECRET,
});
const twitterClient:TwitterApiReadWrite = client.readWrite;
try {
const mediaId:string = await twitterClient.v1.uploadMedia(filePath);
await client.v2.tweet(
{ text: message, media: { media_ids: [mediaId] } }
);
} catch (e) {
console.log(e)
}
}
}
まとめ
twitter api2.0で画像をアップロードする準備しているようです。
この話もいつまで持つことやら。
一気に両方送れた方がいいよね。
参考
Make a Twitter bot with Node.js and the v2 Twitter API in under 20 minutes
https://www.youtube.com/watch?v=LCydSB7JcHw