Get youtube/vimeo/vevo/vine video thumbnail
import re import urllib2 class Thumbnail(object): YOUTUBE_THUMBNAIL_URL = 'https://i.ytimg.com/vi/{video_id}/hqdefault.jpg' VEVO_VIDEO_URL = 'http://www.vevo.ly/{video_id}' VEVO_THUMBNAIL_URL_REGEXP1 = re.compile('"thumbnailUrl":"(.+?)"') VEVO_THUMBNAIL_URL_REGEXP2 = re.compile('link itemprop="thumbnailUrl" href="(.+?)"') VINE_VIDEO_URL = 'http://vine.co/v/{video_id}' VINE_THUMBNAIL_URL_REGEXP = re.compile('"thumbnailUrl": "(.+?)"') VIMEO_DATA_URL = 'http://vimeo.com/api/v2/video/{video_id}.json' VIMEO_THUMBNAIL_URL_REGEXT = re.compile('"thumbnail_large":"(.+?)"') @classmethod def youtube(cls, video_id): return cls.YOUTUBE_THUMBNAIL_URL.format(video_id=video_id) @classmethod def vimeo(cls, video_id): vimeo_url = cls.VIMEO_DATA_URL.format(video_id=video_id) data = urllib2.urlopen(vimeo_url).read() results = cls.VIMEO_THUMBNAIL_URL_REGEXT.findall(data) if results: return results[0].replace('\\/', '/') @classmethod def vevo(cls, video_id): video_url = cls.VEVO_VIDEO_URL.format(video_id=video_id) req = urllib2.Request(video_url) req.add_header( 'User-Agent', 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-GB; rv:1.9.0.3) Gecko/2008092417 Firefox/3.0.3') page = urllib2.urlopen(req).read() # request from zone where vevo is available results = cls.VEVO_THUMBNAIL_URL_REGEXP1.findall(page) if not results: # if vevo is unavailable, it may be open on youtube results = cls.VEVO_THUMBNAIL_URL_REGEXP2.findall(page) if results: return results[0] @classmethod def vine(cls, video_id): vine_url = cls.VINE_VIDEO_URL.format(video_id=video_id) req = urllib2.Request(vine_url) req.add_header( 'User-Agent', 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-GB; rv:1.9.0.3) Gecko/2008092417 Firefox/3.0.3') page = urllib2.urlopen(req).read() results = cls.VINE_THUMBNAIL_URL_REGEXP.findall(page) if results: return results[0].replace('\\/', '/') if __name__ == '__main__': print Thumbnail.youtube(video_id='p8KwGIyHmhM') print Thumbnail.vimeo(video_id='45370040') print Thumbnail.vevo(video_id='x9fMmU') print Thumbnail.vine(video_id='OUBbPBrh2qH')
Licensed under CC BY-SA 3.0