diff options
Diffstat (limited to 'breaker.py')
| -rwxr-xr-x | breaker.py | 145 |
1 files changed, 56 insertions, 89 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(); |
