diff options
Diffstat (limited to 'Pb/__init__.py')
| -rw-r--r-- | Pb/__init__.py | 49 |
1 files changed, 36 insertions, 13 deletions
diff --git a/Pb/__init__.py b/Pb/__init__.py index f584f00..5e5aa65 100644 --- a/Pb/__init__.py +++ b/Pb/__init__.py @@ -5,7 +5,9 @@ import urllib import urllib2 import sys import os +import random from subprocess import Popen,PIPE,call +from Pb.Params import Params Request = urllib2.Request urlencode = urllib.urlencode urlopen = urllib2.urlopen @@ -13,14 +15,15 @@ urlopen = urllib2.urlopen class Pb(object): def __init__(self): - pass; + self.params = Params(); + self._working_dir = WORKING_DIR - @staticmethod - def call_cmd(cmd, error=""): + def _call_cmd(self, cmd): try: call(cmd) except Exception as e: - raise (str(e)) + self.err_warn("Could not call cmd: {}".format(str(cmd))) + self.err_warn(str(e)) @staticmethod def is_color(s): @@ -130,14 +133,34 @@ class Pb(object): sys.stderr.write(str(e)) raise; - @staticmethod - def make_dotdict(d): - return dotdict(d) + def tempname_create(self, basename=None, fmt="png"): + if not basename: basename = self.random_string_create() + return os.path.join(self._working_dir, "{}{}.{}".format(self.__class__.__name__, basename, fmt)) # this + + def _get_filename_and_type_from_url (self, url): + name = re.sub(r'(?:\s|\?.*|.*/)', '', urllib.unquote(url)); + try: + basename, ext = map(lambda s: self.santize(s), re.search(r'(^.*)\.(.*$)', name).groups()); + except Exception as e: + self.err_warn("Incompatible input file type") + if (len(name_part) > 20): + name_part = name_part[:-20] + return "{}{}_{}_{}".format(self.tag, basename, self._now, self.params.username or ""), ext + + def random_string_create(self): + return "{}".format(random.uniform(0, 100000)); + + + def _file_read(self, filepath): + f = open(filepath, 'r'); + data = f.read() + f.close() + return data -class dotdict(dict): - """dot.notation access to dictionary attributes""" - def __getattr__(self, attr): - return self.get(attr) - __setattr__= dict.__setitem__ - __delattr__= dict.__delitem__ + def err_warn(self, s): + sys.stderr.write("ERROR:{} - {}\n".format(self.__class__.__name__, s)) + + def err_fatal(self, s): + sys.stderr.write("ERROR[FATAL]:{} - {}\n".format(self.__class__.__name__, s)) + sys.exit(1); |
