CrowyはHootSuiteと並んで、Web型SNSクライアントでマルチカラムなところが似てたんですが、Twitter以外にも力を入れているところがありました。Google App Engine for Pythonを使っているというのをリリース当初に聞いてました。そのCrowyがオープンソース化されると!
Crowyのサービス継続が難しい状況になりました。その対応として、本日よりCrowyをオープンソースとして公開いたしました。サービス継続にご協力いただけるプログラマーを募集しております。詳細はURLをご覧ください。 #crowycrowyjp.wordpress.com/2013/02/18/cro…
— Crowy (@crowy_jp) February 18, 2013
前向きなオープンソース化ではなくて、サービス継続困難のためになんとかしてください!というオープンソース化。ひえー!
https://github.com/co-meeting/crowy
とりえあえず、動かすところまで確認できたので。
まずGoogle App Engine for Pythonが必要です。
Twitter APIのConsumer Keyは自前で用意しなければなりません。
https://dev.twitter.com/apps/new
開発用に自前で作成しておきます。
conf/settings.pyを編集して、TWITTER_CONSUMER_KEYとTWITTER_CONSUMER_SECRETを設定しておきます。
Pythonのバージョンは2.5系でないとダメです。GAEで開発するときは2.7系でもまあ警告付きで開発できちゃうのですが、2.5系に依存したコードになっているので、2.5系にしないとこのへんでエラーになります。
File ".../crowy/src/httplib2/__init__.py", line 64, in
_ssl_wrap_socket = ssl.wrap_socket
AttributeError: 'module' object has no attribute 'wrap_socket'
sslモジュールが、用意されてあるのですが、2.6系以降は標準ライブラリにsslモジュールがあるのでそのためにエラーになるっぽい?
virtualenvを使っているんであれば、2.5系の開発環境を用意してその上で動かしましょう。
$ virtualenv --python=python2.5 env
New python executable in env/bin/python
Installing setuptools............done.
Installing pip...............done.
$ source env/bin/activate
$ python /usr/local/bin/dev_appserver.py .
Googleアカウントのログインがあるのですが、Google App Engineの開発サーバで動かしているので、ダミーのログインになります。
そのあとは通常のCrowyの操作と同じです。Twitterアカウントの設定をすることでタイムラインが表示されます。(このとき先ほど設定したTwitter APIのConsumer Keyのアプリが利用されます)
Crowyの3/5までの修正点としては、公式ブログにまとめてあるとおり、
- API v1.0からv1.1への変更
- ツイート表示形式の厳格化(詳しくはDeveloper Display Requirements)
がメイン。v1.1対応については、基本的にはAPIの置き換えでいいはずなんですが、Crowyの機能によっては1.1では実現できなくなる機能もあります。延命するのが目的なんで、そういう機能はとりあえず切り捨てるしかしょうがないかと思います。HootSuiteもRetweeted to meなんかの機能を停止しちゃいます。
割り切ってAPIでできないところは切り捨てていきましょう。Retweet系の幾つかは切り捨てて、controller/twitter.pyエンドポイントを1.1に変えればわりと動くんじゃないかな。。。それと動く・動かないとは別の話としてRate limitのカウント方法が変わります。どの程度使われているのか実績がわからないのですが、API制限がきつくなったりすることも考えられます。。
Twitter以外のサービスについてはしりません。。
表示形式の厳格化はそのとおりにしないとですね。ハイ。
とりあえず、ここまでやった。
Windowsでやってみました。App Engine SDK 1.7.5です。
(1) src/controller/main.py で
import sys
sys.modules[‘ssl’] = None #この行追加
(2) https://dev.twitter.com/apps/new のCallback URLは
http://127.0.0.1:8087/oauth/request_token
(ローカルで起動するポート番号が8087の場合)
WindowsでもPython2.5使えばソース変えなくても動きましたよ。
ポートは8080以外で動かすのならば変えなきゃですね。 (これはWindowsでなくても)