script/lib/iri_tweet/tweet_twitter_user.py
changeset 289 a5eff8f2b81d
parent 286 6ac68295defe
--- 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()