mirror of
				https://github.com/yt-dlp/yt-dlp.git
				synced 2025-10-31 14:45:14 +00:00 
			
		
		
		
	Completely change project name to yt-dlp (#85)
* All modules and binary names are changed * All documentation references changed * yt-dlp no longer loads youtube-dlc config files * All URLs changed to point to organization account Co-authored-by: Pccode66 Co-authored-by: pukkandan
This commit is contained in:
		
							
								
								
									
										125
									
								
								yt_dlp/extractor/pladform.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										125
									
								
								yt_dlp/extractor/pladform.py
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,125 @@ | ||||
| # coding: utf-8 | ||||
| from __future__ import unicode_literals | ||||
|  | ||||
| import re | ||||
|  | ||||
| from .common import InfoExtractor | ||||
| from ..compat import compat_urlparse | ||||
| from ..utils import ( | ||||
|     determine_ext, | ||||
|     ExtractorError, | ||||
|     int_or_none, | ||||
|     xpath_text, | ||||
|     qualities, | ||||
| ) | ||||
|  | ||||
|  | ||||
| class PladformIE(InfoExtractor): | ||||
|     _VALID_URL = r'''(?x) | ||||
|                     https?:// | ||||
|                         (?: | ||||
|                             (?: | ||||
|                                 out\.pladform\.ru/player| | ||||
|                                 static\.pladform\.ru/player\.swf | ||||
|                             ) | ||||
|                             \?.*\bvideoid=| | ||||
|                             video\.pladform\.ru/catalog/video/videoid/ | ||||
|                         ) | ||||
|                         (?P<id>\d+) | ||||
|                     ''' | ||||
|     _TESTS = [{ | ||||
|         'url': 'https://out.pladform.ru/player?pl=64471&videoid=3777899&vk_puid15=0&vk_puid34=0', | ||||
|         'md5': '53362fac3a27352da20fa2803cc5cd6f', | ||||
|         'info_dict': { | ||||
|             'id': '3777899', | ||||
|             'ext': 'mp4', | ||||
|             'title': 'СТУДИЯ СОЮЗ • Шоу Студия Союз, 24 выпуск (01.02.2018) Нурлан Сабуров и Слава Комиссаренко', | ||||
|             'description': 'md5:05140e8bf1b7e2d46e7ba140be57fd95', | ||||
|             'thumbnail': r're:^https?://.*\.jpg$', | ||||
|             'duration': 3190, | ||||
|         }, | ||||
|     }, { | ||||
|         'url': 'http://static.pladform.ru/player.swf?pl=21469&videoid=100183293&vkcid=0', | ||||
|         'only_matching': True, | ||||
|     }, { | ||||
|         'url': 'http://video.pladform.ru/catalog/video/videoid/100183293/vkcid/0', | ||||
|         'only_matching': True, | ||||
|     }] | ||||
|  | ||||
|     @staticmethod | ||||
|     def _extract_url(webpage): | ||||
|         mobj = re.search( | ||||
|             r'<iframe[^>]+src=(["\'])(?P<url>(?:https?:)?//out\.pladform\.ru/player\?.+?)\1', webpage) | ||||
|         if mobj: | ||||
|             return mobj.group('url') | ||||
|  | ||||
|     def _real_extract(self, url): | ||||
|         video_id = self._match_id(url) | ||||
|  | ||||
|         qs = compat_urlparse.parse_qs(compat_urlparse.urlparse(url).query) | ||||
|         pl = qs.get('pl', ['1'])[0] | ||||
|  | ||||
|         video = self._download_xml( | ||||
|             'http://out.pladform.ru/getVideo', video_id, query={ | ||||
|                 'pl': pl, | ||||
|                 'videoid': video_id, | ||||
|             }) | ||||
|  | ||||
|         def fail(text): | ||||
|             raise ExtractorError( | ||||
|                 '%s returned error: %s' % (self.IE_NAME, text), | ||||
|                 expected=True) | ||||
|  | ||||
|         if video.tag == 'error': | ||||
|             fail(video.text) | ||||
|  | ||||
|         quality = qualities(('ld', 'sd', 'hd')) | ||||
|  | ||||
|         formats = [] | ||||
|         for src in video.findall('./src'): | ||||
|             if src is None: | ||||
|                 continue | ||||
|             format_url = src.text | ||||
|             if not format_url: | ||||
|                 continue | ||||
|             if src.get('type') == 'hls' or determine_ext(format_url) == 'm3u8': | ||||
|                 formats.extend(self._extract_m3u8_formats( | ||||
|                     format_url, video_id, 'mp4', entry_protocol='m3u8_native', | ||||
|                     m3u8_id='hls', fatal=False)) | ||||
|             else: | ||||
|                 formats.append({ | ||||
|                     'url': src.text, | ||||
|                     'format_id': src.get('quality'), | ||||
|                     'quality': quality(src.get('quality')), | ||||
|                 }) | ||||
|  | ||||
|         if not formats: | ||||
|             error = xpath_text(video, './cap', 'error', default=None) | ||||
|             if error: | ||||
|                 fail(error) | ||||
|  | ||||
|         self._sort_formats(formats) | ||||
|  | ||||
|         webpage = self._download_webpage( | ||||
|             'http://video.pladform.ru/catalog/video/videoid/%s' % video_id, | ||||
|             video_id) | ||||
|  | ||||
|         title = self._og_search_title(webpage, fatal=False) or xpath_text( | ||||
|             video, './/title', 'title', fatal=True) | ||||
|         description = self._search_regex( | ||||
|             r'</h3>\s*<p>([^<]+)</p>', webpage, 'description', fatal=False) | ||||
|         thumbnail = self._og_search_thumbnail(webpage) or xpath_text( | ||||
|             video, './/cover', 'cover') | ||||
|  | ||||
|         duration = int_or_none(xpath_text(video, './/time', 'duration')) | ||||
|         age_limit = int_or_none(xpath_text(video, './/age18', 'age limit')) | ||||
|  | ||||
|         return { | ||||
|             'id': video_id, | ||||
|             'title': title, | ||||
|             'description': description, | ||||
|             'thumbnail': thumbnail, | ||||
|             'duration': duration, | ||||
|             'age_limit': age_limit, | ||||
|             'formats': formats, | ||||
|         } | ||||
		Reference in New Issue
	
	Block a user
	 Pccode66
					Pccode66