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 | |
| parent | d4f76f1674c5fd6d5714a7500bc119b4b230f2b2 (diff) | |
Add support for Vine - closes #845
Diffstat (limited to 'youtube_dl')
| -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()      ]  | 
