[tvplay] Add extractor (Closes #3245)
This commit is contained in:
		
							parent
							
								
									8f3034d871
								
							
						
					
					
						commit
						1220352ff7
					
				| @ -322,6 +322,7 @@ from .tumblr import TumblrIE | ||||
| from .tutv import TutvIE | ||||
| from .tvigle import TvigleIE | ||||
| from .tvp import TvpIE | ||||
| from .tvplay import TVPlayIE | ||||
| from .udemy import ( | ||||
|     UdemyIE, | ||||
|     UdemyCourseIE | ||||
|  | ||||
							
								
								
									
										85
									
								
								youtube_dl/extractor/tvplay.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										85
									
								
								youtube_dl/extractor/tvplay.py
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,85 @@ | ||||
| # coding: utf-8 | ||||
| from __future__ import unicode_literals | ||||
| 
 | ||||
| import re | ||||
| 
 | ||||
| from .common import InfoExtractor | ||||
| from ..utils import ( | ||||
|     ExtractorError, | ||||
|     parse_iso8601, | ||||
|     qualities, | ||||
| ) | ||||
| 
 | ||||
| 
 | ||||
| class TVPlayIE(InfoExtractor): | ||||
|     _VALID_URL = r'http://(?:www\.)?tvplay\.lv/parraides/[^/]+/(?P<id>\d+)' | ||||
|     _TESTS = [ | ||||
|         { | ||||
|             'url': 'http://www.tvplay.lv/parraides/vinas-melo-labak/418113?autostart=true', | ||||
|             'info_dict': { | ||||
|                 'id': '418113', | ||||
|                 'ext': 'flv', | ||||
|                 'title': 'Kādi ir īri? - Viņas melo labāk', | ||||
|                 'description': 'Baiba apsmej īrus, kādi tie ir un ko viņi dara.', | ||||
|                 'duration': 25, | ||||
|                 'timestamp': 1406097056, | ||||
|                 'upload_date': '20140723', | ||||
|             }, | ||||
|             'params': { | ||||
|                 # rtmp download | ||||
|                 'skip_download': True, | ||||
|             }, | ||||
|         }, | ||||
|     ] | ||||
| 
 | ||||
|     def _real_extract(self, url): | ||||
|         mobj = re.match(self._VALID_URL, url) | ||||
|         video_id = mobj.group('id') | ||||
| 
 | ||||
|         video = self._download_json( | ||||
|             'http://playapi.mtgx.tv/v1/videos/%s' % video_id, video_id, 'Downloading video JSON') | ||||
| 
 | ||||
|         if video['is_geo_blocked']: | ||||
|             raise ExtractorError( | ||||
|                 'This content is not available in your country due to copyright reasons', expected=True) | ||||
| 
 | ||||
|         streams = self._download_json( | ||||
|             'http://playapi.mtgx.tv/v1/videos/stream/%s' % video_id, video_id, 'Downloading streams JSON') | ||||
| 
 | ||||
|         quality = qualities(['hls', 'medium', 'high']) | ||||
|         formats = [] | ||||
|         for format_id, video_url in streams['streams'].items(): | ||||
|             if not video_url: | ||||
|                 continue | ||||
|             fmt = { | ||||
|                 'format_id': format_id, | ||||
|                 'preference': quality(format_id), | ||||
|             } | ||||
|             if video_url.startswith('rtmp'): | ||||
|                 m = re.search(r'^(?P<url>rtmp://[^/]+/(?P<app>[^/]+))/(?P<playpath>.+)$', video_url) | ||||
|                 if not m: | ||||
|                     continue | ||||
|                 fmt.update({ | ||||
|                     'ext': 'flv', | ||||
|                     'url': m.group('url'), | ||||
|                     'app': m.group('app'), | ||||
|                     'play_path': m.group('playpath'), | ||||
|                 }) | ||||
|             else: | ||||
|                 fmt.update({ | ||||
|                     'url': video_url, | ||||
|                 }) | ||||
|             formats.append(fmt) | ||||
| 
 | ||||
|         self._sort_formats(formats) | ||||
| 
 | ||||
|         return { | ||||
|             'id': video_id, | ||||
|             'title': video['title'], | ||||
|             'description': video['description'], | ||||
|             'duration': video['duration'], | ||||
|             'timestamp': parse_iso8601(video['created_at']), | ||||
|             'view_count': video['views']['total'], | ||||
|             'age_limit': video.get('age_limit', 0), | ||||
|             'formats': formats, | ||||
|         } | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user