#!/usr/bin/env python

import urllib2
import json
import codecs
import sys

template = '''From: %(from_user_id)s
Date: %(created_at)s
Message-Id: %(id)s

%(text)s
'''
reply_template = '''To: %(to_user)s <%(to_user_id)s>
From: %(from_user_id)s
Date: %(created_at)s
Message-Id: %(id)s

%(text)s
'''

query = 'http://search.twitter.com/search.json?rpp=100&q=from%%3A%s&page=%d'

def backup(user):
    for page in range(1, 1000):
        q = query % (user, page)
        tweets = json.loads(urllib2.urlopen(q).read())['results']
        if not tweets:
            break
        for tweet in tweets:
            with codecs.open(str(tweet['id']), 'w', encoding='utf-8') as f:
                if 'to_user' in tweet:
                    f.write(reply_template % tweet)
                else:
                    f.write(template % tweet)

def main(argv=None):
    if argv is None:
        argv = sys.argv
    backup(argv[1])

if __name__ == "__main__":
    sys.exit(main())

