[tv2dk:bornholm:play] Add extractor (closes #23291)
This commit is contained in:
		
							parent
							
								
									42db58ec73
								
							
						
					
					
						commit
						fab01080f4
					
				
					 2 changed files with 77 additions and 2 deletions
				
			
		|  | @ -1168,7 +1168,10 @@ from .tv2 import ( | |||
|     TV2ArticleIE, | ||||
|     KatsomoIE, | ||||
| ) | ||||
| from .tv2dk import TV2DKIE | ||||
| from .tv2dk import ( | ||||
|     TV2DKIE, | ||||
|     TV2DKBornholmPlayIE, | ||||
| ) | ||||
| from .tv2hu import TV2HuIE | ||||
| from .tv4 import TV4IE | ||||
| from .tv5mondeplus import TV5MondePlusIE | ||||
|  |  | |||
|  | @ -1,10 +1,16 @@ | |||
| # coding: utf-8 | ||||
| from __future__ import unicode_literals | ||||
| 
 | ||||
| import json | ||||
| import re | ||||
| 
 | ||||
| from .common import InfoExtractor | ||||
| from ..utils import extract_attributes | ||||
| from ..utils import ( | ||||
|     determine_ext, | ||||
|     extract_attributes, | ||||
|     js_to_json, | ||||
|     url_or_none, | ||||
| ) | ||||
| 
 | ||||
| 
 | ||||
| class TV2DKIE(InfoExtractor): | ||||
|  | @ -80,3 +86,69 @@ class TV2DKIE(InfoExtractor): | |||
|                 'kaltura:%s:%s' % (partner_id, kaltura_id), 'Kaltura', | ||||
|                 video_id=kaltura_id)) | ||||
|         return self.playlist_result(entries) | ||||
| 
 | ||||
| 
 | ||||
| class TV2DKBornholmPlayIE(InfoExtractor): | ||||
|     _VALID_URL = r'https?://play\.tv2bornholm\.dk/\?.*?\bid=(?P<id>\d+)' | ||||
|     _TEST = { | ||||
|         'url': 'http://play.tv2bornholm.dk/?area=specifikTV&id=781021', | ||||
|         'info_dict': { | ||||
|             'id': '781021', | ||||
|             'ext': 'mp4', | ||||
|             'title': '12Nyheder-27.11.19', | ||||
|         }, | ||||
|         'params': { | ||||
|             'skip_download': True, | ||||
|         }, | ||||
|     } | ||||
| 
 | ||||
|     def _real_extract(self, url): | ||||
|         video_id = self._match_id(url) | ||||
| 
 | ||||
|         video = self._download_json( | ||||
|             'http://play.tv2bornholm.dk/controls/AJAX.aspx/specifikVideo', video_id, | ||||
|             data=json.dumps({ | ||||
|                 'playlist_id': video_id, | ||||
|                 'serienavn': '', | ||||
|             }).encode(), headers={ | ||||
|                 'X-Requested-With': 'XMLHttpRequest', | ||||
|                 'Content-Type': 'application/json; charset=UTF-8', | ||||
|             })['d'] | ||||
| 
 | ||||
|         # TODO: generalize flowplayer | ||||
|         title = self._search_regex( | ||||
|             r'title\s*:\s*(["\'])(?P<value>(?:(?!\1).)+)\1', video, 'title', | ||||
|             group='value') | ||||
|         sources = self._parse_json(self._search_regex( | ||||
|             r'(?s)sources:\s*(\[.+?\]),', video, 'sources'), | ||||
|             video_id, js_to_json) | ||||
| 
 | ||||
|         formats = [] | ||||
|         srcs = set() | ||||
|         for source in sources: | ||||
|             src = url_or_none(source.get('src')) | ||||
|             if not src: | ||||
|                 continue | ||||
|             if src in srcs: | ||||
|                 continue | ||||
|             srcs.add(src) | ||||
|             ext = determine_ext(src) | ||||
|             src_type = source.get('type') | ||||
|             if src_type == 'application/x-mpegurl' or ext == 'm3u8': | ||||
|                 formats.extend(self._extract_m3u8_formats( | ||||
|                     src, video_id, ext='mp4', entry_protocol='m3u8_native', | ||||
|                     m3u8_id='hls', fatal=False)) | ||||
|             elif src_type == 'application/dash+xml' or ext == 'mpd': | ||||
|                 formats.extend(self._extract_mpd_formats( | ||||
|                     src, video_id, mpd_id='dash', fatal=False)) | ||||
|             else: | ||||
|                 formats.append({ | ||||
|                     'url': src, | ||||
|                 }) | ||||
|         self._sort_formats(formats) | ||||
| 
 | ||||
|         return { | ||||
|             'id': video_id, | ||||
|             'title': title, | ||||
|             'formats': formats, | ||||
|         } | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Sergey M․
						Sergey M․