]> jfr.im git - z_archive/twitter.git/blobdiff - twitter/util.py
twitter-archiver and twitter-follow initial import
[z_archive/twitter.git] / twitter / util.py
index b0a1f48e854d46f5845fc9e57157ae2f024c2778..27142af5636f22d2593994f6e2450533148a78fe 100644 (file)
@@ -5,9 +5,12 @@ Internal utility functions.
     http://wiki.python.org/moin/EscapingHtml
 """
 
+from __future__ import print_function
 
 import re
 import sys
+import time
+
 try:
     from html.entities import name2codepoint
     unichr = chr
@@ -43,3 +46,32 @@ def printNicely(string):
         print(string.encode('utf8'))
 
 __all__ = ["htmlentitydecode", "smrt_input"]
+
+def err(msg=""):
+    print(msg, file=sys.stderr)
+
+class Fail(object):
+    """A class to count fails during a repetitive task.
+
+    Args:
+        maximum: An integer for the maximum of fails to allow.
+        exit: An integer for the exit code when maximum of fail is reached.
+
+    Methods:
+        count: Count a fail, exit when maximum of fails is reached.
+        wait: Same as count but also sleep for a given time in seconds.
+    """
+    def __init__(self, maximum=10, exit=1):
+        self.i = maximum
+        self.exit = exit
+
+    def count(self):
+        self.i -= 1
+        if self.i == 0:
+            err("Too many consecutive fails, exiting.")
+            raise SystemExit(self.exit)
+
+    def wait(self, delay=0):
+        self.count()
+        if delay > 0:
+            time.sleep(delay)