mirror of
				https://github.com/yt-dlp/yt-dlp.git
				synced 2025-10-31 14:45:14 +00:00 
			
		
		
		
	[vice:show] Add extractor (Closes #8847)
This commit is contained in:
		| @@ -836,7 +836,10 @@ from .vgtv import ( | |||||||
|     VGTVIE, |     VGTVIE, | ||||||
| ) | ) | ||||||
| from .vh1 import VH1IE | from .vh1 import VH1IE | ||||||
| from .vice import ViceIE | from .vice import ( | ||||||
|  |     ViceIE, | ||||||
|  |     ViceShowIE, | ||||||
|  | ) | ||||||
| from .viddler import ViddlerIE | from .viddler import ViddlerIE | ||||||
| from .videodetective import VideoDetectiveIE | from .videodetective import VideoDetectiveIE | ||||||
| from .videofyme import VideofyMeIE | from .videofyme import VideofyMeIE | ||||||
|   | |||||||
| @@ -1,16 +1,17 @@ | |||||||
| from __future__ import unicode_literals | from __future__ import unicode_literals | ||||||
|  |  | ||||||
|  | import re | ||||||
|  |  | ||||||
| from .common import InfoExtractor | from .common import InfoExtractor | ||||||
| from .ooyala import OoyalaIE | from .ooyala import OoyalaIE | ||||||
| from ..utils import ExtractorError | from ..utils import ExtractorError | ||||||
|  |  | ||||||
|  |  | ||||||
| class ViceIE(InfoExtractor): | class ViceIE(InfoExtractor): | ||||||
|     _VALID_URL = r'https?://(?:.+?\.)?vice\.com/(?:[^/]+/)+(?P<id>.+)' |     _VALID_URL = r'https?://(?:.+?\.)?vice\.com/(?:[^/]+/)?videos?/(?P<id>[^/?#&]+)' | ||||||
|  |  | ||||||
|     _TESTS = [ |     _TESTS = [{ | ||||||
|         { |         'url': 'http://www.vice.com/video/cowboy-capitalists-part-1', | ||||||
|             'url': 'http://www.vice.com/Fringes/cowboy-capitalists-part-1', |  | ||||||
|         'info_dict': { |         'info_dict': { | ||||||
|             'id': '43cW1mYzpia9IlestBjVpd23Yu3afAfp', |             'id': '43cW1mYzpia9IlestBjVpd23Yu3afAfp', | ||||||
|             'ext': 'mp4', |             'ext': 'mp4', | ||||||
| @@ -24,8 +25,13 @@ class ViceIE(InfoExtractor): | |||||||
|     }, { |     }, { | ||||||
|         'url': 'https://news.vice.com/video/experimenting-on-animals-inside-the-monkey-lab', |         'url': 'https://news.vice.com/video/experimenting-on-animals-inside-the-monkey-lab', | ||||||
|         'only_matching': True, |         'only_matching': True, | ||||||
|         } |     }, { | ||||||
|     ] |         'url': 'http://www.vice.com/ru/video/big-night-out-ibiza-clive-martin-229', | ||||||
|  |         'only_matching': True, | ||||||
|  |     }, { | ||||||
|  |         'url': 'https://munchies.vice.com/en/videos/watch-the-trailer-for-our-new-series-the-pizza-show', | ||||||
|  |         'only_matching': True, | ||||||
|  |     }] | ||||||
|  |  | ||||||
|     def _real_extract(self, url): |     def _real_extract(self, url): | ||||||
|         video_id = self._match_id(url) |         video_id = self._match_id(url) | ||||||
| @@ -38,3 +44,35 @@ class ViceIE(InfoExtractor): | |||||||
|         except ExtractorError: |         except ExtractorError: | ||||||
|             raise ExtractorError('The page doesn\'t contain a video', expected=True) |             raise ExtractorError('The page doesn\'t contain a video', expected=True) | ||||||
|         return self.url_result(ooyala_url, ie='Ooyala') |         return self.url_result(ooyala_url, ie='Ooyala') | ||||||
|  |  | ||||||
|  |  | ||||||
|  | class ViceShowIE(InfoExtractor): | ||||||
|  |     _VALID_URL = r'https?://(?:.+?\.)?vice\.com/(?:[^/]+/)?show/(?P<id>[^/?#&]+)' | ||||||
|  |  | ||||||
|  |     _TEST = { | ||||||
|  |         'url': 'https://munchies.vice.com/en/show/fuck-thats-delicious-2', | ||||||
|  |         'info_dict': { | ||||||
|  |             'id': 'fuck-thats-delicious-2', | ||||||
|  |             'title': "Fuck, That's Delicious", | ||||||
|  |             'description': 'Follow the culinary adventures of rapper Action Bronson during his ongoing world tour.', | ||||||
|  |         }, | ||||||
|  |         'playlist_count': 17, | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     def _real_extract(self, url): | ||||||
|  |         show_id = self._match_id(url) | ||||||
|  |         webpage = self._download_webpage(url, show_id) | ||||||
|  |  | ||||||
|  |         entries = [ | ||||||
|  |             self.url_result(video_url, ViceIE.ie_key()) | ||||||
|  |             for video_url, _ in re.findall( | ||||||
|  |                 r'<h2[^>]+class="article-title"[^>]+data-id="\d+"[^>]*>\s*<a[^>]+href="(%s.*?)"' | ||||||
|  |                 % ViceIE._VALID_URL, webpage)] | ||||||
|  |  | ||||||
|  |         title = self._search_regex( | ||||||
|  |             r'<title>(.+?)</title>', webpage, 'title', default=None) | ||||||
|  |         if title: | ||||||
|  |             title = re.sub(r'(.+)\s*\|\s*.+$', r'\1', title).strip() | ||||||
|  |         description = self._html_search_meta('description', webpage, 'description') | ||||||
|  |  | ||||||
|  |         return self.playlist_result(entries, show_id, title, description) | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Sergey M․
					Sergey M․