mixi4j
通勤の間ぼけーっと考えていた。
Eclipseで開発以外のことできたら楽しいかなぁと。
そういえば Twitterclipse ってあったな。
それをまねして、mixiできるmixiclipseとかって楽しいかな。
それに ひとりWikiみたいにWikiclipse とか。
調べてみると、Wikiはすでにあった。
Eclipse Wiki
まあこれは明らかに難しいので、あまりやる気はなかったが・・・w
EntertainmentなEclipseという新しい分野を開拓するもの楽しそうではないか。
All in One Entertainment Eclipseみたいな感じ。
AOEEを入れれば、2chブラウザ、mixi、YouTubeが統合的に楽しめます。みたいな感じ。
EclipseTVとかいいかも。
妄想がふくらむなぁ。生産性低減だ。
さてはて、妄想ばかりでも仕方ないので、とりあえずMixiClientを実装してみた。思ったよりは簡単だった。
スーパーバギーなソースだけど、とりあえず載せてみる。
import java.io.BufferedReader; import java.io.InputStreamReader; import org.apache.commons.httpclient.HttpClient; import org.apache.commons.httpclient.methods.GetMethod; import org.apache.commons.httpclient.methods.PostMethod; public class MixiMain { public static void main(String[] args) { HttpClient httpClient = new HttpClient(); String encode = "EUC-JP"; String nextUrl = "/home.pl"; String userName = "mailaddress"; String password = "password"; String loginUrl = "http://mixi.jp/login.pl"; String homeUrl = "http://mixi.jp/home.pl"; String friendUrl = "http://mixi.jp/list_friend.pl"; String diaryUrl = "http://mixi.jp/new_friend_diary.pl"; String communityUrl = "http://mixi.jp/list_community.pl"; String albumUrl = "http://mixi.jp/new_album.pl"; PostMethod postMethod = new PostMethod(loginUrl); postMethod.addParameter("email", userName); postMethod.addParameter("password", password); postMethod.addParameter("next_url", nextUrl); try { httpClient.executeMethod(postMethod); postMethod.releaseConnection(); GetMethod getMethod = new GetMethod(diaryUrl); httpClient.executeMethod(getMethod); BufferedReader br = new BufferedReader( new InputStreamReader( getMethod.getResponseBodyAsStream(), encode)); String line; while ((line = br.readLine()) != null) { System.out.println(line); } getMethod.releaseConnection(); } catch (Exception e) { e.printStackTrace(); } } }
HttpUrlConnectionでもよかったんだけど、Cookieとか使うかもしれないからHttpClientで実装した。
GetMethodのコンストラクタに渡すURLを変えれば、友達リストとかコミュニティとかが取れる。
もうちょっと頑張ってまともに実装して、mixi4jとか作ってみたい。
適当に設計して、適当にスクレイピングすればできそう。
プログラムからのアクセスは許されるか?と思って利用規約を読んでみた。
# User-Agent: Jakarta Commons-HttpClient/3.1-rc1でリクエストできてしまう
サーバーに負担をかける行為、および他のユーザーのアクセスまたは操作を妨害する行為。
微妙なのはこれくらいかな。
あとはやっぱりスパムになるとまずそう。更新系を実装するのは止めておこう。
# 実装したいけど・・・
正直、オブジェクト指向なクラス設計ってよくわからない。
作りながら飲みながら考えるか。