- url = self._html_search_meta('twitter:player:stream', webpage, 'twitter player')
-
- formats = [{
- 'format_id': 'flv',
- 'url': url.replace('mp4v', 'flv').replace('.mp4', '.flv'),
- 'quality': 0,
- 'ext': 'flv',
- }, {
- 'format_id': 'mp4',
- 'url': url,
- 'quality': 1,
- 'ext': 'mp4',
- }]
+ error = self._search_regex(
+ r'<div\b[^>]+\bclass=["\']msgBox error[^>]+>([^<]+)', webpage,
+ 'error', default=None)
+ if error:
+ raise ExtractorError('%s said: %s' % (self.IE_NAME, error), expected=True)
+
+ title = self._html_search_meta('title', webpage, 'title', fatal=True)
+ TITLE_SUFFIX = ' - TeacherTube'
+ if title.endswith(TITLE_SUFFIX):
+ title = title[:-len(TITLE_SUFFIX)].strip()
+
+ description = self._html_search_meta('description', webpage, 'description')
+ if description:
+ description = description.strip()
+
+ quality = qualities(['mp3', 'flv', 'mp4'])
+
+ media_urls = re.findall(r'data-contenturl="([^"]+)"', webpage)
+ media_urls.extend(re.findall(r'var\s+filePath\s*=\s*"([^"]+)"', webpage))
+ media_urls.extend(re.findall(r'\'file\'\s*:\s*["\']([^"\']+)["\'],', webpage))
+
+ formats = [
+ {
+ 'url': media_url,
+ 'quality': quality(determine_ext(media_url))
+ } for media_url in set(media_urls)
+ ]