mirror of
				https://github.com/yt-dlp/yt-dlp.git
				synced 2025-10-31 06:35:12 +00:00 
			
		
		
		
	[videolecturesnet] Improve playlist extraction
This commit is contained in:
		| @@ -3,8 +3,14 @@ from __future__ import unicode_literals | ||||
| import re | ||||
|  | ||||
| from .common import InfoExtractor | ||||
| from ..compat import compat_urlparse | ||||
| from ..utils import parse_duration | ||||
| from ..compat import ( | ||||
|     compat_HTTPError, | ||||
|     compat_urlparse, | ||||
| ) | ||||
| from ..utils import ( | ||||
|     ExtractorError, | ||||
|     parse_duration, | ||||
| ) | ||||
|  | ||||
|  | ||||
| class VideoLecturesNetIE(InfoExtractor): | ||||
| @@ -28,17 +34,19 @@ class VideoLecturesNetIE(InfoExtractor): | ||||
|         video_id = self._match_id(url) | ||||
|  | ||||
|         smil_url = 'http://videolectures.net/%s/video/1/smil.xml' % video_id | ||||
|         smil = self._download_smil(smil_url, video_id, fatal=False) | ||||
|  | ||||
|         # Probably a playlist | ||||
|         if smil is False: | ||||
|             webpage = self._download_webpage(url, video_id) | ||||
|             entries = [ | ||||
|                 self.url_result(compat_urlparse.urljoin(url, video_url), 'VideoLecturesNet') | ||||
|                 for _, video_url in re.findall(r'<a[^>]+href=(["\'])(.+?)\1[^>]+id=["\']lec=\d+', webpage)] | ||||
|             playlist_title = self._html_search_meta('title', webpage, 'title', fatal=True) | ||||
|             playlist_description = self._html_search_meta('description', webpage, 'description') | ||||
|             return self.playlist_result(entries, video_id, playlist_title, playlist_description) | ||||
|         try: | ||||
|             smil = self._download_smil(smil_url, video_id) | ||||
|         except ExtractorError as e: | ||||
|             if isinstance(e.cause, compat_HTTPError) and e.cause.code == 404: | ||||
|                 # Probably a playlist | ||||
|                 webpage = self._download_webpage(url, video_id) | ||||
|                 entries = [ | ||||
|                     self.url_result(compat_urlparse.urljoin(url, video_url), 'VideoLecturesNet') | ||||
|                     for _, video_url in re.findall(r'<a[^>]+href=(["\'])(.+?)\1[^>]+id=["\']lec=\d+', webpage)] | ||||
|                 playlist_title = self._html_search_meta('title', webpage, 'title', fatal=True) | ||||
|                 playlist_description = self._html_search_meta('description', webpage, 'description') | ||||
|                 return self.playlist_result(entries, video_id, playlist_title, playlist_description) | ||||
|  | ||||
|         info = self._parse_smil(smil, smil_url, video_id) | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Sergey M․
					Sergey M․