script/lib/iri_tweet/export_tweet_db.py
author Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
Thu, 20 Jan 2011 10:44:04 +0100
changeset 15 5d552b6a0e55
parent 12 4daf47fcf792
child 122 4c3a15877f80
permissions -rw-r--r--
add oauth authentication to tweetstream

from models import *
from utils import *
from optparse import OptionParser
from sqlalchemy.orm import sessionmaker
import logging
import sqlite3
import sys


#    'entities': "tweet_entity",     
#    'user': "tweet_user"

def get_option():
    
    parser = OptionParser()

    parser.add_option("-t", dest="token_filename", metavar="TOKEN_FILENAME", default=".oauth_token",
                      help="Token file name")

    set_logging_options(parser)

    return parser.parse_args()

if __name__ == "__main__":
    
    (options, args) = get_option()
        
    set_logging(options)
    
    with sqlite3.connect(args[0]) as conn_in:
        engine, metadata = setup_database('sqlite:///'+args[1], echo=((options.verbose-options.quiet)>0))
        Session = sessionmaker(bind=engine)
        session = Session()
        try:
            curs_in = conn_in.cursor()
            fields_mapping = {}
            for i,res in enumerate(curs_in.execute("select json from tweet_tweet;")):
                logging.debug("main loop %d : %s" % (i, res[0]))
                processor = TwitterProcessor(eval(res[0]), res[0], session, options.token_filename)
                processor.process()
                session.commit()
            logging.debug("main : %d tweet processed" % (i+1))
        except Exception, e:
            session.rollback()
            raise e
        finally:
            session.close()