Skip to content

Commit

Permalink
Get better resolutions from youtube with fallback for default resolut…
Browse files Browse the repository at this point in the history
…ion.
  • Loading branch information
DiogoMarques committed Jan 18, 2016
1 parent bd87759 commit d234ec5
Showing 1 changed file with 28 additions and 1 deletion.
29 changes: 28 additions & 1 deletion embed_video/backends.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,11 @@
EMBED_VIDEO_YOUTUBE_DEFAULT_QUERY


def checkUrl(url):
r = requests.head(url)
return int(r.status_code) < 400


class EmbedVideoException(Exception):
""" Parental class for all embed_video exceptions """
pass
Expand Down Expand Up @@ -303,8 +308,14 @@ class YoutubeBackend(VideoBackend):
)

pattern_url = '{protocol}://www.youtube.com/embed/{code}'
pattern_thumbnail_url = '{protocol}://img.youtube.com/vi/{code}/hqdefault.jpg'
pattern_thumbnail_url = '{protocol}://img.youtube.com/vi/{code}/{resolution}'
default_query = EMBED_VIDEO_YOUTUBE_DEFAULT_QUERY
resolutions = [
'maxresdefault.jpg',
'sddefault.jpg',
'hqdefault.jpg'
'mqdefault.jpg',
]

def get_code(self):
code = super(YoutubeBackend, self).get_code()
Expand All @@ -322,6 +333,22 @@ def get_code(self):

return code

def get_thumbnail_url(self):
"""
Returns thumbnail URL folded from :py:data:`pattern_thumbnail_url` and
parsed code.
:rtype: str
"""
for resolution in self.resolutions:
temp_thumbnail_url = self.pattern_thumbnail_url.format(
code=self.code, protocol=self.protocol, resolution=resolution)
if checkUrl(temp_thumbnail_url):
return temp_thumbnail_url
break
return self.pattern_thumbnail_url.format(
code=self.code, protocol=self.protocol, resolution='hqdefault.jpg')


class VimeoBackend(VideoBackend):
"""
Expand Down

0 comments on commit d234ec5

Please sign in to comment.