diff options
| author | yo mama <pepper@scannerjammer.com> | 2015-09-13 23:42:58 -0700 |
|---|---|---|
| committer | yo mama <pepper@scannerjammer.com> | 2015-09-13 23:42:58 -0700 |
| commit | 5628ec9b1a2dc329c4d144c694f379ef5c055531 (patch) | |
| tree | 6d3a85f74ff99c8d6c571c53a56e5d6d4f83f6d8 /Pb/Pattern/__init__.py | |
| parent | 20606739f1357ec3e21f244523816754fc58572d (diff) | |
ok cleaning up the last few modules
Diffstat (limited to 'Pb/Pattern/__init__.py')
| -rwxr-xr-x | Pb/Pattern/__init__.py | 115 |
1 files changed, 21 insertions, 94 deletions
diff --git a/Pb/Pattern/__init__.py b/Pb/Pattern/__init__.py index 7c53746..0018fd9 100755 --- a/Pb/Pattern/__init__.py +++ b/Pb/Pattern/__init__.py @@ -1,4 +1,3 @@ -#!/usr/bin/python2.7 import os import sys import random @@ -13,50 +12,33 @@ import uuid _fuse_mode="Pin_Light" -class Impattern(Pb): - def __init__(self, **kwargs): - self.params = {} - self.tag = "imPattern"; - self._pid = str(os.getpid()) - self.commands = []; - self._now = self.now() - self.height = "" - self.width = "" - self._required_keys = [ - #FIXME change name to username in js - #FIXME change js api - "pattern_url", - "pattern_data", - "username", - "image_url", - ] - self.files_created = [] - for k in self._required_keys: - if k in kwargs: - if k in [ 'pattern_url', 'image_url' ]: - self.params[k] = kwargs[k] - elif k == 'pattern_data': - self.params[k] = kwargs[k] #FIXME add conversion data - else: - self.params[k] = self.sanitize(kwargs[k]) - else: - self.params[k] = False; - - if not self.params['image_url']: - sys.stderr.write('no image url'); - raise ValueError - self.params = self.make_dotdict(self.params) +class PbPattern(Pb): + example_params = { + # "pattern_url" : "http://asdf.us/impattern/patterns/1.png", + "pattern_data" : '{"matrix":[["0","0","0","0","0","1","0","0","0","0"],["0","0","0","0","1","1","1","0","0","0"],["0","0","1","1","1","0","1","0","0","0"],["0","1","1","0","0","0","0","0","0","0"],["0","1","0","0","1","0","0","0","0","0"],["0","1","0","0","1","0","0","0","1","0"],["0","1","0","0","1","1","0","0","1","0"],["0","1","0","0","0","1","1","1","1","0"],["0","1","1","1","1","0","0","0","0","0"],["0","0","0","0","1","0","0","0","0","0"]],"width":"10","height":"10"}', + # "username" : "garfield", + "image_url" : "http://i.asdf.us/im/be/PinkHijab_1425078647_reye.gif", + } + def __init__(self, + pattern_url=None, + pattern_data=None, + username=None, + image_url=None, + ): + super(PbPattern,self).__init__(); + + self.params.set_val("image_url", url, value_type="img_url"); + self.params.set_val("pattern_url", url, value_type="img_url"); + self.params.set_val("pattern_data", url, value_type="json"); + self.params.set_val("username", username, value_type="string"); self.basename, self._format = self._get_filename(); #FIXME omit file extension for downloaded files - self._downloaded_file = os.path.join(WORKING_DIR, "IMPATTERNTMP_DL{}_{}.{}".format(self.basename, self._pid, self._format)) # same here #lets go back to this in a second self._pattern_file = os.path.join(WORKING_DIR, "IMPATTERNTMP_PTN{}_{}.{}".format(self.basename, self._pid, self._format)) # this self._download(self.params.image_url, self._downloaded_file) - self.width, self.height = self.dimensions(self._downloaded_file) # same here - self.filename = "{}.{}".format(self.basename, self._format) self.filepath = os.path.join(WORKING_DIR, self.filename) @@ -68,21 +50,6 @@ class Impattern(Pb): sys.stderr.write("pattern must be supplied as json array or as a png url") raise ValueError; - def _download(self, url, dest): - try: - self.download(url, dest) - self.files_created.append(dest) - except Exception as e: - sys.stderr.write(str(e)) - raise; - - def _call_cmd(self, cmd): - try: - self.call_cmd(cmd) - self.commands.append(" ".join(cmd)); - except Exception: - raise Exception("Unable to call cmd {}".format(str(cmd))) - def _from_pattern_data(self): def boolToColor(boolean): if boolean: @@ -101,40 +68,10 @@ class Impattern(Pb): img.save(self._pattern_file, "PNG") - - def _get_filename (self): - url = self.params.image_url - name_part = ""; - file_format = ""; - if "?" in url: - url = url.split("?")[0] - if "/" in url: - url = urllib.unquote(url).replace(" ","") - name_part = url.split("/")[-1] - try: - parts = name_part.split(".") - name_part = self.sanitize(parts[-2]) - file_format = self.sanitize(parts[-1]) - if not name_part or not file_format: - sys.stderr.write( "Incompatible input file type") - raise; - except Exception as e: - sys.stderr.write( "Incompatible input file type") - raise; - else: - sys.stderr.write( "Incompatible url") - raise; - if (len(name_part) > 20): - name_part = name_part[:-20] - return "{}{}_{}_{}".format(self.tag, name_part, self._now, self.params.username or ""), file_format - - def _cleanup(self): - cmd = ["rm"]+self.files_created - self._call_cmd(cmd) - #first step def _make_canvas(self): - cmd = [BIN_CONVERT,"-size",self.width+"x"+self.height,"canvas:transparent", self.filepath] + _width, _height = self.dimensions(self._downloaded_file) # same here + cmd = [BIN_CONVERT, "-size", _width + "x" + _height, "canvas:transparent", self.filepath] self._call_cmd(cmd) #second step use the Canvas as a background @@ -160,13 +97,3 @@ class Impattern(Pb): self._make_mask() self._fuse_mask(); -if __name__ == "__main__": - TEST_PARAMS = { - # "pattern_url" : "http://asdf.us/impattern/patterns/1.png", - "pattern_data" : '{"matrix":[["0","0","0","0","0","1","0","0","0","0"],["0","0","0","0","1","1","1","0","0","0"],["0","0","1","1","1","0","1","0","0","0"],["0","1","1","0","0","0","0","0","0","0"],["0","1","0","0","1","0","0","0","0","0"],["0","1","0","0","1","0","0","0","1","0"],["0","1","0","0","1","1","0","0","1","0"],["0","1","0","0","0","1","1","1","1","0"],["0","1","1","1","1","0","0","0","0","0"],["0","0","0","0","1","0","0","0","0","0"]],"width":"10","height":"10"}', - # "username" : "garfield", - "image_url" : "http://i.asdf.us/im/be/PinkHijab_1425078647_reye.gif", - } - p = Pattern(**TEST_PARAMS) - p.create() - |
