Lingr 後の java-jaチャット 退避先

今回は残念なお知らせがあります。

5月末をもって、LingrRejawの両サービスをシャットダウンすることになりました。いずれのサービスも、すでに新規サインアップは受付停止済み、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()