From e8454596eac043f21da284b311efdc31b979db17 Mon Sep 17 00:00:00 2001 From: Christophe Dumez Date: Fri, 27 Mar 2009 14:34:30 +0000 Subject: [PATCH] - Force UTF-8 printing to terminal --- src/search_engine/nova2.py | 7 +++---- src/search_engine/novaprinter.py | 20 ++++++++++++++------ 2 files changed, 17 insertions(+), 10 deletions(-) diff --git a/src/search_engine/nova2.py b/src/search_engine/nova2.py index 1ef4dfa38..ad74f5ed2 100755 --- a/src/search_engine/nova2.py +++ b/src/search_engine/nova2.py @@ -100,16 +100,15 @@ if __name__ == '__main__': what = '+'.join(sys.argv[2:]) threads = [] for engine in engines_list: - if 1: - #try: + try: if THREADED: exec "l = EngineLauncher(%s(), what)" % engine threads.append(l) l.start() else: engine().search(what) - #except: - # pass + except: + pass if THREADED: for t in threads: t.join() diff --git a/src/search_engine/novaprinter.py b/src/search_engine/novaprinter.py index b07c2e784..f3fdc8b5b 100644 --- a/src/search_engine/novaprinter.py +++ b/src/search_engine/novaprinter.py @@ -1,4 +1,4 @@ -#VERSION: 1.2 +#VERSION: 1.3 # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions are met: @@ -24,13 +24,21 @@ # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE # POSSIBILITY OF SUCH DAMAGE. +import sys + +# Force UTF-8 printing +from ctypes import pythonapi, py_object, c_char_p +PyFile_SetEncoding = pythonapi.PyFile_SetEncoding +PyFile_SetEncoding.argtypes = (py_object, c_char_p) +PyFile_SetEncoding(sys.stdout, "UTF-8") + def prettyPrinter(dictionnary): - if isinstance(dictionnary['size'], str): - dictionnary['size'] = dictionnary['size'].decode('utf-8') + # Convert everything to unicode for safe printing + for key,value in dictionnary.items(): + if isinstance(dictionnary[key], str): + dictionnary[key] = unicode(dictionnary[key], 'utf-8') dictionnary['size'] = anySizeToBytes(dictionnary['size']) - if isinstance(dictionnary['name'], unicode): - dictionnary['name'] = dictionnary['name'].encode('utf-8') - print dictionnary['link'],'|',dictionnary['name'],'|',dictionnary['size'],'|',dictionnary['seeds'],'|',dictionnary['leech'],'|',dictionnary['engine_url'] + print u"%s|%s|%s|%s|%s|%s"%(dictionnary['link'],dictionnary['name'],dictionnary['size'],dictionnary['seeds'],dictionnary['leech'],dictionnary['engine_url']) def anySizeToBytes(size_string): """