diff options
author | Anna Bernardi <anna.bernardi.9@gmail.com> | 2013-05-20 00:25:26 +0200 |
---|---|---|
committer | Filippo Valsorda <filippo.valsorda@gmail.com> | 2013-05-20 00:33:14 +0200 |
commit | 5b0d3cc0cd10c737df20d87aa5842d18549c3c4c (patch) | |
tree | 2f33570b2ccd36dda1fbee4e3810c6e90e8e0c51 /youtube_dl/InfoExtractors.py | |
parent | d4f76f1674c5fd6d5714a7500bc119b4b230f2b2 (diff) |
Add support for Vine - closes #845
Diffstat (limited to 'youtube_dl/InfoExtractors.py')
-rwxr-xr-x | youtube_dl/InfoExtractors.py | 34 |
1 files changed, 32 insertions, 2 deletions
diff --git a/youtube_dl/InfoExtractors.py b/youtube_dl/InfoExtractors.py index 938d2d805..551969a2e 100755 --- a/youtube_dl/InfoExtractors.py +++ b/youtube_dl/InfoExtractors.py @@ -4069,8 +4069,8 @@ class InaIE(InfoExtractor): }] class HowcastIE(InfoExtractor): - """Information Extractor for Ina.fr""" - _VALID_URL = r'(?:https?://)?(?:www\.)?howcast\.com/videos/(?P<id>[\d]+)' + """Information Extractor for Howcast.com""" + _VALID_URL = r'(?:https?://)?(?:www\.)?howcast\.com/videos/(?P<id>\d+)' def _real_extract(self, url): mobj = re.match(self._VALID_URL, url) @@ -4104,6 +4104,35 @@ class HowcastIE(InfoExtractor): 'description': video_description, }] +class VineIE(InfoExtractor): + """Information Extractor for Vine.co""" + _VALID_URL = r'(?:https?://)?(?:www\.)?vine\.co/v/(?P<id>\w+)' + + def _real_extract(self, url): + + mobj = re.match(self._VALID_URL, url) + + video_id = mobj.group('id') + webpage_url = 'https://vine.co/v/' + video_id + webpage = self._download_webpage(webpage_url, video_id) + + mobj = re.search(r'<meta property="twitter:player:stream" content="([^"]+)"', webpage) + if mobj is None: + raise ExtractorError(u'Unable to extract video URL') + video_url = mobj.group(1) + + mobj = re.search(r'<meta property="og:title" content="([^"]+)"', webpage) + if mobj is None: + raise ExtractorError(u'Unable to extract title') + video_title = mobj.group(1) + + return [{ + 'id': video_id, + 'url': video_url, + 'ext': 'mp4', + 'title': video_title, + }] + def gen_extractors(): """ Return a list of an instance of every supported extractor. The order does matter; the first extractor matched is the one handling the URL. @@ -4162,6 +4191,7 @@ def gen_extractors(): RedTubeIE(), InaIE(), HowcastIE(), + VineIE(), GenericIE() ] |