X-Git-Url: https://jfr.im/git/z_archive/twitter.git/blobdiff_plain/c34d321e621d3a85c4b3daaaca4bfce9b1b13e79..8fccbe95ab0b1b1fa24dd415943fe5f9264d133f:/twitter/util.py diff --git a/twitter/util.py b/twitter/util.py index 48c131f..8d3bd8a 100644 --- a/twitter/util.py +++ b/twitter/util.py @@ -10,6 +10,7 @@ from __future__ import print_function import contextlib import re import sys +import textwrap import time import socket @@ -48,6 +49,8 @@ def printNicely(string): if hasattr(sys.stdout, 'buffer'): sys.stdout.buffer.write(string.encode('utf8')) print() + sys.stdout.buffer.flush() + sys.stdout.flush() else: print(string.encode('utf8')) @@ -119,15 +122,22 @@ def follow_redirects(link, sites= None): try: with contextlib.closing(opener.open(req,timeout=1)) as site: return site.url - except (urllib2.HTTPError, urllib2.URLError, socket.timeout): + except: return redirect_handler.last_url if redirect_handler.last_url else link def expand_line(line, sites): """Expand the links in the line for the given sites.""" - l = line.strip() - msg_format, links = find_links(l) - args = tuple(follow_redirects(l, sites) for l in links) - return msg_format % args + try: + l = line.strip() + msg_format, links = find_links(l) + args = tuple(follow_redirects(l, sites) for l in links) + line = msg_format % args + except Exception as e: + try: + err("expanding line %s failed due to %s" % (line, unicode(e))) + except: + pass + return line def parse_host_list(list_of_hosts): """Parse the comma separated list of hosts.""" @@ -135,3 +145,12 @@ def parse_host_list(list_of_hosts): m.group(1) for m in re.finditer("\s*([^,\s]+)\s*,?\s*", list_of_hosts)) return p + +def align_text(text, left_margin=17, max_width=160): + lines = [] + for line in text.split('\n'): + temp_lines = textwrap.wrap(line, max_width - left_margin) + temp_lines = [(' ' * left_margin + line) for line in temp_lines] + lines.append('\n'.join(temp_lines)) + ret = '\n'.join(lines) + return ret.lstrip()