Twistedで☆をつけまくる
何かと話題のはてなスターにTwistedでアクセス。
star.py
# coding=utf-8 from twisted.internet import reactor from twisted.application.internet import TimerService from twisted.web import client from urllib import urlencode import re CONST_LOGIN = 'https://www.hatena.ne.jp/login' CONST_ADD_STAR = 'http://s.hatena.ne.jp/star.add.json?%s' const_title_re = re.compile(r'<title>([^<]*) - ([^<]*)</title>', re.M | re.I) dummy_cookie = {} def add_hatena_star(user, password, url): def error(failure): print failure reactor.stop() def finish(data): print data def login(data): client.getPage(url, cookies=dummy_cookie).addCallback(add_star) def add_star(data): match_title = const_title_re.search(data) title = match_title.groups(0) title_str = unicode(title[1],'euc_jp').strip() title_str = title_str.encode('utf8') data = urlencode({ 'uri':url, 'title':title_str, 'callback':'Ten.JSONP.callback' }) star_url = CONST_ADD_STAR % data client.getPage(star_url, cookies=dummy_cookie).addCallback(finish) post = urlencode({ 'name':user, 'password':password, 'persistent':'1', 'location':'http://s.hatena.ne.jp/' }) client.getPage(CONST_LOGIN, method='POST', cookies=dummy_cookie, postdata=post).addCallback(login) if __name__ == '__main__': service = TimerService(30, add_hatena_star, 'hatena_id','password', '☆をつけるURL') reactor.callLater(1, service.startService) reactor.run()
30秒間隔で☆をつけに行きます。
タイトルはふつーにタイトルからひいてます。
(jsだとなんかリンクされてるところで切れるので)
ご利用は計画的に。
(怒られない程度にね!)
うくく。