|
@@ -4116,21 +4116,35 @@ class VineIE(InfoExtractor):
|
|
|
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)
|
|
|
+ self.report_extraction(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)
|
|
|
+ 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)
|
|
|
|
|
|
+ mobj = re.search(r'<meta property="og:image" content="(.+?)(\?.*?)?"', webpage)
|
|
|
+ if mobj is None:
|
|
|
+ raise ExtractorError(u'Unable to extract thumbnail')
|
|
|
+ thumbnail = mobj.group(1)
|
|
|
+
|
|
|
+ mobj = re.search(r'<div class="user">.*?<h2>(.+?)</h2>', webpage, re.DOTALL)
|
|
|
+ if mobj is None:
|
|
|
+ raise ExtractorError(u'Unable to extract uploader')
|
|
|
+ uploader = mobj.group(1)
|
|
|
+
|
|
|
return [{
|
|
|
- 'id': video_id,
|
|
|
- 'url': video_url,
|
|
|
- 'ext': 'mp4',
|
|
|
- 'title': video_title,
|
|
|
+ 'id': video_id,
|
|
|
+ 'url': video_url,
|
|
|
+ 'ext': 'mp4',
|
|
|
+ 'title': video_title,
|
|
|
+ 'thumbnail': thumbnail,
|
|
|
+ 'uploader': uploader,
|
|
|
}]
|
|
|
|
|
|
def gen_extractors():
|