1- from urlparse import parse_qs
1+ # -*- coding: utf-8 -*-
2+ import json
23import re
34import urllib
4- from django .utils import simplejson
5+
6+ from urlparse import parse_qs
7+
8+ from django .conf import settings
59
610class Provider (object ):
711
@@ -37,8 +41,8 @@ class Vimeo(Provider):
3741
3842 def __init__ (self , url , size = (640 , 480 )):
3943 super (Vimeo , self ).__init__ (url , size )
40- pattern = re .compile ('http://(?:www\.)?vimeo\.com/([0-9]{1,12})' )
41- self .video_id = pattern .match (url ).groups ()[0 ]
44+ pattern = re .compile ('( http|https) ://(?:www\.)?vimeo\.com/([0-9]{1,12})' )
45+ self .video_id = pattern .match (url ).groups ()[1 ]
4246 self .api_url = 'http://vimeo.com/api/v2/video/%s.json' % self .video_id
4347
4448 def render_video (self ):
@@ -47,14 +51,19 @@ def render_video(self):
4751 self .size [1 ], self .video_id )
4852
4953 def render_thumbnail (self , link_to = "#" ):
50- api_response = simplejson .loads (urllib .urlopen (self .api_url ).read ())
54+ api_response = json .loads (urllib .urlopen (self .api_url ).read ())
5155 return api_response [0 ]['thumbnail_medium' ]
5256
5357class Embedly (Provider ):
5458
5559 def __init__ (self , url , size = (640 , 480 )):
5660 super (Embedly , self ).__init__ (url , size )
57- self .api_url = 'http://api.embed.ly/1/oembed?url=%s&maxwidth=%s&format=json' % (url , size [0 ])
61+ key = getattr (settings , "EMBEDLY_KEY" , None )
62+ if key != None :
63+ self .api_url = 'http://api.embed.ly/1/oembed?key=%s&url=%s&maxwidth=%s&format=json' % (key , url , size [0 ])
64+ else :
65+ raise ValueError ("If you want to use this please set the Embedly api key" )
66+
5867
5968 def render_video (self ):
6069 return self ._call_api ()['html' ]
@@ -63,7 +72,10 @@ def render_thumbnail(self):
6372 return self ._call_api ()['thumbnail_url' ]
6473
6574 def _call_api (self ):
66- data = simplejson .loads (urllib .urlopen (self .api_url ).read ())
75+ try :
76+ data = json .loads (urllib .urlopen (self .api_url ).read ())
77+ except IOError :
78+ raise IOError ("Please set the Embedly api key correctly" )
6779 return data
6880
6981def get_provider (url , size = None ):
0 commit comments