summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xbreaker.py145
-rwxr-xr-xpbserver.py123
2 files changed, 96 insertions, 172 deletions
diff --git a/breaker.py b/breaker.py
index 99e711b..33dcba9 100755
--- a/breaker.py
+++ b/breaker.py
@@ -131,7 +131,7 @@ class Breaker():
self.now = now()
self.tag = "imBreak"
self.commands = [];
- self.required_keys = [
+ self._required_keys = [
"url",
"breaktype",
"finalformat",
@@ -141,7 +141,7 @@ class Breaker():
"expanded"
]
self.files_created = []
- for k in self.required_keys:
+ for k in self._required_keys:
if k in params:
if k == 'breaktype':
self.params['breaktype'] = self._get_breaktype(params[k])
@@ -155,22 +155,22 @@ class Breaker():
self.params = dotdict(self.params)
- self.basename, self.first_format = self._get_filename();
- self.downloaded_file = os.path.join(WORKING_DIR, "IMBREAKTMP{}.{}".format(self.basename, self.first_format))
+ self.basename, self._first_format = self._get_filename();
+ self._downloaded_file = os.path.join(WORKING_DIR, "IMBREAKTMP{}.{}".format(self.basename, self._first_format)) # same here
try:
- download(self.params.url, self.downloaded_file)
- self.files_created.append(self.downloaded_file)
+ download(self.params.url, self._downloaded_file)
+ self.files_created.append(self._downloaded_file)
except Exception as e:
sys.stderr.write(str(e))
raise;
- self.gif_frames = gif_frames(self.downloaded_file)
- self.gif_frames = self.gif_frames if len(self.gif_frames) > 1 else False
- self.width, self.height = dimensions(self.downloaded_file)
+ self._gif_frames = gif_frames(self._downloaded_file)
+ self._gif_frames = self._gif_frames if len(self._gif_frames) > 1 else False
+ self.width, self.height = dimensions(self._downloaded_file) # same here
if not self.params.finalformat:
self.params.finalformat = DEFAULT_FINALFORMAT
- if self.gif_frames:
+ if self._gif_frames:
self.params.finalformat = 'gif'
if self.params.breaktype == 'miff':
self.params.finalformat = 'jpg'
@@ -178,8 +178,20 @@ class Breaker():
#final filepath is stored in self.filepath
self.filename = "{}.{}".format(self.basename, self.params.finalformat)
self.filepath = os.path.join(WORKING_DIR, self.filename)
- self.conversion_file = os.path.join(WORKING_DIR, "IMBREAKTMP{}.{}".format(self.basename, self.params.breaktype))
+ #lets go back to this in a second
+ self._conversion_file = os.path.join(WORKING_DIR, "IMBREAKTMP{}.{}".format(self.basename, self.params.breaktype)) # this
+
+ def _call_cmd(self, cmd, error=""):
+ try:
+ call(cmd)
+ self.commands.append(" ".join(cmd));
+ except Exception as e:
+ if error:
+ sys.stderr.write(error)
+ else:
+ sys.stderr.write(str(e))
+
def _get_breaktype(self, key):
#{{{ conversion table
breaktypeTranslate = {
@@ -228,27 +240,17 @@ class Breaker():
#{{{#########rotatefunctions#######################################
def _rotate(self):
- try:
- call([BIN_CONVERT,self.downloaded_file,"-rotate",self.params.breakangle,"+repage",self.downloaded_file])
- except Exception as e:
- sys.stderr.write(str(e))
- raise;
+ cmd = [BIN_CONVERT,self._downloaded_file,"-rotate",self.params.breakangle,"+repage",self._downloaded_file]
+ self._call_cmd(cmd)
+
def _rotate_back(self):
- try:
- angle = str(360-int(self.params.breakangle))
- call([BIN_CONVERT,self.filepath,"-rotate",angle,"+repage",self.filepath])
- except Exception as e:
- sys.stderr.write(str(e))
- raise;
+ angle = str(360-int(self.params.breakangle))
+ cmd = [BIN_CONVERT,self.filepath,"-rotate",angle,"+repage",self.filepath]
+ self._call_cmd(cmd)
if not self.params.expanded:
- try:
- call(
- [BIN_CONVERT,self.filepath,"-gravity","Center","-crop","{}x{}+0+0".format(
- self.width, self.height),"+repage",self.filepath
- ])
- except Exception as e:
- sys.stderr.write(str(e))
- raise;
+ cmd = [BIN_CONVERT,self.filepath,"-gravity","Center","-crop","{}x{}+0+0".format(
+ self.width, self.height),"+repage",self.filepath]
+ self._call_cmd(cmd)
#}}}
def _subtle_break(self):
#assume the header is no longer than HEADER_OFFSET bytes
@@ -271,34 +273,26 @@ class Breaker():
self.file_data = newfile[0:len(self.file_data)]
def _choose_frame(self):
- frame = random.choice(self.gif_frames)
- try:
- call([BIN_CONVERT, frame, self.downloaded_file])
- except Exception as e:
- sys.stderr.write(str(e))
- raise;
+ frame = random.choice(self._gif_frames)
+ cmd = [BIN_CONVERT, frame, self._downloaded_file]
+ self._call_cmd(cmd)
def _enforce_jpg(self):
- if self.params.breaktype in [ "exr", "bmp", "miff" ] and not re.match(r'jpe?g', self.first_format, re.IGNORECASE):
+ if self.params.breaktype in [ "exr", "bmp", "miff" ] and not re.match(r'jpe?g', self._first_format, re.IGNORECASE):
jpg_file = os.path.join(WORKING_DIR, "{}.{}".format(self.basename, "jpg"))
- try:
- call([BIN_CONVERT,self.downloaded_file,jpg_file])
- call(["rm",self.downloaded_file])
- self.downloaded_file = jpg_file
- except Exception as e:
- sys.stderr.write(str(e))
- raise;
+ cmd = [BIN_CONVERT,self._downloaded_file,jpg_file]
+ self._call_cmd(cmd)
+ cmd = ["rm",self._downloaded_file]
+ self._call_cmd(cmd)
+
def _first_conversion(self):
- if self.first_format == self.params.breaktype:
- self.downloaded_file = self.conversion_file
+ if self._first_format == self.params.breaktype:
+ self._downloaded_file = self._conversion_file
return
- try:
- call([BIN_CONVERT, self.downloaded_file, self.conversion_file]);
- self.files_created.append(self.conversion_file)
- except Exception as e:
- sys.stderr.write(str(e))
- raise;
+ cmd = [BIN_CONVERT, self._downloaded_file, self._conversion_file]
+ self._call_cmd(cmd)
+ self.files_created.append(self._conversion_file)
def _read_data(self, filepath):
f = open(filepath, 'r');
@@ -307,13 +301,13 @@ class Breaker():
return data
def _prepare_filedata(self):
- if self.gif_frames:
+ if self._gif_frames:
self._choose_frame()
if self.params.breakangle:
self._rotate()
self._enforce_jpg();
self._first_conversion();
- self.file_data = self._read_data(self.conversion_file)
+ self.file_data = self._read_data(self._conversion_file)
if not self.file_data:
sys.stderr.write("Unable to get file_data")
raise;
@@ -323,49 +317,28 @@ class Breaker():
self._subtle_break()
elif breakmode == "extreme":
self._extreme_break()
- f = open(self.conversion_file, 'w')
+ f = open(self._conversion_file, 'w')
f.write(self.file_data)
f.close();
#{{{ SHRINK (UNUSED)
def _shrink(self):
- cmd = [ BIN_CONVERT, "-resize", "500x500", self.downloaded_file, self.downloaded_file ];
- try:
- call(cmd)
- self.commands.append(" ".join(cmd));
- except Exception as e:
- sys.stderr.write(str(e))
- raise;
+ cmd = [ BIN_CONVERT, "-resize", "500x500", self._downloaded_file, self._downloaded_file ];
+ self._call_cmd(cmd)
#}}}
def _final_conversion(self):
- cmd = [BIN_CONVERT, self.conversion_file, self.filepath]
- try:
- call(cmd)
- self.commands.append(" ".join(cmd));
- except Exception as e:
- sys.stderr.write(str(e))
- raise;
- #handle multiple files created by psd and psb
+ cmd = [BIN_CONVERT, self._conversion_file, self.filepath]
+ self._call_cmd(cmd)
def psd_psbfilepath(num):
return os.path.join(WORKING_DIR, "{}-{}.{}".format(self.basename, num, self.params.finalformat))
if self.params.breaktype == 'psd':
cmd = ['mv', psd_psbfilepath(1), self.filepath]
- try:
- call(cmd)
- self.commands.append(" ".join(cmd));
- except Exception as e:
- sys.stderr.write(str(e))
- raise
+ self._call_cmd(cmd)
self.files_created.append(psd_psbfilepath(0))
if self.params.breaktype == 'psb':
cmd = ['mv', psd_psbfilepath(0), self.filepath]
- try:
- call(cmd)
- self.commands.append(" ".join(cmd));
- except Exception as e:
- sys.stderr.write(str(e))
- raise
+ self._call_cmd(cmd)
self.files_created.append(psd_psbfilepath(1))
if self.params.breakangle:
@@ -373,12 +346,7 @@ class Breaker():
def _cleanup(self):
cmd = ["rm"]+self.files_created
- try:
- call(cmd)
- self.commands.append(" ".join(cmd));
- except Exception as e:
- sys.stderr.write(str(e))
- raise
+ self._call_cmd(cmd)
def create(self, breakmode=""):
if not breakmode: breakmode = self.params.breakmode
@@ -387,7 +355,6 @@ class Breaker():
self._final_conversion()
self._cleanup()
-
if __name__ == "__main__":
b = Breaker(TEST_PARAMS)
b.create();
diff --git a/pbserver.py b/pbserver.py
index 82198ab..cea6314 100755
--- a/pbserver.py
+++ b/pbserver.py
@@ -6,7 +6,6 @@ from imgrid import Imgrid
from breaker import Breaker
from s3config import AWS_SECRET_ACCESS_KEY, AWS_ACCESS_KEY_ID, BUCKET_NAME
-
import os
import sys
import db
@@ -17,11 +16,11 @@ from subprocess import call, Popen, PIPE
import simplejson as json
BIN_IDENTIFY = "/usr/bin/identify"
-#try:
-# DB = db.db ()
-#except Exception as e:
-# sys.stderr.write("Could not connect to db:\n{}".format(e))
-# sys.exit(1);
+try:
+ DB = db.db ()
+except Exception as e:
+ sys.stderr.write("Could not connect to db:\n{}".format(e))
+ sys.exit(1);
BASE_URL = "http://i.asdf.us"
def hashdir(filename):
@@ -77,36 +76,42 @@ def insert_cmd (date, remote_addr, username, url, directory, oldfile, newfile, c
sys.stderr.write(str(e))
return
+def return_image(im, insert_url="NULL"):
+ directory = hashdir(im.filename)
+ dimensions = bin_identify(im.filepath)
+ objectname = "{}/{}".format(directory, im.filename)
+ try:
+ s3move(im.filepath, objectname)
+ # return "{}\n{}\n{}\n{}\n{}\n{}\n{}\n{}".format(
+ insert_cmd(
+ im.now,
+ request.environ.get('REMOTE_ADDR'),
+ im.params['username'] or "NULL",
+ insert_url,
+ directory,
+ "NULL",
+ im.filename,
+ ";".join(im.commands),
+ json.dumps(im.params),
+ im.tag,
+ )
+ return json.loads({
+ 'url' : "{}/{}".format(BASE_URL, objectname)
+ 'size' : file_size(im.filepath),
+ 'width' : "{}px".format(dimensions[0]),
+ 'height' : "{}px".format(dimensions[1]),
+ })
+ except Exception as e:
+ sys.stderr.write(str(e))
+ raise;
+
+
@post('/gradient')
def gradient():
try:
im = Gradient(request.forms)
im.create();
- directory = hashdir(im.filename)
- dimensions = bin_identify(im.filepath)
- objectname = "{}/{}".format(directory, im.filename)
-# s3move(im.filepath, objectname)
- return(im.filepath, objectname)
-# return "{}\n{}\n{}\n{}\n{}\n{}\n{}\n{}".format(
-# insert_cmd(
-# im.now,
-# request.environ.get('REMOTE_ADDR'),
-# im.params['username'] or "NULL",
-# "NULL",
-# directory,
-# "NULL",
-# im.filename,
-# ";".join(im.commands),
-# json.dumps(im.params),
-# im.tag,
-# )
- return json.loads({
- 'url' : "{}/{}".format(BASE_URL, objectname)
- 'size' : file_size(im.filepath),
- 'width' : "{}px".format(dimensions[0]),
- 'height' : "{}px".format(dimensions[1]),
- })
- #URL, FILESIZE, WIDTH, HEIGHT to replace index.html
+ return return_image(im)
except Exception as e:
sys.stderr.write(str(e))
raise;
@@ -116,67 +121,19 @@ def imgrid():
try:
im = Imgrid(request.forms)
im.create();
- directory = hashdir(im.filename)
- dimensions = bin_identify(im.filepath)
- objectname = "{}/{}".format(directory, im.filename)
-# s3move(im.filepath, objectname)
- return(im.filepath, objectname)
-# return "{}\n{}\n{}\n{}\n{}\n{}\n{}\n{}\n{}".format(
-# insert_cmd(
-# im.now,
-# request.environ.get('REMOTE_ADDR'),
-# im.params['username'] or "NULL",
-# im.params.imageinstead or im.params.bgimage or im.params.planebgimage or "NULL",
-# directory,
-# "NULL",
-# im.filename,
-# ";".join(im.commands),
-# json.dumps(im.params),
-# im.tag,
-# )
- return json.loads({
- 'url' : "{}/{}".format(BASE_URL, objectname)
- 'size' : file_size(im.filepath),
- 'width' : "{}px".format(dimensions[0]),
- 'height' : "{}px".format(dimensions[1]),
- })
- #URL, FILESIZE, WIDTH, HEIGHT to replace main.js
+ return return_image(im, im.params.imageinstead or im.params.bgimage or im.params.planebgimage or "NULL")
except Exception as e:
sys.stderr.write(str(e))
- raise;
+ return json.load({ 'error' : 'Request could not be processed' })
@post('/breaker')
def breaker():
try:
im = Breaker(request.forms)
im.create();
- directory = hashdir(im.filename)
- dimensions = bin_identify(im.filepath)
- objectname = "{}/{}".format(directory, im.filename)
-# s3move(im.filepath, objectname)
- return(im.filepath, objectname)
-# return "{}\n{}\n{}\n{}\n{}\n{}\n{}\n{}".format(
-# insert_cmd(
-# im.now,
-# request.environ.get('REMOTE_ADDR'),
-# im.params['username'] or "NULL",
-# im.params['url'],
-# directory,
-# "NULL",
-# im.filename,
-# ";".join(im.commands),
-# json.dumps(im.params),
-# im.tag,
-# )
- return json.loads({
- 'url' : "{}/{}".format(BASE_URL, objectname)
- 'size' : file_size(im.filepath),
- 'width' : "{}px".format(dimensions[0]),
- 'height' : "{}px".format(dimensions[1]),
- })
- #URL, FILESIZE, WIDTH, HEIGHT to replace main.js make sure you use px
+ return return_image(im, im.params['url'])
except Exception as e:
sys.stderr.write(str(e))
- raise;
+ return json.load({ 'error' : 'Request could not be processed' })
run(host='0.0.0.0', port=8999, debug=True)