はまりごと
個人的な話で恐縮ですが、最近、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秒置きに表示する、というものです。
え?そんなことしてもマイミク増えない?、、、うーん確かに。失礼しました。