diff options
| -rwxr-xr-x | breaker.py | 145 | ||||
| -rwxr-xr-x | pbserver.py | 123 |
2 files changed, 96 insertions, 172 deletions
@@ -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) |
