diff options
Diffstat (limited to 'lib/Pb/__init__.py')
| -rw-r--r-- | lib/Pb/__init__.py | 64 |
1 files changed, 40 insertions, 24 deletions
diff --git a/lib/Pb/__init__.py b/lib/Pb/__init__.py index eab9878..4a5c75d 100644 --- a/lib/Pb/__init__.py +++ b/lib/Pb/__init__.py @@ -1,5 +1,5 @@ import re -from Config import * +from config import * import time import urllib, urllib2 import sys, os @@ -7,6 +7,10 @@ import random from subprocess import Popen,PIPE,call from Params import Params import sha +import simplejson as json +from _S3 import _S3 +from Db import Db +BASE_URL = "http://i.asdf.us" Request = urllib2.Request urlencode = urllib.urlencode @@ -27,7 +31,7 @@ class Pb(object): self._working_dir = WORKING_DIR self._tag = self.__class__.__name__ self._hashdir = None - self._db_url_param = "NULL" + self._db_url_param = None def _filename_create(self, url=None, namepart="", extension=""): if url: @@ -68,11 +72,15 @@ class Pb(object): raise Exception("Unable to call cmd {}".format(str(cmd))) def _dimensions(self, filepath): - ident = (Popen([BIN_IDENTIFY, filepath], stdout=PIPE).communicate()[0]).split(" ") - return ident[2].split("x") + try: + ident = (Popen([BIN_IDENTIFY, filepath], stdout=PIPE).communicate()[0]).split(" ") + return ident[2].split("x") + except Exception as e: + self.err_warn("Unable to get file dimensions:\n") + self.err_ward(str(e)) - def file_dimensions (self): - return self._dimensions(self.filename) + def _file_dimensions (self): + self.file_width, self.file_height = self._dimensions(self.filepath) def _width_and_height_set(self, filepath=None, width=DEFAULT_WIDTH, height=DEFAULT_HEIGHT): if filepath: @@ -81,9 +89,9 @@ class Pb(object): self.width = width self.height = height - def file_size(self): + def _file_size_get(self): try: - return os.stat(self.filepath)[6] + self.file_size = os.stat(self.filepath)[6] except Exception as e: self.err_warn("Couldn't determine filesize of %s\n" % self.filepath) self.err_warn(str(e)) @@ -119,7 +127,8 @@ class Pb(object): if verbose: sys.stderr.write("generated %s\n" % b.filepath) sys.stderr.write("files created %s\n" % b._files_created) - sys.stderr.write("commands %s" % " ".join(b.commands)) + sys.stderr.write("commands:\n %s\n" % ";\n ".join(b.commands)) + return b @staticmethod def gif_frames(filepath): @@ -139,36 +148,43 @@ class Pb(object): frame = random.choice(_gif_frames) self._call_cmd([BIN_CONVERT, frame, filepath]) - def db_send(self, remote_addr="NULL"): + def db_send(self, remote_addr=None, db_connection=None): try: - db.insert_cmd(**{ + db = db_connection or Db(); + except Exception as e: + sys.stderr.write("Could not connect to db:\n{}".format(e)) + sys.exit(1); + try: + + _insert_data = { 'date' : self._now, 'remote_addr' : remote_addr, - 'username' : self.params.username or "NULL", + 'username' : self.params.username, 'url' : self._db_url_param, 'directory' : self._hashdir, - 'oldfile' : "NULL", #weird - 'newfile' : im.filename, + 'oldfile' : None, + 'newfile' : self.filename, 'dataobj' : json.dumps(dict(self._input_kwargs)), 'cmd' : ";".join(self.commands), 'tag' : self._tag, - }) + } + sys.stderr.write(str(_insert_data)) + db.insert_cmd(**_insert_data) except Exception as e: - self.err_warn("Problem sending to database") - + self.err_warn("Problem sending to database:\n %s" % str(e)) + def file_s3move(self): self._hashdir_create() - s3move(im.filepath, "im/{}/{}".format(self._hashdir, im.filename)) - self._files_created.append(self.filepath) + s3conn = _S3() + s3conn.s3move(self.filepath, "im/{}/{}".format(self._hashdir, self.filename)) self._file_clean_local(); def file_json(self): - dimensions = self.file_dimensions(); return json.dumps({ - 'url' : "im/%s/%s".format(BASE_URL, self._hashdir, self.filename), - 'size' : self.file_size(), - 'width' : "{}px".format(dimensions[0]), - 'height' : "{}px".format(dimensions[1]), + 'url' : "%s/im/%s/%s" % (BASE_URL, self._hashdir, self.filename), + 'size' : self.file_size, + 'width' : "%spx" % self.file_width, + 'height' : "%spx" % self.file_height, }) from Pb.Grid import PbGrid |
