diff options
Diffstat (limited to 'Pb/Imlandscape/__init__.py')
| -rwxr-xr-x | Pb/Imlandscape/__init__.py | 87 |
1 files changed, 87 insertions, 0 deletions
diff --git a/Pb/Imlandscape/__init__.py b/Pb/Imlandscape/__init__.py new file mode 100755 index 0000000..59212a6 --- /dev/null +++ b/Pb/Imlandscape/__init__.py @@ -0,0 +1,87 @@ +#!/usr/bin/python2.7 +import sys +import random +import re +import urllib +import urlparse +from Config import * +import Pb +import base64 +import time +import string +from subprocess import Popen, PIPE +import sha +import simplejson as json +from Pb import Pb + +import mimetypes + +class Imlandscape(Pb): + def __init__(self, **kwargs): + sys.stderr.write("inside init"); + sys.stderr.write(str(kwargs)) + return; + self.params = {} + self.tag = "imlandscape" + self.commands = []; + self._required_keys = [ + "heightmap", + "imgdata", + "texture", + "name", + ] + self._now = self.now() + self.files_created = [] + for k in self._required_keys: + if k in kwargs: + self.params[k] = kwargs[k] + else: + self.params[k] = self.bool_correct(self.sanitize(kwargs[k])) + + def _filename_from_url (self, url, name=""): + if "?" in url: + url = url.split("?")[0] + if "/" in url: + url = urllib.unquote(url).replace(" ","") + filename = url.split("/")[-1] + filetype = "png" + filename = sanitize(filename[:-4]) + else: + filename = "" + if name != "": + name = name+"_" + return "{}_{}{}_{}.{}".format("imlandscape", name, filename,self._now, "png") + + def _saveImgData(self, imgdata, filename): + try: +# up = urlparse.urlparse(url) +# head, data = imgdata.split(',', 1) +# bits = head.split(';') + parts = imgdata.split(';') + mime_type = parts[0] if parts[0] else 'text/plain' + data = parts[1] + charset, b64 = 'ASCII', False + for part in parts[1]: + if part.startswith('charset='): + charset = part[8:] + elif part == 'base64': + b64 = True + + # Do something smart with charset and b64 instead of assuming + if b64: + plaindata = base64.b64decode(data) + else: + plaindata = data + with open(filename, 'wb') as f: + f.write(plaindata) + except Exception as e: + sys.stderr.write("ERROR: {}\n".format(str(e))); + +# def _cleanup(self): +# cmd = ["rm"]+self.files_created +# self._call_cmd(cmd) + + def create(self, breakmode=""): + self.filepath = self._filename_from_url(self.params.get('texture',""), self.params.get('name',"")); + self._saveImgData(self.params.get('imgdata'), self.filepath); + |
