themes = [f.split('.')[0] for f in files if f.split('.')[-1] == 'json']
g['themes'] = themes
# Startup cmd
- g['OSX_readline_bug'] = False
g['previous_cmd'] = ''
# Semaphore init
c['lock'] = False
c['message_dict'] = []
# Image on term
c['IMAGE_ON_TERM'] = args.image_on_term
+ # Dictionary of muted users key:screen name, value:name
+ g['mute_dict'] = {}
+ build_mute_dict(t)
+
+def build_mute_dict(t):
+ next_cursor = -1
+ rel = {}
+
+ while next_cursor != 0:
+ list = t.mutes.users.list(
+ screen_name=g['original_name'],
+ cursor=next_cursor,
+ skip_status=True,
+ include_entities=False,
+ )
+ for u in list['users']:
+ rel[u['screen_name'].encode('ascii', 'ignore')] = u['name'].encode('ascii', 'ignore')
+ next_cursor = list['next_cursor']
+ if(rel != g['mute_dict']):
+ g['mute_dict'] = rel
def switch():
rel = t.mutes.users.create(screen_name=screen_name[1:])
if isinstance(rel, dict):
printNicely(green(screen_name + ' is muted.'))
+ build_mute_dict(t)
else:
printNicely(red(rel))
else:
rel = t.mutes.users.destroy(screen_name=screen_name[1:])
if isinstance(rel, dict):
printNicely(green(screen_name + ' is unmuted.'))
+ build_mute_dict(t)
else:
printNicely(red(rel))
else:
"""
List muting user
"""
- t = Twitter(auth=authen())
- # Init cursor
- next_cursor = -1
- rel = {}
- # Cursor loop
- while next_cursor != 0:
- list = t.mutes.users.list(
- screen_name=g['original_name'],
- cursor=next_cursor,
- skip_status=True,
- include_entities=False,
- )
- for u in list['users']:
- rel[u['name']] = '@' + u['screen_name']
- next_cursor = list['next_cursor']
- # Print out result
+ rel = g['mute_dict']
+
printNicely('All: ' + str(len(rel)) + ' people.')
for name in rel:
- user = ' ' + cycle_color(name)
- user += color_func(c['TWEET']['nick'])(' ' + rel[name] + ' ')
+ user = color_func(c['TWEET']['nick'])(' ' + rel[name] + ' ')
+ user += cycle_color('@'+ name)
printNicely(user)
cmd = line.split()[0]
except:
cmd = ''
- # MacOSX readline bug (see "stream" function)
- if g['OSX_readline_bug']:
- cmd = cmd[1:]
- g['OSX_readline_bug'] = False
g['cmd'] = cmd
try:
# Lock the semaphore
ascii_art(art_dict[domain])
# These arguments are optional:
stream_args = dict(
- timeout=args.timeout,
- block=False,
+ timeout=0.5, # To check g['stream_stop'] after each 0.5 s
+ block=not args.no_block,
heartbeat_timeout=args.heartbeat_timeout)
# Track keyword
query_args = dict()
StreamLock.acquire()
g['stream_stop'] = False
for tweet in tweet_iter:
- if(g['stream_stop']):
- StreamLock.release()
- break
if tweet is None:
- pass
+ printNicely("-- None --")
elif tweet is Timeout:
- printNicely("-- Timeout --")
+ if(g['stream_stop']):
+ StreamLock.release()
+ break
elif tweet is HeartbeatTimeout:
printNicely("-- Heartbeat Timeout --")
elif tweet is Hangup:
printNicely("-- Hangup --")
- elif tweet.get('text'):
+ elif tweet.get('text') and (tweet['user']['screen_name'] not in g['mute_dict']):
draw(
t=tweet,
keyword=args.track_keywords,
)
# Current readline buffer
current_buffer = readline.get_line_buffer().strip()
- # There is an unexpected behaviour in MacOSX readline:
+ # There is an unexpected behaviour in MacOSX readline + Python 2:
# after completely delete a word after typing it,
# somehow readline buffer still contains
# the 1st character of that word
- if g['previous_cmd'] != current_buffer:
- if len(current_buffer) == 1:
- current_buffer = ''
- g['OSX_readline_bug'] = True
+ if current_buffer and g['previous_cmd'] != current_buffer:
sys.stdout.write(
g['decorated_name'](c['PREFIX']) + current_buffer)
sys.stdout.flush()
+ elif not c['HIDE_PROMPT']:
+ sys.stdout.write(g['decorated_name'](c['PREFIX']))
+ sys.stdout.flush()
elif tweet.get('direct_message'):
print_message(tweet['direct_message'], check_semaphore=True)
except TwitterHTTPError: