※ ChatGPTを利用し、要約された質問です(原文:TwitterAPIで公式RTした結果を取得したい)
TwitterAPIで公式RTした結果を取得する方法
このQ&Aのポイント
TwitterAPIを使用して、公式RTした結果を取得する方法をご紹介します。
Google Apps Scriptを使って、特定の単語を検索して自動で公式RTするbotを作成しましたが、RT後の結果を取得する方法についてお困りです。
また、リツイート済みのものをリツイートしようとするとエラーが発生する問題にも対処方法をご教示ください。
TwitterAPIで公式RTした結果を取得したい
プログラミングは全くの素人です。
ネット上と「スラスラわかるPHP」という初心者向けの本を参照して、特定の単語を検索して自動で公式RTするbotを作成しています。
動作は問題ないのですが、RT後の結果を取得したいのです。
foreach ($jset['statuses'] as $result) {
$id = $result['id'];
try{
echo $twObj->OAuthRequest(
'https://api.twitter.com/1.1/statuses/retweet/'.$id.'.json',
'POST',
''
);
} catch (TwistException $e) {
echo '<BR>エラー';
}
}
このプログラムを
Google Apps Scriptを使って
function getURL() {
var apiURL = "http://xxxxxxxxxxxx/bot.php";
var r = UrlFetchApp.fetch(apiURL);
if (r.getResponseCode() == 200) {
var body = r.getContentText();
Logger.log(body);
}
という記述で10分間隔で叩いて動かしています。
最初は叩くごとに結果をGASでメール送信させていたのですが、「回数が多すぎる」とエラーになってしまいました。
こちらとしても、わざわざメールが大量に送られてしまうので毎回メールが来るのはパスしたいです。
RT後に
{"created_at":"Mon Oct 13 14:21:50 +0000 2014","id":0000000000000,"id_str":"0000000000000",~}
と返ってくる値のうち、IDや日時、text、ユーザー名、を抜き出して、textファイルかMySQLに保存したいのです。
どうしたらいいでしょうか?
また、リツイート済みのものをリツイートしようとすると
{"errors":"sharing is not permissible for this status (Share validations failed)"}
と返ってきます。TwistExceptionで拾えていないようなのです。
こちらの対処法だけでも、お願いします<(_ _)>
お礼
あ、お礼はこちらに書くんですね。 すいません、補足の方に書いてしまいました。 質問をするのも初心者なので…… 再度になりますが、回答くださりありがとうございます。 とても丁寧にお返事いただけて感謝しております。 しかし、オブジェクト指向のTwistOAuthに書き換えるのは、難易度が急上昇で、初心者の私にはちょっとしんどいです…… わざわざコードまで書いてくださったのに、本当にすいません。 今の状態だと、RTされれば動いてるのがわかるのですが、されてないときに不具合が出ているのか、単に何も検索されなかっただけなのかわからないので、ログを出したかったのですが… 素人には難しいです(-_-;) 御親切に教えてくださってありがとうございました<(_ _)>
補足
返答ありがとうございます。 TwistException というのは、TwistOAuthの独自仕様なんですね。 お察しの通り、twitteroauthを使っています。 ログが出ない以外は特に問題なく動いているので、今からTwistOAuthを勉強して全部書き換えるのはちょっとツラいです…… 例外処理は外すことにします。 わざわざコードを書いてくださったのに、すいません(>_<)