diff options
author | Walter Bender <walter@sugarlabs.org> | 2013-12-09 18:44:26 (GMT) |
---|---|---|
committer | Walter Bender <walter@sugarlabs.org> | 2013-12-09 18:44:26 (GMT) |
commit | 6e8f7e1a2fa41b5857a806aae4031b536f274f06 (patch) | |
tree | f1f3031656630c5c5100489bc3793a869b1b3162 /TurtleArt/talogo.py | |
parent | e0f1bab8dc19dadbf919df629e06be220d455f28 (diff) |
resync with v194
Diffstat (limited to 'TurtleArt/talogo.py')
-rw-r--r-- | TurtleArt/talogo.py | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/TurtleArt/talogo.py b/TurtleArt/talogo.py index ba76085..67aa32c 100644 --- a/TurtleArt/talogo.py +++ b/TurtleArt/talogo.py @@ -29,6 +29,8 @@ from operator import isNumberType import os from os.path import exists as os_path_exists from UserDict import UserDict +import urllib2 +import tempfile try: from sugar.graphics import style @@ -1060,6 +1062,36 @@ class LogoCode: gobject.idle_add(self.tw.send_event, event) os.remove(tmp_file) + def get_from_url(self, url): + """ Get contents of URL as text or tempfile to image """ + if "://" not in url: # no protocol + url = "http://" + url # assume HTTP + try: + req = urllib2.urlopen(url) + except urllib2.HTTPError, e: + debug_output("Couldn't open %s: %s" % (url, e), + self.tw.running_sugar) + raise logoerror(url + ' [%d]' % (e.code)) + except urllib2.URLError, e: + if hasattr(e, 'code'): + debug_output("Couldn't open %s: %s" % (url, e), + self.tw.running_sugar) + raise logoerror(url + ' [%d]' % (e.code)) + else: # elif hasattr(e, 'reason'): + debug_output("Couldn't reach server: %s" % (e), + self.tw.running_sugar) + raise logoerror('#noconnection') + + if req.info().getheader("Content-Type")[0:5] == "image": + # it can't be deleted immediately, or else we won't ever access it + tmp = tempfile.NamedTemporaryFile(delete=False) + tmp.write(req.read()) # prepare for writing + tmp.flush() # actually write it + obj = Media('media', value=tmp.name) + return obj + else: + return req.read() + def showlist(self, objects): """ Display list of media objects """ x = (self.tw.turtles.get_active_turtle().get_xy()[0] / |