| author | Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com> |
| Fri, 18 Mar 2011 15:45:49 +0100 | |
| changeset 82 | 210dc265c70f |
| child 98 | 6e8930a1b8f7 |
| permissions | -rw-r--r-- |
|
82
210dc265c70f
add script to tweet users
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff
changeset
|
1 |
from optparse import OptionParser |
|
210dc265c70f
add script to tweet users
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff
changeset
|
2 |
from utils import * |
|
210dc265c70f
add script to tweet users
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff
changeset
|
3 |
import models |
|
210dc265c70f
add script to tweet users
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff
changeset
|
4 |
from sqlalchemy.orm import sessionmaker, mapper |
|
210dc265c70f
add script to tweet users
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff
changeset
|
5 |
import logging |
|
210dc265c70f
add script to tweet users
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff
changeset
|
6 |
import time |
|
210dc265c70f
add script to tweet users
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff
changeset
|
7 |
import twitter |
|
210dc265c70f
add script to tweet users
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff
changeset
|
8 |
import sys |
|
210dc265c70f
add script to tweet users
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff
changeset
|
9 |
|
|
210dc265c70f
add script to tweet users
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff
changeset
|
10 |
APPLICATION_NAME = "Tweet recorder user" |
|
210dc265c70f
add script to tweet users
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff
changeset
|
11 |
CONSUMER_KEY = "Vdr5ZcsjI1G3esTPI8yDg" |
|
210dc265c70f
add script to tweet users
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff
changeset
|
12 |
CONSUMER_SECRET = "LMhNrY99R6a7E0YbZZkRFpUZpX5EfB1qATbDk1sIVLs" |
|
210dc265c70f
add script to tweet users
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff
changeset
|
13 |
|
|
210dc265c70f
add script to tweet users
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff
changeset
|
14 |
|
|
210dc265c70f
add script to tweet users
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff
changeset
|
15 |
def get_options(): |
|
210dc265c70f
add script to tweet users
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff
changeset
|
16 |
parser = OptionParser() |
|
210dc265c70f
add script to tweet users
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff
changeset
|
17 |
parser.add_option("-d", "--database", dest="database", |
|
210dc265c70f
add script to tweet users
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff
changeset
|
18 |
help="Input database", metavar="DATABASE") |
|
210dc265c70f
add script to tweet users
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff
changeset
|
19 |
parser.add_option("-s", "--start-date", dest="start_date", |
|
210dc265c70f
add script to tweet users
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff
changeset
|
20 |
help="start date", metavar="START_DATE") |
|
210dc265c70f
add script to tweet users
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff
changeset
|
21 |
parser.add_option("-e", "--end-date", dest="end_date", |
|
210dc265c70f
add script to tweet users
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff
changeset
|
22 |
help="end date", metavar="END_DATE") |
|
210dc265c70f
add script to tweet users
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff
changeset
|
23 |
parser.add_option("-H", "--hashtag", dest="hashtag", |
|
210dc265c70f
add script to tweet users
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff
changeset
|
24 |
help="Hashtag", metavar="HASHTAG", default=[], action="append") |
|
210dc265c70f
add script to tweet users
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff
changeset
|
25 |
parser.add_option("-x", "--exclude", dest="exclude", |
|
210dc265c70f
add script to tweet users
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff
changeset
|
26 |
help="file containing the id to exclude", metavar="EXCLUDE") |
|
210dc265c70f
add script to tweet users
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff
changeset
|
27 |
parser.add_option("-D", "--duration", dest="duration", type="int", |
|
210dc265c70f
add script to tweet users
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff
changeset
|
28 |
help="Duration", metavar="DURATION", default=None) |
|
210dc265c70f
add script to tweet users
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff
changeset
|
29 |
parser.add_option("-m", "--message", dest="message", |
|
210dc265c70f
add script to tweet users
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff
changeset
|
30 |
help="tweet", metavar="MESSAGE", default="") |
|
210dc265c70f
add script to tweet users
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff
changeset
|
31 |
parser.add_option("-u", "--user", dest="user", |
|
210dc265c70f
add script to tweet users
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff
changeset
|
32 |
help="user", metavar="USER") |
|
210dc265c70f
add script to tweet users
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff
changeset
|
33 |
parser.add_option("-w", "--password", dest="password", |
|
210dc265c70f
add script to tweet users
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff
changeset
|
34 |
help="password", metavar="PASSWORD") |
|
210dc265c70f
add script to tweet users
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff
changeset
|
35 |
parser.add_option("-t", dest="token_filename", metavar="TOKEN_FILENAME", default=".oauth_token", |
|
210dc265c70f
add script to tweet users
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff
changeset
|
36 |
help="Token file name") |
|
210dc265c70f
add script to tweet users
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff
changeset
|
37 |
|
|
210dc265c70f
add script to tweet users
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff
changeset
|
38 |
|
|
210dc265c70f
add script to tweet users
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff
changeset
|
39 |
set_logging_options(parser) |
|
210dc265c70f
add script to tweet users
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff
changeset
|
40 |
|
|
210dc265c70f
add script to tweet users
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff
changeset
|
41 |
return parser.parse_args() |
|
210dc265c70f
add script to tweet users
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff
changeset
|
42 |
|
|
210dc265c70f
add script to tweet users
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff
changeset
|
43 |
|
|
210dc265c70f
add script to tweet users
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff
changeset
|
44 |
if __name__ == "__main__": |
|
210dc265c70f
add script to tweet users
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff
changeset
|
45 |
|
|
210dc265c70f
add script to tweet users
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff
changeset
|
46 |
(options, args) = get_options() |
|
210dc265c70f
add script to tweet users
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff
changeset
|
47 |
|
|
210dc265c70f
add script to tweet users
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff
changeset
|
48 |
set_logging(options) |
|
210dc265c70f
add script to tweet users
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff
changeset
|
49 |
|
|
210dc265c70f
add script to tweet users
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff
changeset
|
50 |
logging.debug("OPTIONS : " + repr(options)) |
|
210dc265c70f
add script to tweet users
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff
changeset
|
51 |
|
|
210dc265c70f
add script to tweet users
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff
changeset
|
52 |
if not options.message or len(options.message) == 0: |
|
210dc265c70f
add script to tweet users
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff
changeset
|
53 |
sys.exit() |
|
210dc265c70f
add script to tweet users
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff
changeset
|
54 |
|
|
210dc265c70f
add script to tweet users
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff
changeset
|
55 |
engine, metadata = setup_database('sqlite:///'+options.database, echo=((options.verbose-options.quiet)>0), create_all = False) |
|
210dc265c70f
add script to tweet users
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff
changeset
|
56 |
|
|
210dc265c70f
add script to tweet users
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff
changeset
|
57 |
Session = sessionmaker() |
|
210dc265c70f
add script to tweet users
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff
changeset
|
58 |
conn = engine.connect() |
|
210dc265c70f
add script to tweet users
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff
changeset
|
59 |
try : |
|
210dc265c70f
add script to tweet users
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff
changeset
|
60 |
session = Session(bind=conn) |
|
210dc265c70f
add script to tweet users
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff
changeset
|
61 |
try: |
|
210dc265c70f
add script to tweet users
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff
changeset
|
62 |
metadata = MetaData(bind=conn) |
|
210dc265c70f
add script to tweet users
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff
changeset
|
63 |
tweet_exclude_table = Table("tweet_exclude", metadata, Column('id', BigInteger, primary_key=True), prefixes=['TEMPORARY']) |
|
210dc265c70f
add script to tweet users
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff
changeset
|
64 |
#mapper(TweetExclude, tweet_exclude_table) |
|
210dc265c70f
add script to tweet users
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff
changeset
|
65 |
metadata.create_all() |
|
210dc265c70f
add script to tweet users
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff
changeset
|
66 |
|
|
210dc265c70f
add script to tweet users
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff
changeset
|
67 |
start_date_str = options.start_date |
|
210dc265c70f
add script to tweet users
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff
changeset
|
68 |
end_date_str = options.end_date |
|
210dc265c70f
add script to tweet users
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff
changeset
|
69 |
duration = options.duration |
|
210dc265c70f
add script to tweet users
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff
changeset
|
70 |
hashtags = options.hashtag |
|
210dc265c70f
add script to tweet users
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff
changeset
|
71 |
|
|
210dc265c70f
add script to tweet users
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff
changeset
|
72 |
|
|
210dc265c70f
add script to tweet users
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff
changeset
|
73 |
start_date = parse_date(start_date_str) |
|
210dc265c70f
add script to tweet users
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff
changeset
|
74 |
ts = time.mktime(start_date.timetuple()) |
|
210dc265c70f
add script to tweet users
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff
changeset
|
75 |
|
|
210dc265c70f
add script to tweet users
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff
changeset
|
76 |
if end_date_str: |
|
210dc265c70f
add script to tweet users
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff
changeset
|
77 |
end_date = parse_date(end_date_str) |
|
210dc265c70f
add script to tweet users
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff
changeset
|
78 |
te = time.mktime(end_date.timetuple()) |
|
210dc265c70f
add script to tweet users
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff
changeset
|
79 |
else: |
|
210dc265c70f
add script to tweet users
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff
changeset
|
80 |
te = ts + duration |
|
210dc265c70f
add script to tweet users
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff
changeset
|
81 |
end_date = start_date + datetime.timedelta(seconds=duration) |
|
210dc265c70f
add script to tweet users
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff
changeset
|
82 |
|
|
210dc265c70f
add script to tweet users
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff
changeset
|
83 |
query = get_user_query(session, start_date, end_date, hashtags, tweet_exclude_table) |
|
210dc265c70f
add script to tweet users
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff
changeset
|
84 |
#query = query.filter(User.screen_name == "tibo_c") |
|
210dc265c70f
add script to tweet users
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff
changeset
|
85 |
|
|
210dc265c70f
add script to tweet users
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff
changeset
|
86 |
query_res = query.all() |
|
210dc265c70f
add script to tweet users
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff
changeset
|
87 |
|
|
210dc265c70f
add script to tweet users
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff
changeset
|
88 |
acess_token_key, access_token_secret = get_oauth_token(options.token_filename, application_name=APPLICATION_NAME, consumer_key=CONSUMER_KEY, consumer_secret=CONSUMER_SECRET) |
|
210dc265c70f
add script to tweet users
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff
changeset
|
89 |
t = twitter.Twitter(auth=twitter.OAuth(acess_token_key, access_token_secret, CONSUMER_KEY, CONSUMER_SECRET)) |
|
210dc265c70f
add script to tweet users
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff
changeset
|
90 |
|
|
210dc265c70f
add script to tweet users
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff
changeset
|
91 |
for user in query_res: |
|
210dc265c70f
add script to tweet users
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff
changeset
|
92 |
screen_name = user.screen_name |
|
210dc265c70f
add script to tweet users
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff
changeset
|
93 |
|
|
210dc265c70f
add script to tweet users
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff
changeset
|
94 |
message = u"@%s: %s" % (screen_name, options.message.decode(sys.getfilesystemencoding())) |
|
210dc265c70f
add script to tweet users
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff
changeset
|
95 |
logging.debug("new status : " + message) |
|
210dc265c70f
add script to tweet users
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff
changeset
|
96 |
t.statuses.update(status=message) |
|
210dc265c70f
add script to tweet users
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff
changeset
|
97 |
|
|
210dc265c70f
add script to tweet users
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff
changeset
|
98 |
|
|
210dc265c70f
add script to tweet users
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff
changeset
|
99 |
finally: |
|
210dc265c70f
add script to tweet users
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff
changeset
|
100 |
session.close() |
|
210dc265c70f
add script to tweet users
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff
changeset
|
101 |
finally: |
|
210dc265c70f
add script to tweet users
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff
changeset
|
102 |
conn.close() |
|
210dc265c70f
add script to tweet users
Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
parents:
diff
changeset
|
103 |