diff -r 4c870c767d3e -r a5eff8f2b81d script/lib/iri_tweet/tweet_twitter_user.py --- a/script/lib/iri_tweet/tweet_twitter_user.py Tue Sep 20 16:55:16 2011 +0200 +++ b/script/lib/iri_tweet/tweet_twitter_user.py Thu Sep 22 12:37:53 2011 +0200 @@ -3,14 +3,12 @@ set_logging, parse_date, get_logger) from optparse import OptionParser #@UnresolvedImport from sqlalchemy import BigInteger -from sqlalchemy.orm import sessionmaker -from sqlalchemy.schema import MetaData, Table, Column +from sqlalchemy.schema import Table, Column from sqlalchemy.sql import and_ import datetime +import re import sys -import time import twitter -import re APPLICATION_NAME = "Tweet recorder user" CONSUMER_KEY = "Vdr5ZcsjI1G3esTPI8yDg" @@ -22,7 +20,7 @@ parser.add_option("-d", "--database", dest="database", help="Input database", metavar="DATABASE") parser.add_option("-s", "--start-date", dest="start_date", - help="start date", metavar="START_DATE") + help="start date", metavar="START_DATE", default=None) parser.add_option("-e", "--end-date", dest="end_date", help="end date", metavar="END_DATE") parser.add_option("-H", "--hashtag", dest="hashtag", @@ -57,37 +55,37 @@ get_logger().debug("OPTIONS : " + repr(options)) #@UndefinedVariable if not options.message or len(options.message) == 0: + get_logger().warning("No message exiting") sys.exit() conn_str = options.database.strip() if not re.match("^\w+://.+", conn_str): conn_str = 'sqlite:///' + conn_str - engine, metadata = setup_database(conn_str, echo=((options.verbose-options.quiet)>0), create_all = False) + engine, metadata, Session = setup_database(conn_str, echo=((options.verbose-options.quiet)>0), create_all = False) - Session = sessionmaker() - conn = engine.connect() + conn = None try : - session = Session(bind=conn, autoflush=True, autocommit=True) + conn = engine.connect() + session = None try: - metadata = MetaData(bind=conn) + session = Session(bind=conn, autoflush=True, autocommit=True) tweet_exclude_table = Table("tweet_exclude", metadata, Column('id', BigInteger, primary_key=True), prefixes=['TEMPORARY']) - metadata.create_all() + metadata.create_all(bind=conn,tables=[tweet_exclude_table]) start_date_str = options.start_date end_date_str = options.end_date duration = options.duration hashtags = options.hashtag - - start_date = parse_date(start_date_str) - ts = time.mktime(start_date.timetuple()) - + start_date = None + if start_date_str: + start_date = parse_date(start_date_str) + + end_date = None if end_date_str: end_date = parse_date(end_date_str) - te = time.mktime(end_date.timetuple()) - else: - te = ts + duration + elif start_date and duration: end_date = start_date + datetime.timedelta(seconds=duration) base_message = options.message.decode(sys.getfilesystemencoding()) @@ -119,8 +117,10 @@ session.add(user_message) session.flush() finally: - # if message created and simulate, do not - session.close() + # if message created and simulate, do not + if session: + session.close() finally: - conn.close() + if conn: + conn.close()