import os.path
import argparse
import sys
-import time
import signal
from twitter.stream import TwitterStream, Timeout, HeartbeatTimeout, Hangup
from .colors import *
from .config import *
+from .db import *
g = {}
-
+db = RainbowDB()
def draw(t, keyword=None):
"""
date = parser.parse(created_at)
time = date.strftime('%Y/%m/%d %H:%M:%S')
+ res = db.tweet_query(tid)
+ if not res:
+ db.store(tid)
+ res = db.tweet_query(tid)
+ rid = res[0].rainbow_id
+
# Format info
user = cycle_color(name) + grey(' ' + '@' + screen_name + ' ')
- meta = grey('[' + time + '] [id=' + str(tid) + ']')
+ meta = grey('[' + time + '] [id=' + str(rid) + ']')
tweet = text.split()
# Highlight RT
tweet = map(lambda x: grey(x) if x == 'RT' else x, tweet)
t.statuses.update(status=g['stuff'])
+def retweet():
+ """
+ ReTweet
+ """
+ t = Twitter(auth=authen())
+ try:
+ id = int(g['stuff'].split()[0])
+ tid = db.rainbow_query(id)[0].tweet_id
+ t.statuses.retweet(id=tid,include_entities=False,trim_user=True)
+ except:
+ print(red('Sorry I can\'t retweet for you.'))
+ sys.stdout.write(g['decorated_name'])
+
+
def reply():
"""
Reply
t = Twitter(auth=authen())
try:
id = int(g['stuff'].split()[0])
- user = t.statuses.show(id=id)['user']['screen_name']
+ tid = db.rainbow_query(id)[0].tweet_id
+ user = t.statuses.show(id=tid)['user']['screen_name']
status = ' '.join(g['stuff'].split()[1:])
status = '@' + user + ' ' + status.decode('utf-8')
- t.statuses.update(status=status, in_reply_to_status_id=id)
+ t.statuses.update(status=status, in_reply_to_status_id=tid)
except:
print(red('Sorry I can\'t understand.'))
sys.stdout.write(g['decorated_name'])
t = Twitter(auth=authen())
try:
id = int(g['stuff'].split()[0])
- t.statuses.destroy(id=id)
+ tid = db.rainbow_query(id)[0].tweet_id
+ t.statuses.destroy(id=tid)
print(green('Okay it\'s gone.'))
except:
print(red('Sorry I can\'t delete this tweet for you.'))
- sys.stdout.write(g['decorated_name'])
+ sys.stdout.write(g['decorated_name'])
def search():
"home" will show your timeline. "home 7" will print 7 tweet.
"view @bob" will show your friend @bob's home.
"t oops" will tweet "oops" immediately.
+ "rt 12345" will retweet to tweet with id "12345".
"rep 12345 oops" will reply "oops" to tweet with id "12345".
"del 12345" will delete tweet with id "12345".
"s #AKB48" will search for "AKB48" and return 5 newest tweet.
"fr" will list out your following people.
"fl" will list out your followers.
- "h" or "help" will print this help once again.
+ "h" will print this help once again.
"c" will clear the terminal.
"q" will exit.
----------------------------------------------------
Process switch
"""
return {
- 'home': home,
- 'view': view,
- 't': tweet,
- 'rep': reply,
- 'del': delete,
- 's': search,
- 'fr': friend,
- 'fl': follower,
- 'h': help,
- 'help': help,
- 'c': clear,
- 'q': quit,
+ 'home' : home,
+ 'view' : view,
+ 't' : tweet,
+ 'rt' : retweet,
+ 'rep' : reply,
+ 'del' : delete,
+ 's' : search,
+ 'fr' : friend,
+ 'fl' : follower,
+ 'h' : help,
+ 'c' : clear,
+ 'q' : quit,
}.get(cmd, lambda: sys.stdout.write(g['decorated_name']))
# Get stream
stream = TwitterStream(
auth=authen(),
- domain='userstream.twitter.com',
+ domain=DOMAIN,
**stream_args)
tweet_iter = stream.user(**query_args)
Main function
"""
get_decorated_name()
+
p = Process(target=stream)
p.start()
g['stream_pid'] = p.pid