mechanizeを使ってmixiに日記を書くサンプル

最近、仕事が手につかないbonlifeです。(まぁ、最近に限ったことではないんですけどね。)
近頃はもっぱらPythonです。「Dive Into Python」の記事もようやく「7. Regular Expressions」まで読み終わりました。(遅っ。)
ということで、Pythonのmechanizeを使って、役に立たないツールを作ってみましたよ。ただただ、mixiに日記を書くサンプルです。これを発展させて、Webインターフェースも作って、会社からmixiを使えるようにするのが目標です!

  • MixiBrowser.py
#!/usr/bin/env python
# -*- coding: utf-8 -*-

import mechanize

class MixiBrowser(mechanize.Browser):
    def __init__(self):
        self.logined = False
        mechanize.Browser.__init__(self)

    def login(self, email, password):
        """login mixi!"""
        try:
            self.open('http://mixi.jp/')
            self.set_handle_robots(False)
            self.select_form(nr=0)
            self["email"] = email
            self["password"] = password
            self.submit()
            if self.geturl() == 'http://mixi.jp/home.pl':
                self.logined = True
                return True
            else:
                return False
        except:
            return False

    def add_diary(self, diary_title, diary_body):
        """Write a mixi diary."""
        try:
            self.follow_link(url="http://mixi.jp/list_diary.pl")
            self.select_form(nr=0)
            self.submit()
            self.select_form(nr=0)
            self["diary_title"] = diary_title.encode(self.encoding())
            self["diary_body"] = diary_body.encode(self.encoding())
            self.submit()
            self.select_form(nr=0)
            self.submit()
            return True
        except:
            return False

exceptの処理はちょっと…とか気になる部分はありますが、動くものを作るのがやる気を保つのには必要なので、細かい点は気にしない方向で。これに機能をデフデフ追加したいところ。今後は表示内容の取得などがメインになると思うので、HTMLのパースが必要ですね。「Dive Into Python」の「8. HTML Processing」を読んでからチャレンジしてみます。
とりあえず、以下のようにして、日記を書くことができました。うわぁい。

  • mixi_diary_post_sample.py
#!/usr/bin/env python
# -*- coding: utf-8 -*-

import MixiBrowser()

email = 'foo@bar.com'
password = 'hoge'

mixi = MixiBrowser.MixiBrowser()
if mixi.login(email,password) == True:
    print mixi.add_diary(u'タイトルだにょだにょ', u'本文だにょだにょ\n2行目だにょだにょ')

ちなみに、昨日、また2冊本を買ってしまいました。なんだかすごいWindows(というよりMicrosoft)っ子みたいじゃないの、これ。通勤途中に細々と読んでみます。

IronPythonの世界 (Windows Script Programming)

IronPythonの世界 (Windows Script Programming)

Windows PowerShell宣言! (Windows Script Programming)

Windows PowerShell宣言! (Windows Script Programming)