今回は残念なお知らせがあります。
5月末をもって、LingrとRejawの両サービスをシャットダウンすることになりました。いずれのサービスも、すでに新規サインアップは受付停止済み、5月15日までユーザデータのダウンロード依頼を受け付け、5月16日からは新規発言ができなくなり、5月末の完全停止までの間にデータをダウンロードしていただく段取りになります。
LingrとRejawサービス終了のお知らせ:Kenn's Clairvoyance - CNET Japan
という事でお世話になった lingr には感謝しつつ退避先を探しています.
とりあえずは java-ja のトップページにも書いてある
IRC に退避します
で,急遽なのでログは wassr でとってます.
http://wassr.jp/user/java-ja
wassr にした理由は
- web にログが残る
- 個別の発言に url が生成される
- API 制限が今のところ無い
からです.
色々意見も聞きたいので,是非 IRC に参加してくだしあ><
とりあえずやっつけで作ったソース貼っておきます
#!/usr/bin/env python # -*- coding: utf-8 -*- import simplejson, urllib2, urllib from ircbot import SingleServerIRCBot from irclib import nm_to_n class FuncBot(SingleServerIRCBot): def __init__(self, channel, nickname, server, realname=None, password=None,port=6667): SingleServerIRCBot.__init__(self, [(server, port,password)], nickname,realname,password) self.channel = channel self.funcs = [] def on_welcome(self, c, e): print 'welcome',c,e c.join(self.channel) def on_nicknameinuse(self, c, e): c.nick(c.get_nickname() + "_") def do_command(self,c,e): for func in self.funcs: func(self,c,e) on_pubmsg = do_command on_privmsg = do_command class TwitterClone: def __init__(self, user, passwd, url, source='清楚なクライアント'): self.user = user self.passwd = passwd self.url = url self.source = source def post(self, text): text = text.encode('utf-8') self.getOpener().open(self.url + 'statuses/update.json', urllib.urlencode({'status':text,'source':self.source})) def getTimeline(self): url = self.url + 'statuses/friends_timeline.json' r = self.getOpener().open(url) data = simplejson.loads(r.read()) return data def getReplies(self): url = self.url + 'statuses/replies.json' r = self.getOpener().open(url) data = simplejson.loads(r.read()) return data def getOpener(self): passman = urllib2.HTTPPasswordMgrWithDefaultRealm() passman.add_password(None, self.url , self.user, self.passwd) authhandler = urllib2.HTTPBasicAuthHandler(passman) opener = urllib2.build_opener(authhandler) opener.addheaders = [('User-agent', 'TwitterCloneClient(http://d.hatena.ne.jp/jYoshiori/)')] return opener if __name__ =='__main__': print 'start' server = 'irc.freenode.net' bot =FuncBot('#java-ja','log-bot',server) from pit import Pit wassr_config = Pit.get('java-ja.wassr.jp',{'require' : {'user':'Your wassr name','password':'Your wassr password'}}) wassr = TwitterClone(wassr_config['user'],wassr_config['password'],'http://api.wassr.jp/') def debug_command(myself,c,e): msg = unicode(e.arguments()[0], "utf8") print msg myself.connection.privmsg(myself.channel, msg.encode('utf-8')) def wassr_command(myself,c,e): nick = nm_to_n(e.source()) msg = unicode(e.arguments()[0], "utf8") print nick,msg wassr.post(nick + ':' + msg) #bot.funcs.append(debug_command) bot.funcs.append(wassr_command) print bot.start()