読者です 読者をやめる 読者になる 読者になる

Λάδι Βιώσας

http://profile.hatena.ne.jp/kenkitii/

はまりごと

python

個人的な話で恐縮ですが、最近、Pythonにはまっています。一ヶ月ほどぼちぼち勉強して、そろそろPythonのスタイルにも慣れてきました。

一方、某友人はMixiに熱烈はまり中のようです。もしかしてマイミク999人を目指してるんじゃなかろうか、と思えるほどです。

そこで、某友人のために「マイミク増やす」スクリプトPythonで書いてみました。

# -*- encoding: euc-jp -*-
import urllib, urllib2, cookielib, re
 
class mixi:
    def __init__(self):
        cj = cookielib.CookieJar()
 
        opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
        urllib2.install_opener(opener)
 
    def login(self, email, password):
        txurl = 'http://mixi.jp/login.pl'
        txdata = urllib.urlencode({'email': email, 'password': password, 'next_url': 'home.pl'})
        txheaders =  {'User-agent' : 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)'}
        req = urllib2.Request(txurl, txdata, txheaders)
 
        try:
            handle = urllib2.urlopen(req)
        except IOError, e:
            print "Error:", e
            return None
        else:
            return handle
 
    def getDiarylist(self):
        txurl = 'http://mixi.jp/search_diary.pl'
        txheaders =  {'User-agent' : 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)'}
        req = urllib2.Request(txurl, '', txheaders)
        dat = urllib2.urlopen(req).read()
        pat = re.compile('<a href="(view_diary.*?)">')
        lst = re.findall(pat, dat)
        diarylist = self.uniq(lst)
        return diarylist
 
    def autopilot(self, url):
        txheaders =  {'User-agent' : 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)'}
        req = urllib2.Request(txurl, '', txheaders)
        dat = urllib2.urlopen(req).read()
 
    def uniq(self, x):
        y = []
        for i in x:
            if not y.count(i):
                y.append(i)
        return y
        
if __name__ == "__main__":
 
    EMAIL = "自分のメアド"
    PASSWORD = "自分のパスワード"
 
    import sys, time
    mx = mixi()
    print "now logining..."
    ret = mx.login(EMAIL, PASSWORD)
    if ret == None:
        sys.exit(0)
 
    print "auto pilot start"
    lst = mx.getDiarylist()
    for l in lst:
        url = "http://mixi.jp/" + l
        print url
        time.sleep(5)
 
    print "done."

このあたりを参考に書きました。ちなみに動作環境はPython2.4以上です。

で、ナニをしてるかというと、ミキシーにログインして新着日記リストを取って来て、日記のURLを5秒置きに表示する、というものです。

え?そんなことしてもマイミク増えない?、、、うーん確かに。失礼しました。