mirror of
				https://github.com/yt-dlp/yt-dlp.git
				synced 2025-10-31 06:35:12 +00:00 
			
		
		
		
	[heise] Support videos embedded in any article.
This commit is contained in:
		 Tobias Gruetzmacher
					Tobias Gruetzmacher
				
			
				
					committed by
					
						 Sergey M․
						Sergey M․
					
				
			
			
				
	
			
			
			 Sergey M․
						Sergey M․
					
				
			
						parent
						
							c2bde5d081
						
					
				
				
					commit
					db76c30c6e
				
			| @@ -11,10 +11,10 @@ from ..utils import ( | |||||||
|  |  | ||||||
| class HeiseIE(InfoExtractor): | class HeiseIE(InfoExtractor): | ||||||
|     _VALID_URL = r'''(?x) |     _VALID_URL = r'''(?x) | ||||||
|         https?://(?:www\.)?heise\.de/video/artikel/ |         https?://(?:www\.)?heise\.de/.+?(?P<id>[0-9]+)\.html(?:$|[?#]) | ||||||
|         .+?(?P<id>[0-9]+)\.html(?:$|[?#]) |  | ||||||
|     ''' |     ''' | ||||||
|     _TEST = { |     _TESTS = [ | ||||||
|  |         { | ||||||
|             'url': ( |             'url': ( | ||||||
|                 'http://www.heise.de/video/artikel/Podcast-c-t-uplink-3-3-Owncloud-Tastaturen-Peilsender-Smartphone-2404147.html' |                 'http://www.heise.de/video/artikel/Podcast-c-t-uplink-3-3-Owncloud-Tastaturen-Peilsender-Smartphone-2404147.html' | ||||||
|             ), |             ), | ||||||
| @@ -29,36 +29,97 @@ class HeiseIE(InfoExtractor): | |||||||
|                 'timestamp': 1411812600, |                 'timestamp': 1411812600, | ||||||
|                 'upload_date': '20140927', |                 'upload_date': '20140927', | ||||||
|                 'description': 'In uplink-Episode 3.3 geht es darum, wie man sich von Cloud-Anbietern emanzipieren kann, worauf man beim Kauf einer Tastatur achten sollte und was Smartphones über uns verraten.', |                 'description': 'In uplink-Episode 3.3 geht es darum, wie man sich von Cloud-Anbietern emanzipieren kann, worauf man beim Kauf einer Tastatur achten sollte und was Smartphones über uns verraten.', | ||||||
|             'thumbnail': r're:^https?://.*\.jpe?g$', |                 'thumbnail': r're:^https?://.*/gallery/$', | ||||||
|             } |             } | ||||||
|  |         }, | ||||||
|  |         { | ||||||
|  |             'url': ( | ||||||
|  |                 'http://www.heise.de/ct/artikel/c-t-uplink-3-3-Owncloud-Tastaturen-Peilsender-Smartphone-2403911.html' | ||||||
|  |             ), | ||||||
|  |             'md5': 'ffed432483e922e88545ad9f2f15d30e', | ||||||
|  |             'info_dict': { | ||||||
|  |                 'id': '2403911', | ||||||
|  |                 'ext': 'mp4', | ||||||
|  |                 'title': ( | ||||||
|  |                     "c't uplink 3.3: Owncloud, Tastaturen, Peilsender Smartphone" | ||||||
|  |                 ), | ||||||
|  |                 'format_id': 'mp4_720p', | ||||||
|  |                 'timestamp': 1411803000, | ||||||
|  |                 'upload_date': '20140927', | ||||||
|  |                 'description': "In c't uplink erklären wir in dieser Woche, wie man mit Owncloud die Kontrolle über die eigenen Daten behält. Darüber hinaus erklären wir, dass zur Wahl der richtigen Tastatur mehr gehört, als man denkt und wie Smartphones uns weiter verraten.", | ||||||
|  |                 'thumbnail': r're:^https?://.*/gallery/$', | ||||||
|             } |             } | ||||||
|  |         }, | ||||||
|  |         { | ||||||
|  |             'url': ( | ||||||
|  |                 'http://www.heise.de/newsticker/meldung/c-t-uplink-Owncloud-Tastaturen-Peilsender-Smartphone-2404251.html?wt_mc=rss.ho.beitrag.atom' | ||||||
|  |             ), | ||||||
|  |             'md5': 'ffed432483e922e88545ad9f2f15d30e', | ||||||
|  |             'info_dict': { | ||||||
|  |                 'id': '2404251', | ||||||
|  |                 'ext': 'mp4', | ||||||
|  |                 'title': ( | ||||||
|  |                     "c't uplink: Owncloud, Tastaturen, Peilsender Smartphone" | ||||||
|  |                 ), | ||||||
|  |                 'format_id': 'mp4_720p', | ||||||
|  |                 'timestamp': 1411811400, | ||||||
|  |                 'upload_date': '20140927', | ||||||
|  |                 'description': 'In uplink-Episode 3.3 sprechen wir über Owncloud und wie man sich damit von Cloudanbietern emanzipieren kann. Außerdem erklären wir, woran man alles beim Kauf einer Tastatur denken sollte und was Smartphones nun über uns verraten.', | ||||||
|  |                 'thumbnail': r're:^https?://.*/gallery/$', | ||||||
|  |             } | ||||||
|  |         }, | ||||||
|  |         { | ||||||
|  |             'url': ( | ||||||
|  |                 'http://www.heise.de/ct/ausgabe/2016-12-Spiele-3214137.html' | ||||||
|  |             ), | ||||||
|  |             'md5': '0616c9297d9c989f9b2a23b483b408c3', | ||||||
|  |             'info_dict': { | ||||||
|  |                 'id': '3214137', | ||||||
|  |                 'ext': 'mp4', | ||||||
|  |                 'title': ( | ||||||
|  |                     "c\u2019t zockt \u201eGlitchspace\u201c, \u201eThe Mind's Eclipse\u201c und \u201eWindowframe\u201c." | ||||||
|  |                 ), | ||||||
|  |                 'format_id': 'mp4_720p', | ||||||
|  |                 'timestamp': 1464011220, | ||||||
|  |                 'upload_date': '20160523', | ||||||
|  |                 'description': "Unsere Spiele-Tipps der Woche: Das Puzzle-Adventure Glitchspace, das Jump&Run-Spiel Windowframe und The Mind's Eclipse", | ||||||
|  |                 'thumbnail': r're:^https?://.*/gallery/$', | ||||||
|  |             } | ||||||
|  |         }, | ||||||
|  |  | ||||||
|  |     ] | ||||||
|  |  | ||||||
|     def _real_extract(self, url): |     def _real_extract(self, url): | ||||||
|         video_id = self._match_id(url) |         video_id = self._match_id(url) | ||||||
|         webpage = self._download_webpage(url, video_id) |         webpage = self._download_webpage(url, video_id) | ||||||
|  |  | ||||||
|         container_id = self._search_regex( |         container_id = self._search_regex( | ||||||
|             r'<div class="videoplayerjw".*?data-container="([0-9]+)"', |             r'<div class="videoplayerjw"[^>]*data-container="([0-9]+)"', | ||||||
|             webpage, 'container ID') |             webpage, 'container ID') | ||||||
|         sequenz_id = self._search_regex( |         sequenz_id = self._search_regex( | ||||||
|             r'<div class="videoplayerjw".*?data-sequenz="([0-9]+)"', |             r'<div class="videoplayerjw"[^>]*data-sequenz="([0-9]+)"', | ||||||
|             webpage, 'sequenz ID') |             webpage, 'sequenz ID') | ||||||
|         data_url = 'http://www.heise.de/videout/feed?container=%s&sequenz=%s' % (container_id, sequenz_id) |         data_url = 'http://www.heise.de/videout/feed?container=%s&sequenz=%s' % (container_id, sequenz_id) | ||||||
|         doc = self._download_xml(data_url, video_id) |         doc = self._download_xml(data_url, video_id) | ||||||
|  |  | ||||||
|         info = { |         info = { | ||||||
|             'id': video_id, |             'id': video_id, | ||||||
|             'thumbnail': self._og_search_thumbnail(webpage), |             'thumbnail': doc.find('.//{http://rss.jwpcdn.com/}image').text, | ||||||
|             'timestamp': parse_iso8601( |             'timestamp': parse_iso8601( | ||||||
|                 self._html_search_meta('date', webpage)), |                 self._html_search_meta('date', webpage)) | ||||||
|             'description': self._og_search_description(webpage), |  | ||||||
|         } |         } | ||||||
|  |  | ||||||
|         title = self._html_search_meta('fulltitle', webpage) |         title = self._html_search_meta('fulltitle', webpage, default=None) | ||||||
|         if title: |         if not title or title == "c't": | ||||||
|  |             title = self._search_regex( | ||||||
|  |                 r'<div class="videoplayerjw"[^>]*data-title="([^"]+)"', | ||||||
|  |                 webpage, 'video title') | ||||||
|         info['title'] = title |         info['title'] = title | ||||||
|         else: |  | ||||||
|             info['title'] = self._og_search_title(webpage) |         desc = self._og_search_description(webpage, default=None) | ||||||
|  |         if not desc: | ||||||
|  |             desc = self._html_search_meta('description', webpage) | ||||||
|  |         info['description'] = desc | ||||||
|  |  | ||||||
|         formats = [] |         formats = [] | ||||||
|         for source_node in doc.findall('.//{http://rss.jwpcdn.com/}source'): |         for source_node in doc.findall('.//{http://rss.jwpcdn.com/}source'): | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user