From bb0fcc85d6e843891e63bbef216b190b53e2f5f6 Mon Sep 17 00:00:00 2001 From: mdipierro Date: Sun, 19 Aug 2012 18:36:18 -0500 Subject: [PATCH] fixed vimeo oembed --- VERSION | 2 +- gluon/contrib/autolinks.py | 15 +++++++++++---- 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/VERSION b/VERSION index 1f2f31f5..4d89648c 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -Version 2.00.0 (2012-08-19 18:20:11) dev +Version 2.00.0 (2012-08-19 18:36:14) dev diff --git a/gluon/contrib/autolinks.py b/gluon/contrib/autolinks.py index 7e81a0f2..cb05079a 100644 --- a/gluon/contrib/autolinks.py +++ b/gluon/contrib/autolinks.py @@ -126,12 +126,19 @@ EXTENSION_MAPS = { 'xps': googledoc_viewer, } +class VimeoURLOpener(urllib.FancyURLopener): + "Vimeo blocks the urllib user agent for some reason" + version = "Mozilla/4.0" +urllib._urlopener = VimeoURLOpener() + def oembed(url): for k,v in EMBED_MAPS: if k.match(url): oembed = v+'?format=json&url='+cgi.escape(url) - try: - return loads(urllib.urlopen(oembed).read()) + try: + data = urllib.urlopen(oembed).read() + print data + return loads(data) # json! except: pass return {} @@ -143,10 +150,10 @@ def expand_one(url,cdict): # try ombed but first check in cache if cdict and url in cdict: r = cdict[url] - elif cdict: - r = cdict[url] = oembed(url) else: r = oembed(url) + if isinstance(cdict,dict): + cdict[url] = r # if oembed service if 'html' in r: html = r['html'].encode('utf8')