도와주세요..(metaWeblog) 정보
도와주세요..(metaWeblog)본문
metaWeblog API 를 이용해서 네이버 블로그에 글을 업로드 하는 프로그램을 만들고 있습니다.
일반 글 같은경우 쉽게 되지만,
이미지가 같이 첨부됨에 따라 상당히 복잡해 지는군요..
네이버 같은경우 바로 img 링크를 걸어 올리면 업로드 되지 않기 때문에 (http://naver.com/logo.png 이런식으론 제외)
일반 게시글은 "metaWeblog.newPost" 로 이미지는 "metaWeblog.newMediaObject" 로 올려
값을 받아, img 태그에 삽입해야 하는데
newPost 같은 경우 엄청 잘 올라가지만, "newMediaObject" 같은 경우, 계속 막히네요..
마땅히 메뉴얼 도 없고,, 정보도 부족해서 미칠꺼 같습니다..
고수님들 도움부탁합니다.
-----------
<?
$cBlog = new blog;
$title = "This is a article's title";
$desc = "IT will be the content";
class blog
{
public $g_blog_url;
public $user_id;
public $blogid;
public $password;
public $publish;
function __construct()
{
$this->g_blog_url = "https://api.blog.naver.com/xmlrpc";
$this->user_id = "ID";
$this->blogid = "ID";
$this->password = "API Key";
$this->publish = true;
}
function alert($message)
{
echo $message;
}
function writePost($title, $description)
{
$client = new xmlrpc_client($this->g_blog_url);
$client->setSSLVerifyPeer(false);
$GLOBALS['xmlrpc_internalencoding']='UTF-8';
echo $title;
$img = $this->upload_image("이미지 주소");
$struct = array(
'title' => new xmlrpcval($title, "string"),
'description' => new xmlrpcval($description."<img src=$img>", "string"),
//'categories' => new xmlrpcval($category, "string"),
'tags' => new xmlrpcval('clothing', "string")
);
echo $struct;
$f = new xmlrpcmsg("metaWeblog.newPost",
array(
new xmlrpcval($this->blogid, "string"),
new xmlrpcval($this->user_id, "string"),
new xmlrpcval($this->password, "string"),
new xmlrpcval($struct , "struct"),
new xmlrpcval($this->publish, "boolean")
));
$f->request_charset_encoding = 'UTF-8';
return $response = $client->send($f);
print_r($return);
}
function upload_image($fpath) {
global $api_url, $blog_user, $blog_passwd;
$api_url = $this->g_blog_url;
$blog_user = $this->user_id;
$blog_passwd = $this->password;
$imgbit = file_get_contents($fpath, FILE_BINARY);
$img = new xmlrpcval(
array (
'bits' => new xmlrpcval($imgbit, 'base64'),
'type' => new xmlrpcval('image/jpeg', 'string'),
'name' => new xmlrpcval(basename($fpath), 'string')
), 'struct');
$c = new xmlrpc_client($api_url);
$c->setSSLVerifyPeer(false);
$x = new xmlrpcmsg("metaWeblog.newMediaObject");
$x->addParam(new xmlrpcval($blog_user, 'string'));
$x->addParam(new xmlrpcval($blog_user, 'string'));
$x->addParam(new xmlrpcval($blog_passwd, 'string'));
$x->addParam($img);
$c->return_type = 'phpvals';
$r =$c->send($x);
if ($r->errno=="0") {
return $r->val['url'];
} else {
echo "There was an error<pre>";
print_r($r);
echo "</pre>";
return null;
}
}
}
$return = $cBlog->writePost($title, $desc);
$re = $b->writePost($title,$desc);
print_r($re);
echo $re;
echo $cBlog->alert("aa");
?>
일반 글 같은경우 쉽게 되지만,
이미지가 같이 첨부됨에 따라 상당히 복잡해 지는군요..
네이버 같은경우 바로 img 링크를 걸어 올리면 업로드 되지 않기 때문에 (http://naver.com/logo.png 이런식으론 제외)
일반 게시글은 "metaWeblog.newPost" 로 이미지는 "metaWeblog.newMediaObject" 로 올려
값을 받아, img 태그에 삽입해야 하는데
newPost 같은 경우 엄청 잘 올라가지만, "newMediaObject" 같은 경우, 계속 막히네요..
마땅히 메뉴얼 도 없고,, 정보도 부족해서 미칠꺼 같습니다..
고수님들 도움부탁합니다.
-----------
<?
$cBlog = new blog;
$title = "This is a article's title";
$desc = "IT will be the content";
class blog
{
public $g_blog_url;
public $user_id;
public $blogid;
public $password;
public $publish;
function __construct()
{
$this->g_blog_url = "https://api.blog.naver.com/xmlrpc";
$this->user_id = "ID";
$this->blogid = "ID";
$this->password = "API Key";
$this->publish = true;
}
function alert($message)
{
echo $message;
}
function writePost($title, $description)
{
$client = new xmlrpc_client($this->g_blog_url);
$client->setSSLVerifyPeer(false);
$GLOBALS['xmlrpc_internalencoding']='UTF-8';
echo $title;
$img = $this->upload_image("이미지 주소");
$struct = array(
'title' => new xmlrpcval($title, "string"),
'description' => new xmlrpcval($description."<img src=$img>", "string"),
//'categories' => new xmlrpcval($category, "string"),
'tags' => new xmlrpcval('clothing', "string")
);
echo $struct;
$f = new xmlrpcmsg("metaWeblog.newPost",
array(
new xmlrpcval($this->blogid, "string"),
new xmlrpcval($this->user_id, "string"),
new xmlrpcval($this->password, "string"),
new xmlrpcval($struct , "struct"),
new xmlrpcval($this->publish, "boolean")
));
$f->request_charset_encoding = 'UTF-8';
return $response = $client->send($f);
print_r($return);
}
function upload_image($fpath) {
global $api_url, $blog_user, $blog_passwd;
$api_url = $this->g_blog_url;
$blog_user = $this->user_id;
$blog_passwd = $this->password;
$imgbit = file_get_contents($fpath, FILE_BINARY);
$img = new xmlrpcval(
array (
'bits' => new xmlrpcval($imgbit, 'base64'),
'type' => new xmlrpcval('image/jpeg', 'string'),
'name' => new xmlrpcval(basename($fpath), 'string')
), 'struct');
$c = new xmlrpc_client($api_url);
$c->setSSLVerifyPeer(false);
$x = new xmlrpcmsg("metaWeblog.newMediaObject");
$x->addParam(new xmlrpcval($blog_user, 'string'));
$x->addParam(new xmlrpcval($blog_user, 'string'));
$x->addParam(new xmlrpcval($blog_passwd, 'string'));
$x->addParam($img);
$c->return_type = 'phpvals';
$r =$c->send($x);
if ($r->errno=="0") {
return $r->val['url'];
} else {
echo "There was an error<pre>";
print_r($r);
echo "</pre>";
return null;
}
}
}
$return = $cBlog->writePost($title, $desc);
$re = $b->writePost($title,$desc);
print_r($re);
echo $re;
echo $cBlog->alert("aa");
?>
댓글 전체
자신의 사이트에 글작성시 네이버 블로그에 글이 자동으로 써지긴하는데
제목,내용,링크까지는 1초안에 올라가는데;
이미지경우 저도 ㅠㅠ 해결이....
제목,내용,링크까지는 1초안에 올라가는데;
이미지경우 저도 ㅠㅠ 해결이....
해결했어요 ㅎㅎㅎㅎㅎ