diff options
Diffstat (limited to 'pb/imlandscape_other.py')
| -rwxr-xr-x | pb/imlandscape_other.py | 101 |
1 files changed, 101 insertions, 0 deletions
diff --git a/pb/imlandscape_other.py b/pb/imlandscape_other.py new file mode 100755 index 0000000..60f1fef --- /dev/null +++ b/pb/imlandscape_other.py @@ -0,0 +1,101 @@ +#!/usr/bin/python2.7 +import os +import sys +import random +import re +import pb.lib.utils as utils +import urllib +import urlparse +from pb.config import * + +import base64 +import time +import string +import urllib +from subprocess import Popen, PIPE +import sha +import simplejson as json + +import mimetypes + +class Imlandscape(object): + def __init__(self, **kwargs): + self.params = {} + self.tag = "imlandscape" + self.commands = []; + self._required_keys = [ + "heightmap", + "imgdata", + "texture", + "name", + ] + self.now = utils.now() + self.files_created = [] + for k in self._required_keys: + if k in kwargs: + self.params[k] = kwargs[k] + else: + self.params[k] = utils.bool_correct(utils.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); + +if __name__ == "__main__": + f = open("/tmp/base64img") + data = f.read() + f.close() + TEST_PARAMS = { + "heightmap" : "https%3A%2F%2Fwww.google.com%2Fimages%2Fsrpr%2Flogo11w.png" , + "imgdata" : data, + "texture" : "https%3A%2F%2Fwww.google.com%2Fimages%2Fsrpr%2Flogo11w.png", + "name" : "pepper", + } + b = Imlandscape(**TEST_PARAMS) + b.create(); + print b.filepath + + |
