Home > PHP > Services_Mixiを利用して日記等を投稿してみる

Services_Mixiを利用して日記等を投稿してみる

  • 2006-07-14 (金) 14:16
  • PHP

Services_Mixi (アレゲ2.0)

PHPからmixiをゴニョゴニョできるPEAR。

足あととマイミク最新日記の取得を実装してみました
超適当な配列で取得できるので後は煮るなり焼くなりしてください

とあったので煮るなり焼くなりして、日記の投稿(記事と画像1枚添付)とプロフィール写真の投稿(既存のプロフィール写真を1枚消去して1枚アップ)ができる様に継承(?)したクラスを作ってみた。

使い方
まずは「Services_Mixi」をPEARにてインストールした後、require_onceなりで当クラスを記載したファイルを読み込んでから


$mixi =& new Services_Mixi_ext('ここにメアド', 'パスワード');
//プロフィール写真の投稿
$pict = $mixi->setEditPhoto("test.jpg");
//日記の投稿
$diary = $mixi->setEditDiary("ここにタイトル","ここに本文","ここにアップしたい画像(jpg)のファイル名");

って感じです。
エラーだなんだとか全然考慮にいれてないので、誰かしっかりしたものを作ってくれるとうれしい。
元々は「mixiのプロフィール画像をwebカメラっぽく改造してみてー!!」という下らない欲望から出発しているものなので、ローカル(XAMPPとか)での実行しか考慮にいれていません。
まあ、こんな危なっかしいものを公開しているサーバに置くような人もいるとは思いませんが。

ソースは以下のとおりです。

* @license http://www.php.net/license/3_0.txt PHP License 3.0
* @version CVS: $Id:$
*/
class Services_Mixi_ext extends Services_Mixi
{
function Services_Mixi_ext($email, $password)
{
$this->Services_Mixi($email, $password);
}
/**
* send request
*
* @access private
* @param string path
* @param array params
* @param string method
* @return HTTP_Request|PEAR_Error
*/
function _sendRequest($path, $params = array(), $method = HTTP_REQUEST_METHOD_GET)
{
$url = sprintf('%s/%s', $this->_url, $path);
if (!empty($params) && $method == HTTP_REQUEST_METHOD_GET) {
foreach ($params as $key => $value) {
$query[] = $key . ‘=’ . urlencode($value);
}
$query = implode(’&’, $query);
}

$request =& new HTTP_Request($query ? sprintf(’%s?%s’, $url, $query) : $url);
$request->setMethod($method);
$request->addHeader(’User-Agent’, ‘PEAR::Services_Mixi’);
$request->addHeader(”Content-Type”,”multipart/form-data”);

if (!empty($this->_cookies)) {
foreach ($this->_cookies as $cookie) {
$request->addCookie($cookie['name'], $cookie['value']);
}
}

if ($method == HTTP_REQUEST_METHOD_POST) {
foreach ($params as $key => $value) {
$request->addPostData($key, $value);
if($key == ‘photo1′){
$request->addFile( $key, $value, ‘image/jpg’);
}
if($key == ‘photo’){
$request->addFile( $key, $value, ‘image/jpg’);
}
}
}

$request->sendRequest();

if ($request->getResponseCode() !== 200) {
return PEAR::raiseError(’Invalid Response Code’, $request->getResponseCode());
}

return $request;
}

/**
* set edit Diary
*
* @access public
* @return array
*/
function setEditDiary($title,$body,$photo)
{

$title = mb_convert_encoding($title,”EUC-JP”,”auto”);
$body = mb_convert_encoding($body,”EUC-JP”,”auto”);

//まずはidを取得しますよ
$request = $this->_sendRequest(’list_diary.pl’);

if (PEAR::isError($request)) {
return $request;
}

$array = $this->_parse($request->getResponseBody());
$id = $array[399]['attr']['value'];

//投稿しまっす
$params = array(
‘id’ => $id,
’submit’ => ‘main’,
‘diary_title’ => $title,
‘diary_body’ => $body,
‘photo1′ => $photo
);
$request = $this->_sendRequest(’add_diary.pl’, $params, HTTP_REQUEST_METHOD_POST);

if (PEAR::isError($request)) {
return $request;
}
$array = $this->_parse($request->getResponseBody());

//投稿しまっす(確認中ー
for ($i = 0; $i $id,
’submit’ => ‘confirm’,
‘post_key’ => $post_key,
‘packed’ => $packed,
‘diary_title’ => $title,
‘diary_body’ => $body,
);

$request = $this->_sendRequest(’add_diary.pl’, $params, HTTP_REQUEST_METHOD_POST);

if (PEAR::isError($request)) {
return $request;
}

$array = $this->_parse($request->getResponseBody());

return $array;
}

/**
* set edit Photo
*
* @access public
* @return array
*/
function setEditPhoto($photo)
{

//まずは消去する写真を取得します(1枚のみ消去)
$request = $this->_sendRequest(’edit_photo.pl’);
if (PEAR::isError($request)) {
return $request;
}

$array = $this->_parse($request->getResponseBody());

for ($i = 0; $i _sendRequest($del_photo_url);
break;
}
}

//投稿しまっす(確認中ー
$params = array(
‘photo’ => $photo
);

$request = $this->_sendRequest(’edit_photo.pl’, $params, HTTP_REQUEST_METHOD_POST);
return true;
}
}
?>

Comments:0

Comment Form
Remember personal info

Trackbacks:3

Trackback URL for this entry
http://www.planet-ape.net/archives/328/trackback
Listed below are links to weblogs that reference
Services_Mixiを利用して日記等を投稿してみる from planet-ape|blog
trackback from planet-ape|blog 06-07-16 (日) 13:53

mixiとMTの同期

ftp-recordings:returns? : MT2MIXI ver.1.1 http://www.ftp-recordings.net/archi...

trackback from planet-ape|blog 06-07-26 (水) 18:58

mixiとMTの同期その2~画像付きエントリーのアップ

以前にやったmixiとMTの同期では、最終的にMTのエントリー中の「リンクタグ」をURLのみに変換してmixiに投げる(mixiはURLを日記中に記述す…

pingback from mixiのページ内容をphpで取得 | メシウマ状態 飯の旨いおかずがてんこ盛り 08-11-01 (土) 19:51

[...] Services_Mixiを利用して日記等を投稿してみる [...]

Home > PHP > Services_Mixiを利用して日記等を投稿してみる

Search
Feeds
Meta

Return to page top