drop custom config, change IMAGE_ON_TERM on app running
authorvunhat_minh <vunhat_minh@dwango.co.jp>
Fri, 25 Jul 2014 04:48:03 +0000 (13:48 +0900)
committervunhat_minh <vunhat_minh@dwango.co.jp>
Fri, 25 Jul 2014 04:48:03 +0000 (13:48 +0900)
rainbowstream/colorset/config
rainbowstream/config.py
rainbowstream/draw.py
rainbowstream/rainbow.py
setup.py

index 4c4c31e..164411a 100644 (file)
@@ -1,4 +1,6 @@
 {
+    // Image on term
+    "IMAGE_ON_TERM" : false,
     // Themes
     "THEME" : "monokai",
     // Ascii Art
index 4645409..dcef9f7 100644 (file)
@@ -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()
index 8bd0c50..29240de 100644 (file)
@@ -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)
index 4c2851f..08fee9e 100644 (file)
@@ -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()
index 6623f15..593dc29 100644 (file)
--- 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 = [