ラベル twitter の投稿を表示しています。 すべての投稿を表示
ラベル twitter の投稿を表示しています。 すべての投稿を表示

2012年7月12日木曜日

アメブロに個別のツイートを埋め込む方法

アメブロで書けよという感もあるのですが個人ではアメブロ使っていないので。


Twitterでは、個々のツイートをwebページなどに埋め込むことができます。

Twitterの貼りつけたいツイートで「開く」をクリックし、

詳細をクリックしたのちに、

「このツイートをサイトに埋め込む」をクリックすると、

上のように、埋め込み用のコードが表示されるので、これを貼り付けることで、以下のようにツイートを埋め込むことができます。


しかし、アメブロの記事本文にこれを貼りつけて投稿すると下のようなエラーメッセージが出ます。
これは、アメブロが記事本文で、学部からのjavascriptの呼び出しを禁止しているためです。
具体的には、ツイート埋め込み用コードの、以下の部分が該当します。
<script src="//platform.twitter.com/widgets.js" charset="utf-8"></script>
ということで、ちょっと困ってしまうのですが、実はアメブロにもjavascriptを記述したり呼び出せる場所があります。それは、「フリープラグイン」です。

ブログ編集画面の左にあるメニューから、「サイドバー」をクリックします。

そのなかの「プラグインの追加」を選ぶと、以下のような画面になるので、

「フリープラグイン」タグを選択します。

ここに先ほどのコード
<script src="//platform.twitter.com/widgets.js" charset="utf-8"></script>

を貼り付けます。あとは、保存して、次の画面の指示に従って、「フリープラグイン」をサイドバーに配置します。
こののち、記事本文に、ツイート埋め込み用コードから、先程のjavascriptを呼び出すコードを除いた部分(<blockquote class="twitter-tweet" lang="ja">と</blockquote>で囲まれた部分)を貼りつけると、アメブロでもこちらのように綺麗にツイートを埋め込むことができます。


2012年6月30日土曜日

PHPでTwitter botつくるよー|3.フォローバック、特定ユーザーのツイート取得

PHPでTwitterのbotをつくろう3回目。
目的と下準備、Oauth認証までの1回目
特定のキーワドで検索、結果をRT、発言者をフォローした2回目
の続きです。
今回は、特定のユーザーの最新のツイートを取得してRTする部分。
1回目の方法でOauth認証が終わっている前提です。
相変わらずoverflowが折り返されて見難い事この上ないですが。
まずフォローバック機能


/******************************************************
follow back
*******************************************************/

//followしてくれたひとにはfollow返す。
//まずfollower取得(5000まで)
$followers=json_decode(file_get_contents('https://api.twitter.com/1/followers/ids.json?cursor=-1&screen_name=MyScreenName'),true);>
//followしているひと取得(5000まで) $followings=json_decode(file_get_contents('https://api.twitter.com/1/friends/ids.json?cursor=-1&screen_name=MyScreenName'),ture);

//followerだけどfollowしていないひと(5000ずつの中で)
$diff=array_diff($followers['ids'],$followings['ids']);
//フォローバックする
$res = $objOauth->OAuthRequest('http://api.twitter.com/1/friendships/create.json','POST',array('user_id' => $id, 'follow' => 'true'));



自分(@MyScreenName)がfollowしているひとと自分のfollowerは一度に5000までしか引っ張てこれないのですが、そんな大規模なもの作る気はないのでそのなかでマッチングしてしまっています。
ちゃんとやるなら全部取得してマッチングしたほうが良いかも。
つぎは特定のユーザーの最新のツイートの取得とRTする部分

/******************************************************
TargetUserNameのツイートをひとつリツイート
*******************************************************/
//まず、TargetUserNameの最新のツイート1つを取得。countの値で取得数設定できます。
$last_tweet=json_decode(file_get_contents('https://api.twitter.com/1/statuses/user_timeline.json?&screen_name=TargetUserName&count=1'),true);

//取得したツイートをRT
$res = $objOauth->OAuthRequest('https://api.twitter.com/1/statuses/retweet/'.$last_tweet[0]['id_str'].'.json','POST',array());


こんなところです。らくちんらくちん。
あとは平打のユーザ名などを変数にして関数化して、
cronの設定すればbotちゃん完成です。
cronの環境がない!というかたには、
風柳さんのGAE-Cronをこちらに設置していますのでよかったらどうぞ。
いつのまにかcssとんで醜いですが動きますので。

追記
リストからランダムでツイートする機能について書くのを失念していました。
また、グーグルブログ検索の結果のタイトルとURLをツイートする機能も追加したので、また別の機会にかけたら併せて書こうとおもいます。

2012年6月29日金曜日

PHPでTwitter botつくるよー|2.検索、RT、フォロー

TwitterのbotをPHPで作るよということで、今更感満載ですが。
目的などについては、PHPでTwitter botつくるよー|1.Oauth認証までを御覧ください。
また、以下は、前回の記事の方法でOauth認証を済ませた状態で動くものです。

