Skip to content

Instantly share code, notes, and snippets.

@saga
Created April 30, 2010 00:19
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save saga/384498 to your computer and use it in GitHub Desktop.
Save saga/384498 to your computer and use it in GitHub Desktop.
def get_content_type():
return 'application/octet-stream'
def parse_xml(key,xml):
""" Simple XML parser """
key = key.lower()
for tag in xml.split("<"):
tokens = tag.split()
if tokens and tokens[0].lower().startswith(key):
return tag.split(">")[1].strip()
from google.appengine.ext import webapp
from google.appengine.api import urlfetch
from google.appengine.ext.webapp.util import run_wsgi_app
import logging
from django.utils import simplejson
import urllib
import base64
def getImgur(url):
filename = url
logging.debug('url : %s' % filename)
filename = filename.replace('%3A', ':', 1)
payload_data=urllib.urlencode({"key": "apply_your_key_in_imgur.com", "image":filename})
s = urlfetch.fetch("http://imgur.com/api/upload.json", method=urlfetch.POST, payload=payload_data)
result = s.content.replace("\\/", "/")
logging.debug('getImgur response : %s' % result)
data1 = simplejson.loads(result)
return data1['rsp']['image']['original_image']
def getYfrog(url):
filename = url
logging.debug('url : %s' % filename)
filename = filename.replace('%3A', ':', 1)
boundary = '-------tHISiStheMulTIFoRMbOUNDaRY'
crlf = '\r\n'
l = []
fields = [('url', filename), ('username', 'your_twitter_name'), ('password', 'your_twitter_password'), ('key', 'apply_your_developer_key_in_Yfrog'), ('source', 'yfrog')]
for (key, value) in fields:
l.append('--' + boundary)
l.append('Content-Disposition: form-data; name="%s"' % str(key))
l.append('')
l.append(str(value))
l.append('--' + boundary)
l.append('Content-Disposition: form-data; name="media"; filename="%s"' % (str(filename),))
l.append('Content-Type: %s' % get_content_type())
l.append('')
l.append('')
l.append('--' + boundary + '--')
l.append('')
body = crlf.join(l)
content_type = 'multipart/form-data; boundary=%s' % boundary
url = "http://yfrog.com/api/upload"
headersb = {'User-Agent': 'python-yfrog', 'Content-Type': content_type}
response = urlfetch.fetch(url,
payload= body,
method= urlfetch.POST,
headers= headersb)
imglyurl = parse_xml('mediaurl', response.content)
logging.debug('getYfrog response : %s' % response.content)
logging.debug('response : %s' % imglyurl)
imglyparams = imglyurl.split('/')
laststr = imglyparams[-1]
resp1 = urlfetch.fetch("http://yfrog.com/api/xmlInfo?path=" + laststr, method=urlfetch.POST)
imglyurl = parse_xml('image_link', resp1.content)
return imglyurl
def getImgly(url):
filename = url
logging.debug('url : %s' % filename)
filename = filename.replace('%3A', ':', 1)
responseObj = urlfetch.Fetch(filename)
boundary = '-------tHISiStheMulTIFoRMbOUNDaRY'
crlf = '\r\n'
l = []
fields = [('username', 'your_twitter_name'), ('password', 'your_twitter_password')]
for (key, value) in fields:
l.append('--' + boundary)
l.append('Content-Disposition: form-data; name="%s"' % str(key))
l.append('')
l.append(str(value))
l.append('--' + boundary)
l.append('Content-Disposition: form-data; name="media"; filename="%s"' % (str(filename),))
l.append('Content-Type: %s' % get_content_type())
l.append('')
l.append(responseObj.content)
l.append('--' + boundary + '--')
l.append('')
body = crlf.join(l)
content_type = 'multipart/form-data; boundary=%s' % boundary
url = "http://img.ly/api/upload"
headersb = {'User-Agent': 'ImgLy', 'Content-Type': content_type}
try:
response = urlfetch.fetch(url,
payload= body,
method= urlfetch.POST,
headers= headersb)
except:
return
imglyurl = parse_xml('mediaurl', response.content)
logging.debug('getImgly response : %s' % response.content)
logging.debug('response : %s' % imglyurl)
imglyparams = imglyurl.split('/')
retstr = "http://img.ly/show/full/" + imglyparams[-1]
return retstr
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment