Skip to content

Instantly share code, notes, and snippets.

@tajuszk
Created January 30, 2023 10:21
Show Gist options
  • Save tajuszk/e107c6640b76d969cda5d51c9e82ebfa to your computer and use it in GitHub Desktop.
Save tajuszk/e107c6640b76d969cda5d51c9e82ebfa to your computer and use it in GitHub Desktop.
'use strict';
const consumerKey = 'XXXXXXXXXX'
const consumerSecret = 'XXXXXXXXXXXXX'
const client = TwitterClient.getInstance(consumerKey, consumerSecret)
function main () {
const accountNames = ['XXXXXXX'];
for (let i in accountNames) {
const accountName = accountNames[i];
// 最新のツイートのツイートIDを取得する(バージョン26以降)
const params = {
includeRT: false, // RTを含むか(他のユーザーのツイートのRTも再度RTします)
includeReply: false, // リプライを含むか
includeURL: false, // URLを含むか
ignoreWords: [],
count: 5, // 直近何件のツイートをRTするか
}
const tweetIds = client.pickupTweetsLatest(accountName, params);
// チェックコード
const tweetShowUrl = 'https://api.twitter.com/1.1/statuses/show.json';
const testParams = [];
for (let i = tweetIds.length - 1; i >= 0; i--) {
const tweetShowParam = {
id: tweetIds[i],
tweet_mode: 'extended' // URLが省略されていることがあるので
}
const tweetShowResult = client.getRequest(tweetShowUrl, tweetShowParam);
const urls = tweetShowResult.entities.urls;
const mediaArray = tweetShowResult.entities.media;
let hasVideo = false;
for (let i in mediaArray) {
const media = mediaArray[i];
// 添付mediaの中で動画の場合のみhasVideoをtrueにする
if (media.expanded_url.match(/video/)) {
hasVideo = true;
break;
}
}
testParams.push({
url: 'https://twitter.com/' + accountName + '/status/' + tweetShowResult.id_str,
text: tweetShowResult.full_text,
link: urls.length > 0 ? 'リンクあり' : 'リンクなし',
media: hasVideo ? '動画あり' : '動画なし',
});
if (!hasVideo) {
console.warn('===リツイート対象から外します===');
console.log(tweetShowResult.full_text);
console.log(tweetShowResult.entities.urls);
console.warn('======');
tweetIds.splice(i, 1)
}
}
console.warn('今回のリツイート対象はこちら↓');
console.log(testParams); // ここにツイートが含まれるか確認してみる
console.warn('ツイート対象のID');
console.log(tweetIds);
client.retweet(tweetIds)
}
}
/**
* ①Twitterで作ったアプリに登録するための callbackUrl を取得する
* 実行後 『表示』→『ログ』でURLを確認してTwitterアプリに登録
*/
function getCallbackUrl() {
Logger.log('以下のURLをTwitterアプリのCallbackURLに登録');
Logger.log(client.getCallbackUrl());
}
/**
* ②認証を実行する
* 実行後『表示』→『ログ』で表示されたURLに移動
*/
function authorize () {
client.authorize()
}
/**
* 認証を削除したい時はこれを実行する
*/
function reset () {
client.reset()
}
/**
* authorizeでTwitterでの認証後に実行される処理
* ※手動で実行はしません
*/
function authCallback (request) {
return client.authCallback(request)
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment