laclefblog logo

Sun, 12 Oct 2008

Twitxrのメッセージをバックアップ

今の段階で、僕がTwitxrにポストしたメッセージ数は1216、もう少し前から使っているTwitterのメッセージ数は4194、となっている。Twitxrは未確認だが、Twitterは1ページ20個メッセージ表示で http://twitter.com/laclefyoshi?page=41 より古いメッセージを参照することが出来ない。Twitterが提供している検索サービスを使っても出ないし、どうやら古いメッセージはデータベースから削除しているか、どこかに隔離する仕様の様だ。

この手のサービスはマイクロブログ(micro-blogging)と言うのだから、メッセージはサービス上にあるが自分のログであるわけで、消されるのは面白くない。自分でバックアップを取って自分で再利用出来るようにしておくべきだろう。

Pythonで、TwitxrのAPIメソッドの1つであるgetUserTimelineを叩いて最新20個のメッセージ(XML)を取り出し、 lxml で解析、 sqlite3(pysqlite2) でデータベースに保存する。画像はバックアップしていない。

SQLiteのデータベースに保存するのは、XMLのまま保存するとかCSVに変換することも考えたが、ある程度サイズが大きくなることを考慮したため。

#!/usr/bin/python

import urllib
import lxml.etree
import sys
if sys.version_info[:2] >= (2, 5):
    import sqlite3
else:
    from pysqlite2 import dbapi2 as sqlite3

DB_FILE = 'twitxr_backup.db'

def init_db(con):
    con.execute("""CREATE TABLE twitxr(
        id INTEGER PRIMARY KEY,
        url TEXT,
        timestamp INTEGER,
        text TEXT,
        lat TEXT,
        lon TEXT,
        place TEXT)
    """)
    print("create db '%s'" % DB_FILE)

def update_db_fromxml(con):
    url = 'http://twitxr.com/api/rest/getUserTimeline?user=laclefyoshi'
    res = urllib.urlopen(url)
    t = lxml.etree.fromstring(res.read())
    for udelm in t.xpath('//update'):
        id = udelm.xpath('./@id')[0]
        cur = con.execute('SELECT * FROM twitxr WHERE id == %s' % id)
        if cur.fetchone() == None:
            url = udelm.xpath('./url')[0].text
            timestamp = udelm.xpath('./timestamp')[0].text
            text = udelm.xpath('./text')[0].text
            lat = udelm.xpath('./location/lat')[0].text
            lon = udelm.xpath('./location/lng')[0].text
            place = udelm.xpath('./location/place')[0].text
            con.execute("INSERT INTO twitxr VALUES(?, ?, ?, ?, ?, ?, ?)",
                (int(id), url, int(timestamp), text, lat, lon, place))
            con.commit()
            print("insert %s: %s" % (id, text))
        else:
            continue
        cur.close()

def main():
    con = sqlite3.connect(DB_FILE)
    try:
        init_db(con)
    except sqlite3.OperationalError:
        print("db '%s' is existed" % DB_FILE)
    update_db_fromxml(con)
    con.close()

main()

最新20個以前のメッセージは、HTMLを辿って、lxml.htmlで解析して取り出した。

これをcrontabで15分程度毎(メッセージのポスト数が20を越えないであろう時間間隔)に実行すれば、メッセージのバックアップが取れる。

ここまでするなら、Djangoでも使って自分専用マイクロブログサービスを作った方が安心で有意義なんじゃないかと、一瞬思った。

Wed, 28 May 2008

Twitterの障害弁明から

Twitterがもしも先進的でなく(先進的の如く扱われず)、乱立するショートメッセージングサービスの1つだったとしたら、正直積極的に使いたいとは思えない程、Twitterは不安定で間が抜けている。

最近はTwitxrからTwitter Gateway経由でTwitterのFollowerに通知をしているのだけれど、これは携帯電話のGPS機能で遊んでいるのであって、Twitterを避けているのではない。

TwitterはメッセージについてはIDと時間、IDは他のIDと関連付けられているが、この関連ももどかしいと思い、徹底的にシンプルに関連を無くしてあったとしたら、これもまた流行の中心に居なかっただろう。

というわけで、色々責任があるのでTwitterは頑張れ。

Sat, 03 May 2008

Twitterのこれまでとこれから

/.Jの記事はRoRが早くも落ち目である事を過大広告するつもりなんだろうか。

Twitterはメインストリームになんて、なるつもりは無いのではないだろうか。短いメッセージを通した、現実あるいは他のコミュニティサービスと別の何かと連携するための、糊の様なものとして存在し続ける方が、Twitterらしい気がする。

Thu, 03 Apr 2008

Twitterはどうするべきか

こういう論調の記事で取り上げられると、Twitterは何か変わらないと認められなくなる可能性が大きくなった。

最近はFONのメールマガジンで知った Twitxr.com を使って、GPSで取得した位置情報と時々写真を、Twitter的メッセージと結び付けて遊んでいるのだけれど、これもTwitterを超える様なものでは無い。

Second Lifeについても言える事だが、この手の手法の成功は、実世界と如何に上手く結び付くか、に掛かっているのかな。

Sat, 17 Nov 2007

TwitterとTim O'Reilly

システムはシンプルに。使い方はユーザ任せ。

BloggerはGoogleに買収され成功だったが、Odeoは失敗だったんだ。それを活かせたのは、やはり努力や才能があったんだろう。

日本での流行は、Twitterの進化に一役買っていたらしい。

何だ、このカジュアルな格好は。とても良いじゃないか。

Mon, 16 Jul 2007

Weblog誕生から10年

Oxford English Dictionaryのweblogの項より。

何を以て「weblog」あるいは「ブログ」なのかは、揉め易いところ。

日本のインターネット、Web上のテキスト文化については、ばるぼら『教科書には載らないニッポンのインターネットの歴史教科書』に詳しい。

Mon, 21 May 2007

横Twitter

glucoseの会社。

Twitterがあまりにオープンで緩いものだから、色々なサービスや考えが生まれるのだけれど、Twitterから見れば制限を設けたに過ぎなかったり。

マッシュアップと言うより、リデザインと言った感じ。

Sat, 19 May 2007

MODIPHI

RSS 2.0のフィード生成、配信サービス。

Microformatsによるメタデータを付与出来る。

RSSリーダの様に、任意のフィードをユーザが登録する事は出来ない。

光が届けば星は必要ない

RSS 2.0にMicroformatsを採用した時点で分かる事だが、各ユーザの行動を受け入れる分散環境ではなく、システム内で統一的管理をしている。

MODIPHIがWebの入り口であり出口であるという具合にしたいのだろうか。だからと言って、閉じているわけでもない。

緩さをあまり感じない。ツンツン。

JavaScriptにFlash。とても落ち着かないインタフェース。

Tue, 15 May 2007

Twitterにmetadataを

あまりにも緩すぎて、すっかり見落としていたが、Twitterにはメタデータを付けるための仕様が定まっていないんだった。というわけで、後々参照する際に不便が生じかねない。

というわけで、microformats的手法で、Twitterのステータスにメタデータを付与しようというプロジェクト。

Sat, 12 May 2007

アルファブロガ

ブロガの記事は、信用していると言うよりも、ギザ参考になる。

単語が1人歩きして、マスコミにからかわれている様な気がしないでもない。

僕は大学の食堂のテレビに流れていた番組映像を偶然見て、番組の存在を知った。研究室に戻ってから、後半15分位まともに見た。

自分のために書くか、他人のために書くか。両立してアルファブロガなのかな。