[Node.js] Twitterにテキスト/画像を送信
ポイント
あまりサンプルコードで見かけない部分
・複数画像ある場合、ファイルパスのarrayを渡すことで1ツイートに統合
・reply_idを設定することでスレッド化
動作確認環境
・Mac OS X(10.14 Mojave)
・Node.js v8.8.0
・npm v5.5.1
・twitter v1.7.1
コード
例外処理ちゃんとしてない(考えてない)ので実運用時には各自で考慮してください。
const fs = require('fs');
const tw = require('twitter');
class Twitter {
constructor (consumer_key, consumer_secret, access_token, access_token_secret) {
this.client = new tw({
consumer_key: consumer_key,
consumer_secret: consumer_secret,
access_token_key: access_token,
access_token_secret: access_token_secret,
});
}
async send (message, fileNames=[], reply_id="") {
let media_ids = "";
for (let fileName of fileNames) {
let f = fs.createReadStream(fileName);
let file = {media: f};
let r_media = await this.client.post('media/upload', file);
media_ids += r_media.media_id_string + ",";
f.close();
}
let r = await this.client.post('statuses/update', {status: message, media_ids: media_ids, in_reply_to_status_id: reply_id});
return r;
}
}
使用例1
自己リプ(スレッド)にしない場合。
const TWITTER_CONSUMER_KEY = "YourConsumerKey";
const TWITTER_CONSUMER_SECRET = "YourConsumerSecret";
const TWITTER_ACCESS_TOKEN = "YourAccessToken";
const TWITTER_ACCESS_TOKEN_SECRET = "YourAccessTokenSecret";
let twitter = new Twitter(TWITTER_CONSUMER_KEY, TWITTER_CONSUMER_SECRET, TWITTER_ACCESS_TOKEN, TWITTER_ACCESS_TOKEN_SECRET);
twitter.send("test1");
twitter.send("test2", ["1.png"]);
twitter.send("test3", ["1.png", "2.png"]);
使用例2
自己リプ(スレッド)にする場合。Node.jsではトップレベルでのawaitが使用できないため、tweetごとにawaitさせるasync funcを作って呼んでいる。
const TWITTER_CONSUMER_KEY = "YourConsumerKey";
const TWITTER_CONSUMER_SECRET = "YourConsumerSecret";
const TWITTER_ACCESS_TOKEN = "YourAccessToken";
const TWITTER_ACCESS_TOKEN_SECRET = "YourAccessTokenSecret";
let twitter = new Twitter(TWITTER_CONSUMER_KEY, TWITTER_CONSUMER_SECRET, TWITTER_ACCESS_TOKEN, TWITTER_ACCESS_TOKEN_SECRET);
async function tweet (){
let r;
r = await twitter.send("test1");
r = await twitter.send("test2", ["1.png"], r.id_str);
r = await twitter.send("test3", ["1.png", "2.png"], r.id_str);
}
tweet();
注意事項
sleep噛ませる時は、↓のツイートを参考にしてください
参考サイト
おわりに
有料(¥100)にしてるけど、これで内容は全部です。募金してくれる人がいれば、ジュース代としていただけると嬉しい。コードは、インデントくずれが起きたりするようなので、コピペ時には注意してください。
マガジン
コメント用
干し芋
ここから先は
0字
¥ 100
サポート頂けると励みになります BTC,BCH: 39kcicufyycWVf8gcGxgsFn2B8Nd7reNUA LTC: LUFGHgdx1qqashDw4WxDcSYQPzd9w9f3iL MONA: MJXExiB7T7FFXKYf9SLqykrtGYDFn3gnaM