summaryrefslogtreecommitdiff
path: root/lib/Pb/__init__.py
diff options
context:
space:
mode:
Diffstat (limited to 'lib/Pb/__init__.py')
-rw-r--r--lib/Pb/__init__.py64
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