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());
}

}

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

加藤 康祐 / 企画・設計

プランナー、デザイナー。加藤康祐企画設計代表。Webデザインを入り口に、2005年よりフリーランスとしてのキャリアスタート。主な仕事としてベンチャー企業でのサービスのUXデザイン、独法との防災メディアの運営、社会的養護の子どもたちの自立を支援するNPOのサポート。ラグビーと料理、最近イラスト。

加藤康祐企画設計

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

(2012-10-5)
売り上げランキング: 14,705
100円