スポンサーサイト

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

診断メーカーの短縮URLを展開

EasyBotterでPEARの代わりに、twitteroauth.phpを使う

のコメントで書きましたが、見辛かったので記事にしておきます。


短縮URLは
$h = get_headers(短縮URL , 1);
$url = $h["Location"];
で展開できるので、

診断メーカーを行っている

switch( true ) の上に
//ツイートから短縮URLを検索 
if( preg_match("/http:\/\/(.*)/" , $text , $match) ) 
{ 
  //短縮URLを抽出 
  $shorturl = $match[0]; 

  //短縮URLの展開 
  $header = @get_headers($shorturl , 1); 

  //展開したURLを格納 
  $url = $header["Location"]; 

  //診断メーカーのURLを検索 
  if( preg_match("/http:\/\/shindanmaker.com\//" , $url ) ) 
  { 
    $status = $status."[[TL]]";	 //[[TL]]をつける 
  } 
} 
 

を追加すれば、展開したURLが得られるので

診断メーカー内の

$id = preg_match("/shindanmaker.com\/(.*)\s/" , $text , $post_date); 
 




$id = preg_match("/shindanmaker.com\/(.*)\s/" , $url , $post_date); 
 


に変更すれば、IDが抽出できると思います。


タイムラインリプライの、

"http://shindanmaker.com/"=> array( 
"[[TL]]", 
), 
 


は不要になります。
スポンサーサイト

file_get_contentsでTwitter診断メーカー

前回エントリのTwitter診断メーカーをBotにやらせるサンプル
PEARのHTTP_REQUESTを使った方法なので
今回は file_get_contents を使ったTwitter診断メーカーです。
前回の記事を完コピ


EasyBotter内の makeReplyTimelineTweets
$re["status"] = "@".$reply_name." ".$status;  を 下記に上書きすれば大丈夫なはずです。

		switch(true)
		{
			//診断TL発言
			case stristr($status, "[[TL]]"):
				
				//5より上の値で診断を行わない
				$Disregard = mt_rand(1 , 10); //1~10の乱数を発生
				
				if( $Disregard > 5 )
				{
					continue 2;
				}
				
				
				$status = str_replace("[[TL]]" , "" , $status);
				
				//-----------診断メーカーをやる----------//
				$botTwitterId = $this->_screen_name;
				
				$id = preg_match("/shindanmaker.com\/(.*)\s/" , (string)$tweet->text , $post_date);
				
             //送信するデータ
				//"name属性名" => "送信データ"
				$data = array(
				    "u" => "".$botTwitterId."",
				);
				
				//送信データをURLエンコードする
				$data = http_build_query($data);
				
				//ヘッダーの作成
				$header = array(
				    "Content-Type: application/x-www-form-urlencoded",
				);
				
				
				$context = array(
				    "http" => array(
				        "method"  => "POST",
				        "header"  => implode("\r\n", $header),
				        "content" => $data
				    )
				);
				
				$url = "http://shindanmaker.com/".$id."";
				
				$data = preg_match("/status=+(.*)target/" , file_get_contents( $url, false, stream_context_create( $context ) ) , $post_data);
				
				$status = $post_data[1];
				$status = urldecode($status);	//読める文字にする
				$status = str_replace("\"" , "" , $status);		//二重引用符の削除
				
				if( stristr($status , "ツイッター診断メーカー") )	//誤爆した時に発言しない
				{
					//echo "診断メーカー失敗


"; unset($req); continue 2; } $re["status"] = $status; $rpid = (string)$tweet->id; //in_reply_status_idを出力する file_put_contents($this->_logDataFile,$rpid); unset($req); break; //その他 default: $re["status"] = "@".$reply_name." ".$status; }


また、タイムライン返信用のリプライパターンファイルには

    "http://shindanmaker.com/"=> array(
        "[[TL]]",
    ),
を追加

今回の参考
EasyBotter非公式Wiki

file_get_contentsでPOSTできる

file_get_contentsでPOSTデータ送信

プロフィール

ルージュ

Author:ルージュ
TwiitterBotに一味足して好感度とか
色々な機能を、不適切に解説&配布

ファイルパスワードは orz

最新記事
カテゴリ
月別アーカイブ
リンク
最新コメント
FC2カウンター
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。