]>
jfr.im git - z_archive/twitter.git/blob - twitter/logger.py
2 twitter-log - Twitter Logger/Archiver
6 twitter-log <screen_name> [max_id]
10 Produce a complete archive in text form of a user's tweets. The
13 screen_name <tweet_id>
15 [In-Reply-To: a_tweet_id]
17 Tweet text possibly spanning multiple lines with
18 each line indented by four spaces.
21 Each tweet is separated by two blank lines.
25 from __future__
import print_function
29 from time
import sleep
31 from .api
import Twitter
, TwitterError
32 from .cmdline
import CONSUMER_KEY
, CONSUMER_SECRET
33 from .auth
import NoAuth
34 from .util
import printNicely
38 print(msg
, file=sys
.stderr
)
40 def get_tweets(twitter
, screen_name
, max_id
=None):
41 kwargs
= dict(count
=3200, screen_name
=screen_name
)
43 kwargs
['max_id'] = max_id
46 tweets
= twitter
.statuses
.user_timeline(**kwargs
)
48 if tweet
['id'] == max_id
:
50 print("%s %s\nDate: %s" % (tweet
['user']['screen_name'],
53 if tweet
.get('in_reply_to_status_id'):
54 print("In-Reply-To: %s" % tweet
['in_reply_to_status_id'])
56 for line
in tweet
['text'].splitlines():
57 printNicely(' ' + line
+ '\n')
62 return n_tweets
, max_id
64 def main(args
=sys
.argv
[1:]):
68 domain
='api.twitter.com')
84 tweets_processed
, max_id
= get_tweets(twitter
, screen_name
, max_id
)
85 n_tweets
+= tweets_processed
86 log_debug("Processed %i tweets (max_id %s)" %(n_tweets
, max_id
))
87 if tweets_processed
== 0:
88 log_debug("That's it, we got all the tweets. Done.")
90 except TwitterError
as e
:
91 log_debug("Twitter bailed out. I'm going to sleep a bit then try again")