スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

twitterボットを作る 2.5 twitterのapiを利用して投稿してみる 解説

■解説



twitterボットを作る 2.twitterのapiを利用して投稿してみる
の内容を少し詳しく解説します。
前回作ったのは下記のコードでした。




<?php
require_once('twitteroauth.php');

//xxxxxxxxxxxxxxxxの部分に4つのキーを入力
$consumerKey = "xxxxxxxxxxxxxxxx";
$consumerSecret = "xxxxxxxxxxxxxxxx";
$accessToken = "xxxxxxxxxxxxxxxx";
$accessTokenSecret = "xxxxxxxxxxxxxxxx";
 
$twObj = new TwitterOAuth(
    $consumerKey,
    $consumerSecret,
    $accessToken,
    $accessTokenSecret
);

//1. twitterのつぶやきから指定の文字列を検索する
$key = "おはようございます"; //検索ワード
$options = array('q'=>$key,'count'=>'1','lang'=>'ja');//countの値を変えることで検索結果の取得数を決める。ここでは1としているので1つしか結果を返さない。
$url = 'https://api.twitter.com/1.1/search/tweets.json?exclude_replies=true';
$json = $twObj->OAuthRequest($url,'GET',$options);

//検索結果から情報を抜き出します
$jset = json_decode($json, true);
foreach ($jset['statuses'] as $result){
    $id = $result['id_str']; //*******************************下の方で使います
    $user_id = $result['user']['id_str'];//*******************************下の方で使います
    $name = $result['in_reply_to_screen_name'];
    $uri = "http://twitter.com/".$name;
    $link = $result['user']['profile_image_url'];
    $content = $result['text'];
    $updated = $result['created_at'];
}
print '<html><head><meta charset="utf-8">';//文字化け防止
print $content;

//2. 好きな文字列をつぶやく
$postMsg = "おはようございます"; //つぶやく内容
$url = "http://api.twitter.com/1.1/statuses/update.json";
$res = $twObj->OAuthRequest($url,"POST",array('status'=>"$postMsg"));

//3. 特定のアカウントをフォローする
$url = "https://api.twitter.com/1.1/friendships/create.json?user_id=" . $user_id ."&follow=true";
$res = $twObj->OAuthRequest($url,"POST",array());

//4. 特定のつぶやきをリツイートする
$url ="https://api.twitter.com/1.1/statuses/retweet/".$id.".json";
$res = $twObj->OAuthRequest($url,"POST",array());

//5. 特定のつぶやきをお気に入りする
$url = "https://api.twitter.com/1.1/favorites/create.json?id=" . $id;
$res = $twObj->OAuthRequest($url,"POST",array());

if ($res!= 200) {
    //Do something if the request was unsuccessful
    //echo 'There was an error posting the message.';
}
?>


1. コード全体の説明


このコードは下記のような流れで動作します。
①twitterで開発者登録して手に入れたキーをtwitter側に投げてAPIを利用できるようにしてもらう
②twitterのAPIを利用して「おはようございます」という文字列を含むつぶやきを検索する
③②の検索結果からつぶやき毎に付与されているIDとつぶやいた人のアカウントIDを取得する
④③を利用してつぶやきやアカウントを指定することでフォローやリツイートを行う

2. つぶやきのIDを利用


つぶやきには1つ1つIDがふられており、IDを指定することで特定のつぶやきを操作します。
まずはつぶやきのIDをどうやって調べるか?ということになりますが、このコードではつぶやきをフリーワードで検索してその結果ヒットしたつぶやきのIDを取得して利用しています。
他にもいろいろ方法は考えられると思いますが、検索するのが一番基本的な方法かと思います。

3. アカウントのIDを利用


twitterのアカウントを特定するためにはアカウントのIDを利用します。つぶやき同様、どうやってそのIDを調べるのかということですが、このコードではつぶやきの検索結果からそのつぶやきをしたひとのアカウントIDを取得しています。これができると、特定のワードを含んだツイートをしたひとをフォローする、といった処理を行うことが可能になります。

4. このコードには無いことをするには?


このコードに含まれている内容で目的が達成されない場合があると思います。
その場合、どこから情報を持ってくるのかというとtwitterが公式にAPIの使い方情報を提供しています。

https://dev.twitter.com/docs/api/1.1

これをみれば分かる人にはわかると思いますが、僕は初見では手順はわかるけど具体的な方法がわからない、という状況でした。すなわち、自分の環境で実現するには何言語でどうやってかけばいいのか?ということです。それは裏を返せば条件(開発環境)を絞ってしまえばあとはドキュメントのとおりに組めばいいということです。
今回のコードを見たあとにtwitterのドキュメントを見れば何となく想像がつくかなと思っています。





さて、次回はスケジュールを組もうと思います。
今回のコードだけでもページをウェブブラウザで呼び出せば実行できますが
自動で動いてくれなければ恩恵が半減してしまいます。
毎日何時にこのボットがつぶやく、といったスケジュールを組むことでいよいよボットが完成します。

コメント

コメントの投稿

非公開コメント

PR

PR

プロフィール

何でも書くman

Author:何でも書くman
思ったことや備忘録など、とりあえずなんでも書きます。IT系のことや趣味、生活に関わることなども。

ページの先頭へ戻る
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。