From fe9bb33b8bcedf485523d9f5979073775daa8ec5 Mon Sep 17 00:00:00 2001 From: vunhat_minh Date: Fri, 25 Jul 2014 13:48:03 +0900 Subject: [PATCH] drop custom config, change IMAGE_ON_TERM on app running --- rainbowstream/colorset/config | 2 ++ rainbowstream/config.py | 40 +++++++++++++++++++++---- rainbowstream/draw.py | 15 +++++----- rainbowstream/rainbow.py | 56 +++++++++++++++++++++-------------- setup.py | 2 +- 5 files changed, 79 insertions(+), 36 deletions(-) diff --git a/rainbowstream/colorset/config b/rainbowstream/colorset/config index 4c4c31e..164411a 100644 --- a/rainbowstream/colorset/config +++ b/rainbowstream/colorset/config @@ -1,4 +1,6 @@ { + // Image on term + "IMAGE_ON_TERM" : false, // Themes "THEME" : "monokai", // Ascii Art diff --git a/rainbowstream/config.py b/rainbowstream/config.py index 4645409..dcef9f7 100644 --- a/rainbowstream/config.py +++ b/rainbowstream/config.py @@ -60,10 +60,12 @@ def get_default_config(key): """ path = os.path.dirname( __file__) + '/colorset/config' - data = load_config(path) + try: + data = load_config(path) + except: + raise Exception('No such config key.') return data[key] - def get_config(key): """ Get current value of a config key @@ -78,9 +80,9 @@ def set_config(key, value): # Modify value if value.isdigit(): value = int(value) - elif value.lower() == 'True': + elif value.lower() == 'true': value = True - elif value.lower() == 'False': + elif value.lower() == 'false': value = False # Fix up path = os.environ.get( @@ -89,13 +91,39 @@ def set_config(key, value): 'USERPROFILE', '')) + os.sep + '.rainbow_config.json' data = load_config(path) - fixup(data, key, value) + if key in data: + fixup(data, key, value) + else: + data[key] = value + c[key] = value # Save with open(path, 'w') as out: json.dump(data, out, indent=4) os.system('chmod 777 ' + path) +def delete_config(key): + """ + Delete a config key + """ + path = os.environ.get( + 'HOME', + os.environ.get( + 'USERPROFILE', + '')) + os.sep + '.rainbow_config.json' + data = load_config(path) + # Drop key + if key in data and key in c: + data.pop(key) + c.pop(key) + else: + raise Exception('No such config key.') + # Save + with open(path, 'w') as out: + json.dump(data, out, indent=4) + os.system('chmod 777 ' + path) + + def reload_config(): """ Reload config @@ -150,4 +178,4 @@ def init_config(): # Init config -init_config() \ No newline at end of file +init_config() diff --git a/rainbowstream/draw.py b/rainbowstream/draw.py index 8bd0c50..29240de 100644 --- a/rainbowstream/draw.py +++ b/rainbowstream/draw.py @@ -117,9 +117,10 @@ def check_config(): """ changed = False data = get_all_config() - for key in data: - if data[key] != c[key]: - changed = True + for key in c: + if key in data: + if data[key] != c[key]: + changed = True if changed: reload_config() @@ -152,7 +153,7 @@ def color_func(func_name): return globals()[func_name] -def draw(t, iot=False, keyword=None, check_semaphore=False, fil=[], ig=[]): +def draw(t, keyword=None, check_semaphore=False, fil=[], ig=[]): """ Draw the rainbow """ @@ -276,7 +277,7 @@ def draw(t, iot=False, keyword=None, check_semaphore=False, fil=[], ig=[]): printNicely(line3) # Display Image - if iot and media_url: + if c['IMAGE_ON_TERM'] and media_url: for mu in media_url: try: response = requests.get(mu) @@ -337,7 +338,7 @@ def print_message(m): printNicely(line3) -def show_profile(u, iot=False): +def show_profile(u): """ Show a profile """ @@ -410,7 +411,7 @@ def show_profile(u, iot=False): # Display printNicely('') printNicely(line1) - if iot: + if c['IMAGE_ON_TERM']: try: response = requests.get(profile_image_url) image_to_display(BytesIO(response.content), 2, 20) diff --git a/rainbowstream/rainbow.py b/rainbowstream/rainbow.py index 4c2851f..08fee9e 100644 --- a/rainbowstream/rainbow.py +++ b/rainbowstream/rainbow.py @@ -137,7 +137,7 @@ def authen(): CONSUMER_SECRET) -def init(): +def init(args): """ Init function """ @@ -153,7 +153,8 @@ def init(): db.theme_store(c['THEME']) # Semaphore init db.semaphore_store(False) - + # Image on term + c['IMAGE_ON_TERM'] = args.image_on_term def switch(): """ @@ -261,7 +262,7 @@ def home(): if g['stuff'].isdigit(): num = int(g['stuff']) for tweet in reversed(t.statuses.home_timeline(count=num)): - draw(t=tweet, iot=g['iot']) + draw(t=tweet) printNicely('') @@ -277,7 +278,7 @@ def view(): except: num = c['HOME_TWEET_NUM'] for tweet in reversed(t.statuses.user_timeline(count=num, screen_name=user[1:])): - draw(t=tweet, iot=g['iot']) + draw(t=tweet) printNicely('') else: printNicely(red('A name should begin with a \'@\'')) @@ -292,7 +293,7 @@ def mentions(): if g['stuff'].isdigit(): num = int(g['stuff']) for tweet in reversed(t.statuses.mentions_timeline(count=num)): - draw(t=tweet, iot=g['iot']) + draw(t=tweet) printNicely('') @@ -368,7 +369,7 @@ def allretweet(): printNicely(magenta('This tweet has no retweet.')) return for tweet in reversed(rt_ary): - draw(t=tweet, iot=g['iot']) + draw(t=tweet) printNicely('') @@ -385,7 +386,7 @@ def favorite(): tid = db.rainbow_to_tweet_query(id)[0].tweet_id t.favorites.create(_id=tid, include_entities=False) printNicely(green('Favorited.')) - draw(t.statuses.show(id=tid), iot=g['iot']) + draw(t.statuses.show(id=tid)) printNicely('') @@ -434,7 +435,7 @@ def unfavorite(): tid = db.rainbow_to_tweet_query(id)[0].tweet_id t.favorites.destroy(_id=tid) printNicely(green('Okay it\'s unfavorited.')) - draw(t.statuses.show(id=tid), iot=g['iot']) + draw(t.statuses.show(id=tid)) printNicely('') @@ -449,7 +450,6 @@ def search(): printNicely('Newest tweets:') for i in reversed(xrange(c['SEARCH_MAX_RECORD'])): draw(t=rel[i], - iot=g['iot'], keyword=g['stuff']) printNicely('') else: @@ -652,7 +652,7 @@ def whois(): user = t.users.show( screen_name=screen_name[1:], include_entities=False) - show_profile(user, g['iot']) + show_profile(user) except: printNicely(red('Omg no user.')) else: @@ -1104,13 +1104,24 @@ def config(): light_green(k) + ': ' + light_yellow(str(all_config[k])) printNicely(line) else: - printNicely(red('No config key like this.')) + printNicely(red('No such config key.')) # Print specific config's default value elif len(g['stuff'].split()) == 2 and g['stuff'].split()[-1] == 'default': key = g['stuff'].split()[0] - value = get_default_config(key) - line = ' ' * 2 + light_green(key) + ': ' + light_magenta(value) - printNicely(line) + try: + value = get_default_config(key) + line = ' ' * 2 + light_green(key) + ': ' + light_magenta(value) + printNicely(line) + except: + printNicely(light_magenta('This config key does not exist in default.')) + # Delete specific config key in config file + elif len(g['stuff'].split()) == 2 and g['stuff'].split()[-1] == 'drop': + key = g['stuff'].split()[0] + try: + delete_config(key) + printNicely(light_green('Config key is dropped.')) + except: + printNicely(red('No such config key.')) # Set specific config elif len(g['stuff'].split()) == 3 and g['stuff'].split()[1] == '=': key = g['stuff'].split()[0] @@ -1395,12 +1406,15 @@ def help(): light_green('config ASCII_ART') + ' will output current value of ' +\ light_yellow('ASCII_ART') + ' config key.\n' usage += s * 3 + \ - light_green('config ASCII_ART default') + ' will output default value of ' + \ - light_yellow('ASCII_ART') + ' config key.\n' + light_green('config TREND_MAX default') + ' will output default value of ' + \ + light_yellow('TREND_MAX') + ' config key.\n' + usage += s * 3 + \ + light_green('config CUSTOM_CONFIG drop') + ' will drop ' + \ + light_yellow('CUSTOM_CONFIG') + ' config key.\n' usage += s * 3 + \ - light_green('config ASCII_ART = False') + ' will set value of ' + \ - light_yellow('ASCII_ART') + ' config key to ' + \ - light_yellow('False') + '.\n' + light_green('config IMAGE_ON_TERM = true') + ' will set value of ' + \ + light_yellow('IMAGE_ON_TERM') + ' config key to ' + \ + light_yellow('True') + '.\n' # Screening usage += '\n' usage += s + grey(u'\u266A' + ' Screening \n') @@ -1648,7 +1662,6 @@ def stream(domain, args, name='Rainbow Stream'): elif tweet.get('text'): draw( t=tweet, - iot=args.image_on_term, keyword=args.track_keywords, check_semaphore=True, fil=args.filter, @@ -1669,7 +1682,7 @@ def fly(): # Initial args = parse_arguments() try: - init() + init(args) except TwitterHTTPError: printNicely('') printNicely( @@ -1692,5 +1705,4 @@ def fly(): g['reset'] = True g['prefix'] = True g['stream_pid'] = p.pid - g['iot'] = args.image_on_term listen() diff --git a/setup.py b/setup.py index 6623f15..593dc29 100644 --- a/setup.py +++ b/setup.py @@ -2,7 +2,7 @@ from setuptools import setup, find_packages import os, sys # Bumped version -version = '0.4.4' +version = '0.4.5' # Require install_requires = [ -- 2.25.1