| 
									
										
										
										
											2015-01-11 23:23:10 +01:00
										 |  |  | from __future__ import unicode_literals | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | import re | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-01-11 23:40:27 +01:00
										 |  |  | from .common import InfoExtractor | 
					
						
							|  |  |  | from ..utils import ( | 
					
						
							| 
									
										
										
										
											2017-05-31 23:56:32 +07:00
										 |  |  |     js_to_json, | 
					
						
							|  |  |  |     parse_duration, | 
					
						
							|  |  |  |     unescapeHTML, | 
					
						
							| 
									
										
										
										
											2015-01-11 23:40:27 +01:00
										 |  |  | ) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-01-11 23:23:10 +01:00
										 |  |  | class DRBonanzaIE(InfoExtractor): | 
					
						
							| 
									
										
										
										
											2017-05-31 23:56:32 +07:00
										 |  |  |     _VALID_URL = r'https?://(?:www\.)?dr\.dk/bonanza/[^/]+/\d+/[^/]+/(?P<id>\d+)/(?P<display_id>[^/?#&]+)' | 
					
						
							|  |  |  |     _TEST = { | 
					
						
							|  |  |  |         'url': 'http://www.dr.dk/bonanza/serie/154/matador/40312/matador---0824-komme-fremmede-', | 
					
						
							| 
									
										
										
										
											2015-01-11 23:23:10 +01:00
										 |  |  |         'info_dict': { | 
					
						
							| 
									
										
										
										
											2017-05-31 23:56:32 +07:00
										 |  |  |             'id': '40312', | 
					
						
							|  |  |  |             'display_id': 'matador---0824-komme-fremmede-', | 
					
						
							| 
									
										
										
										
											2015-01-11 23:23:10 +01:00
										 |  |  |             'ext': 'mp4', | 
					
						
							| 
									
										
										
										
											2017-05-31 23:56:32 +07:00
										 |  |  |             'title': 'MATADOR - 08:24. "Komme fremmede".', | 
					
						
							|  |  |  |             'description': 'md5:77b4c1ac4d4c1b9d610ab4395212ff84', | 
					
						
							| 
									
										
										
										
											2017-01-02 20:08:07 +08:00
										 |  |  |             'thumbnail': r're:^https?://.*\.(?:gif|jpg)$', | 
					
						
							| 
									
										
										
										
											2017-05-31 23:56:32 +07:00
										 |  |  |             'duration': 4613, | 
					
						
							| 
									
										
										
										
											2015-01-11 23:23:10 +01:00
										 |  |  |         }, | 
					
						
							| 
									
										
										
										
											2017-05-31 23:56:32 +07:00
										 |  |  |     } | 
					
						
							| 
									
										
										
										
											2015-01-11 23:23:10 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  |     def _real_extract(self, url): | 
					
						
							| 
									
										
										
										
											2017-05-31 23:56:32 +07:00
										 |  |  |         mobj = re.match(self._VALID_URL, url) | 
					
						
							|  |  |  |         video_id, display_id = mobj.group('id', 'display_id') | 
					
						
							| 
									
										
										
										
											2015-01-11 23:40:27 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-05-31 23:56:32 +07:00
										 |  |  |         webpage = self._download_webpage(url, display_id) | 
					
						
							| 
									
										
										
										
											2015-01-11 23:40:27 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-05-31 23:56:32 +07:00
										 |  |  |         info = self._parse_html5_media_entries( | 
					
						
							|  |  |  |             url, webpage, display_id, m3u8_id='hls', | 
					
						
							|  |  |  |             m3u8_entry_protocol='m3u8_native')[0] | 
					
						
							|  |  |  |         self._sort_formats(info['formats']) | 
					
						
							| 
									
										
										
										
											2015-01-11 23:40:27 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-05-31 23:56:32 +07:00
										 |  |  |         asset = self._parse_json( | 
					
						
							|  |  |  |             self._search_regex( | 
					
						
							|  |  |  |                 r'(?s)currentAsset\s*=\s*({.+?})\s*</script', webpage, 'asset'), | 
					
						
							|  |  |  |             display_id, transform_source=js_to_json) | 
					
						
							| 
									
										
										
										
											2015-01-11 23:23:10 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-05-31 23:56:32 +07:00
										 |  |  |         title = unescapeHTML(asset['AssetTitle']).strip() | 
					
						
							| 
									
										
										
										
											2015-01-11 23:40:27 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-05-31 23:56:32 +07:00
										 |  |  |         def extract(field): | 
					
						
							|  |  |  |             return self._search_regex( | 
					
						
							|  |  |  |                 r'<div[^>]+>\s*<p>%s:<p>\s*</div>\s*<div[^>]+>\s*<p>([^<]+)</p>' % field, | 
					
						
							|  |  |  |                 webpage, field, default=None) | 
					
						
							| 
									
										
										
										
											2015-01-11 23:40:27 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-05-31 23:56:32 +07:00
										 |  |  |         info.update({ | 
					
						
							|  |  |  |             'id': asset.get('AssetId') or video_id, | 
					
						
							| 
									
										
										
										
											2015-01-11 23:23:10 +01:00
										 |  |  |             'display_id': display_id, | 
					
						
							|  |  |  |             'title': title, | 
					
						
							| 
									
										
										
										
											2017-05-31 23:56:32 +07:00
										 |  |  |             'description': extract('Programinfo'), | 
					
						
							|  |  |  |             'duration': parse_duration(extract('Tid')), | 
					
						
							|  |  |  |             'thumbnail': asset.get('AssetImageUrl'), | 
					
						
							|  |  |  |         }) | 
					
						
							|  |  |  |         return info |