XML-RPCを使いFC2ブログへ画像を投稿する
前回はPHPを使いFC2ブログへ記事投稿するスクリプトを記事にしました。
今回は画像ファイルを投稿するスクリプトをメモ。
http://soudan.hatenablog.jp/entry/fc2-xmlrpcsoudan.hatenablog.jp
画像添付はできますが、アイキャッチ画像への登録は現時点では解決していません。。。
今回もサンプルPHPスクリプトを掲載しています。
<オンラインブートキャンプ>
無料体験と割引キャンペーン実施中
WordPressコース
Webアプリケーションコース
「実用的なスキルを身につけたい」「自分のWebサービスを作れる」そんな思いをお助けします。
FC2ブログへ画像をアップロードするサンプルコード
FC2ブログへの記事投稿を元にしたソースコードです。
諸設定は前回の記事を参考にしてください。
private function __post_img_fc2($post_img_path) { //画像を取得する $bits = file_get_contents($post_img_path); //画像ファイル名 $name = basename($post_img_path); //画像情報を作成 $imgfile = new XML_RPC_Value( array( 'bits' => new XML_RPC_Value($bits , 'base64'), 'name' => new XML_RPC_Value($name , 'string'), ), 'struct' ); try { $GLOBALS['XML_RPC_defencoding'] = "UTF-8"; //XML_RPCクライアント $client = new XML_RPC_client(self::FC2_RPC, self::FC2_BLOG_URL, self::FC2_PORT); //ブログID $blogid = new XML_RPC_Value(self::FC2_BLOG_ID, 'string'); //アカウント $username = new XML_RPC_Value(self::FC2_BLOG_USER, 'string'); //パスワード $passwd = new XML_RPC_Value(self::FC2_BLOG_PASS, 'string'); //公開設定 $publish = new XML_RPC_Value(true, 'boolean'); //XML-RPCメソッドのセット $post_data = new XML_RPC_Message( 'metaWeblog.newMediaObject', array( $blogid, $username, $passwd, $imgfile, ) ); //送信 $result = $client->send($post_data); if( !$result ){ echo __FUNCTION__ . " error\n"; echo "'Could not connect to the server.<br>\n"; return false; }else if( $result->faultCode() ){ echo __FUNCTION__ . " error\n"; echo "XML-RPC fault <br>\n(".$result->faultCode()."): ".$result->faultString(); return false; } XML_RPC_decode( $result->value() ); //debug( $result->xv->me['struct']['thumbnail_url']->me['string']); return $result->xv->me['struct']['thumbnail_url']->me['string']; } catch (Exception $ex) { throw new Exception($ex->getMessage()); } }
$post_img_pathは自分のサーバー内の画像パスです。
FC2ブログはbase64などの変換は不要みたいです。
送信後の戻りには、FC2ブログの画像パスが返ってきます。
thumbnail_urlを取得したければ、下記のようにすると取得することができます。
$result->xv->me['struct']['thumbnail_url']->me['string']