summaryrefslogtreecommitdiff
path: root/Pb/Pattern
diff options
context:
space:
mode:
authoryo mama <pepper@scannerjammer.com>2015-09-13 23:42:58 -0700
committeryo mama <pepper@scannerjammer.com>2015-09-13 23:42:58 -0700
commit5628ec9b1a2dc329c4d144c694f379ef5c055531 (patch)
tree6d3a85f74ff99c8d6c571c53a56e5d6d4f83f6d8 /Pb/Pattern
parent20606739f1357ec3e21f244523816754fc58572d (diff)
ok cleaning up the last few modules
Diffstat (limited to 'Pb/Pattern')
-rwxr-xr-xPb/Pattern/__init__.py115
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()
-