2011/1/18

PEAR XML_RPCでWordPressへのTwitterの自動投稿を作ってみた

最近毎日何か作らないと気が済まなくなっている感のある加藤です。都内某所で早朝ボランティアしてきたので意識が朦朧としながらも作りました。

kosuk.hourly

読んで字のごとく、1時間おきにとりあえずTwitterポストを更新します。WordPressに自動投稿するのにPEARのXML_RPCというのを使ってます。PEARがちゃんとサーバで動かないもんだから、インストールからやり直して結構大変でした。

require_once('XML/RPC.php');
require_once('twitteroauth/twitteroauth.php');

// WordPressへの接続

$host = 'ホスト名';
$xmlrpc_path = 'XMLRPCへのパス';
$appkey = '';
$user = 'ユーザ名';
$passwd ='パスワード';

$c = new XML_RPC_client($xmlrpc_path, $host, 80);

$appkey = new XML_RPC_Value($appkey, 'string');
$username = new XML_RPC_Value( $user, 'string' );
$passwd = new XML_RPC_Value( $passwd, 'string' );

$message = new XML_RPC_Message(
'blogger.getUsersBlogs',array($appkey, $username, $passwd)
);

$result = $c->send($message);

if(!$result){
exit('Could not connect to the server.');
} else if( $result->faultCode() ){
exit($result->faultString());
}

$blogs = XML_RPC_decode($result->value());

$blog_id = new XML_RPC_Value($blogs[0]['blogid'], 'string');


// Twitter

$user = '';
$consumer_key = 'Consumer Key';
$consumer_secret = 'Consumer Secret';
$access_token = 'Access Token';
$access_token_secret = 'Access Token Secret';

$to = new TwitterOAuth($consumer_key,$consumer_secret,$access_token,$access_token_secret);

$number = fopen('twitter_since.txt', 'r');
$currentnumber = fgets($number);
fclose($number);
$since_id = "since_id=".$currentnumber;
$result = $to->OAuthRequest('http://api.twitter.com/statuses/user_timeline.xml?'.$since_id,'GET',array('count'=>'30'));
$xml = simplexml_load_string($result);
$cnt = 0;
foreach( $xml->status as $value ){
	if ($cnt < 1) {
		$status_number = $value->id;
	}
	$text = $value->text;
	if (empty($post)) {
		$post = '<li>'.$text.'</li>';
	} else {
		$post .= '<li>'.$text.'</li>';
	}
	$cnt++;
}

if(!empty($status_number)){
$number = fopen('twitter_since.txt', 'w');
$status = fwrite($number, $status_number);
fclose($number);
}

// WordPressへの投稿

if(!empty($post)) {
$title = date('Y-m-d H:i');
$categories = array(
new XML_RPC_Value('Twitter', 'string'),
);
$post = '<ul>'.preg_replace('/(https?|ftp)(://[-_.!~*'()a-zA-Z0-9;/?:@&=+$,%#]+)/', '<a href="\1\2">\1\2</a>', $post).'</ul>';
$description = $post;
$content = new XML_RPC_Value(
array(
'title' => new XML_RPC_Value($title, 'string'),
'categories' => new XML_RPC_Value($categories, 'array'),
'description' => new XML_RPC_Value($description, 'string'),
'wp_slug' => new XML_RPC_Value(date('Y-m-d H:i:s')),
'dateCreated' => new XML_RPC_Value(time(), 'dateTime.iso8601')
),
'struct');

$publish = new XML_RPC_Value(1, 'boolean');

$message = new XML_RPC_Message(
'metaWeblog.newPost',
array($blog_id, $username, $passwd, $content, $publish)
);

$result = $c->send($message);

if(!$result){
	echo 'test2';
exit('Could not connect to the server.');
} else if( $result->faultCode() ){
exit($result->faultString());
}

}

デザインはそのうちやります。

ひとり仕事: フリーランスという働き方
(2012-10-5)
売り上げランキング: 14,705
100円
WordPressデザインレシピ集
狩野 祐東
技術評論社
売り上げランキング: 197,569
WordPress 高速化&スマート運用必携ガイド
こもりまさあき 岡本渉
エムディエヌコーポレーション
売り上げランキング: 435,263

加藤 康祐 / 企画・設計

1980年1月12日生まれ。フリーランス歴15年。プランナー、デザイナー。加藤康祐企画設計代表。学生時代にデザイン会社でWebデザインを経験。2005年よりフリーランスとしてキャリアスタート。これまでに個人から上場企業まで、100以上のクライアントとのプロジェクトを経験。主な仕事としてベンチャー企業でのサービスのUXデザイン、独法との防災メディアの編集・運営、社会的養護の子どもたちの自立を支援するNPOのサポート等。趣味はラグビーと料理。Keep the head up, Bind tight & Stay low.

加藤康祐企画設計

是非、フォローしてください!
Twitter / Instagram