Mercurial > public > sg101
view oembed/core.py @ 917:0365fdbb4d78
Fix app conflict with messages.
Django's messages app label conflicts with our messages app.
We can't easily rename our label as that will make us rename database tables.
Since our app came first we'll just customize Django messages label.
For Django 1.7.7 upgrade.
author | Brian Neal <bgneal@gmail.com> |
---|---|
date | Mon, 06 Apr 2015 20:02:25 -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