mindia的技術文書の履歴
概要
mindiaに関する非公式な技術文書。
自分まとめ+誰かのために。
基本PHPです。
WordpressプラグインpublishToMindiaをリリースしたら、その時の開発を参考にmindiaをちょめちょめする情報を書いて行く予定。
色々やりながらの平行作業なので気長に御待ち下さい。
基本情報
mindiaに関する基本情報、URL、パラメータ、各所の情報。
URL
各URLの役割や意味、機能(ユーザ名は任意)。
例:http://mindia.jp/book/kowloon
(1)トップページ
http://mindia.jp/book/ユーザ名
ユーザのトップページ(プロフィール、ブックの説明など)が表示される。
(2)キーワード
http://mindia.jp/book/ユーザ名/keywords/num/数字
ユーザのキーワード一覧を表示。
数字部分は1〜60で指定可能、デフォルト値は40。
0を指定すると全一覧表示される(バグ?)。
http://mindia.jp/book/ユーザ名/keyword_edit/キーワード名
キーワード作成の編集画面を表示。
キーワード名は任意に変更可能(例キーワード名をtestにすればtestの編集画面になる)。
http://mindia.jp/book/ユーザ名/keyword_new
キーワード作成。
POSTデータとして下記のパラメータを付与。
__token :トークン(ソースにhideとして表記されている)
title :キーワード名
version :'0'を指定
body :本文
tags :タグ(¥r¥nを区切り文字として利用(未確認))
picture_1 :画像データ
picture_2 :画像データ
picture_3 :画像データ
quick_save:'更新'を指定
(3)日記
http://mindia.jp/book/ユーザ名/entries/display/show
ユーザの日記一覧を表示
(4)設定
http://mindia.jp/book/ユーザ名/pref
ユーザの設定(自信のユーザ名やパスワードを変更等々)
パラメータ
PHP
PHPで色々やってみる場合。
下記コードの戻り値やなんかをecho or print_rとかで動作をきちんと確認していくと理解が速いかもしれません。
ログイン
<?php /* ログイン__token取得 */ $options = array('http' => array( 'method' => 'GET', )); $loginHtml = file_get_contents('http://mindia.jp/login', false, stream_context_create($options)); preg_match('/<input type="hidden" name="__token" value="(.*?)" id="form___token" \/>/', $loginHtml, $loginToken); /* ログイン */ $data = array( '__token' => $loginToken[1], 'password' => 任意のパスワード, 'preserve_key' => '0', 'ref' => '', 'submit' => 'ログイン', 'username' => 任意のユーザ名, ); $options = array('http' => array( 'method' => 'POST', 'content' => http_build_query($data), )); file_get_contents('http://mindia.jp/login', false, stream_context_create($options)); $cookies = array(); foreach ($http_response_header as $r) { if (strpos($r, 'Set-Cookie') === false) { continue; } $c = explode(' ', $r); $c = str_replace(';', '', $c[1]); $cookies[] = $c; } /* マイページ */ $options = array('http' => array( 'method' => 'GET', 'header' => implode("\r\n", array( 'Cookie: ' . implode('; ', $cookies) )) )); $userHtml = file_get_contents('http://mindia.jp/my', false, stream_context_create($options)); echo $userHtml; ?>
大まかにログインする場合は
(1)ログイン画面をGETで取得
(2)取得したHTMLからトークン部分をスクレイピング
(3)トークン+その他情報をPOST
です、ログイン後はログイン時に返されるCookies情報をヘッダにつけて各ページを取得していきます。
キーワード登録
キーワード削除
キーワード編集
日記登録
日記削除
日記編集
関連Link
【本家】
http://mindia.jp/
【中の人達】
http://mindia.jp/book/nishiko
http://mindia.jp/book/satoko
http://mindia.jp/book/akkun
http://mindia.jp/book/ogiyasu
http://mindia.jp/book/takeshi_kato