ではさっそく、必要機能の1つ目、
・あるキーワードを含むツイートを、RTする。また、その発言者をフォローする。
を実装します。
このあたりはTwitter DevelopersにあるREST API Resourcesを参照しながらサクサク作成していきます。コードが折り返されてしまうのがどうにも直らなくって醜いかもしれませんがご容赦ください。

/******************************************************
キーワード で検索してリツイート&follow
*******************************************************/
//「キーワード」による検索結果を取得(urlエンコードしたきーわーどをq=以下に)
$seach_result=file_get_contents('http://search.twitter.com/search.json?q=%E3%82%AD%E3%83%BC%E3%83%AF%E3%83%BC%E3%83%89');
//jsonをデコードしてオブジェクトを取得
$data = json_decode($seach_result);

// retweet & follow
/ 検索で得られたツイートひとつひとつに対して
foreach ( $data->results as $key ) {
//自分のTweetかどうかの判断
if($key->from_user !=="MyUserName"){
     //違う場合はリツイートリクエスト
$res = $objOauth->OAuthRequest('https://api.twitter.com/1/statuses/retweet/'.$key->id_str.'.json','POST',array());
//followしていないかどうか判断 screen_name_aがscreen_name_bをフォローしていればtrue
if(file_get_contents('https://api.twitter.com/1/friendships/exists.json?screen_name_a=MyUserName&screen_name_b='.$key->from_user)==="false"){
  //followしていない場合はfollowする
$res = $objOauth->OAuthRequest('http://api.twitter.com/1/friendships/create.json','POST',array('screen_name' => $key->from_user, 'follow' => 'true'));
}
          //あまり間隔開けずに連投RTするのも迷惑なので、適当に処理停止
sleep(rand(29,158));
}
}

取得した検索結果についてよくご存知でない方は、$dataをダンプして中身確認してみると良いとおもいます。ここで使っているのはfrom_user 発言者とid_str ツイートid(文字列)のみです。今回はここまで。

追記
Twitterのいろいろな自動化についてはTwitterの規約に触れる場合があります。確認の上、ご自身の責任で行いましょう。

PHPでTwitter botつくるよー|1.Oauth認証まで

仕事と趣味の狭間みたいなところで必要になったのでPHPでTwitter bot作ります。

つくる機能は以下のとおり。
・あるキーワードを含むツイートを、RTする。また、その発言者をフォローする。
・フォローしてくれたユーザーをフォローバックする。
・リストからランダムに内容を選んでツイートする。
・特定のユーザーの最新の発言をRTする。

巷には、コードいじらなくてもbot作ってくれるサービスもあるようですけど、ある程度いじれるほうがカスタマイズ効いて良いかなと思ったのでPHPでつくることにしました。
素晴らしいライブラリが沢山ありますし、そんなに手間はかからないはずです。

まず準備段階としてTwitter Developersで紹介されているphp向けのライブラリを導入
https://dev.twitter.com/docs/twitter-libraries#php

今回はAbraham Williamsによるtwitteroauthを使わせてもらいます。zipファイルをダウンロードして解凍後、twitteroauthフォルダごとphpファイルおく場所にコピーしておきます。

次に、Twitterの開発者サイトでアプリケーションを登録をします。
https://dev.twitter.com/
以下、たん英語版のページで進めていますのであしからず。


「Create an app」のリンクをクリックし、
Name、Description、Websiteを記入します。
Name、Descriptionは適当に、Websiteも適当で大丈夫です。
後ほど変更もできますので心配せずサクサク埋めていきます。
Callback URLは必要ありませんので空欄で大丈夫です。

規約に同意し、Captchaを入力してアプリケーション作成のボタンをクリックします。

Settingのタブをクリックし、Application Typeを「Read, Write and Access direct messages」に変更しておきましょう。
次にDetailタブの一番下の「Create My Access Token」をクリックし、Access Tokenを作成します。
これで準備は完了です。

まずはOauthの設定ファイルを作成


define.php
<?php
$conf = array(
'username'=>'UserName', //Twitter User Name
'consKey'=>'ConsumerKey', //Consumer Key
'consSecret'=>'ConsumerSecret', //Consumer Secret
'acsToken'=>'MyAccessToken',//My Access Token
'acsTokenSecret'=>'MyAccessTokenSecret',//My Access Token Secret
);
?>


そして、Oauth認証します。


<?php
//tweetoauthライブラリ読み込み
require_once('twitteroauth/twitteroauth.php');

// 環境設定情報読み込み
require_once('define.php');

/******************************************************
 Oauth認証
*******************************************************/
try {

$objOauth = new TwitterOAuth($conf['consKey'],$conf['consSecret'],$conf['acsToken'],$conf['acsTokenSecret']);

} catch (Services_Twitter_Exception $e) {

echo $e->getMessage();

}

これだけです。簡単ですねぇ。Abrahamさまさまです。
コードを貼ると長くなるので、2につづきます