Mercurial > public > sg101
view oembed/core.py @ 989:2908859c2fe4
Smilies now use relative links.
This is for upcoming switch to SSL. Currently we do not need absolute URLs for
smilies. If this changes we can add it later.
author | Brian Neal <bgneal@gmail.com> |
---|---|
date | Thu, 29 Oct 2015 20:54:34 -0500 |
parents | 2181da65c98b |
children |
line wrap: on
line source
""" This module contains core functionality for the oembed application. """ from contextlib import closing import json import urllib import urllib2 import gzip try: from cStringIO import StringIO except ImportError: from StringIO import StringIO USER_AGENT = 'gremmies python oembed' def get_oembed(api_endpoint, url, fmt='json', **opts): """ Perform the GET request to retrieve the embedded media data from the given API endpoint for the given URL. Return the result as a Python dictionary. fmt specifies the response format, and should be 'json' or 'xml'. opts are any additional GET options that should be present in the GET request. """ opts['url'] = url opts['format'] = fmt api_url = "%s?%s" % (api_endpoint, urllib.urlencode(opts)) headers = { 'User-Agent': USER_AGENT, 'Accept-Encoding': 'gzip', } request = urllib2.Request(api_url, headers=headers) with closing(urllib2.urlopen(request)) as response: headers = response.info() result = response.read() if headers.get('content-encoding') == 'gzip': with closing(gzip.GzipFile(fileobj=StringIO(result))) as f: result = f.read() return json.loads(result) if __name__ == "__main__": try: print get_oembed("http://www.youtube.com/oembed", "http://www.youtube.com/watch?v=7_IMzJldOf4", scheme='https') except urllib2.HTTPError, e: print e