mirror of
				https://gitlab.com/ytdl-org/youtube-dl.git
				synced 2025-11-03 20:07:08 -05:00 
			
		
		
		
	[npo] Improve DRM detection
This commit is contained in:
		@@ -181,10 +181,7 @@ class NPOIE(NPOBaseIE):
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    def _real_extract(self, url):
 | 
					    def _real_extract(self, url):
 | 
				
			||||||
        video_id = self._match_id(url)
 | 
					        video_id = self._match_id(url)
 | 
				
			||||||
        try:
 | 
					        return self._get_info(url, video_id) or self._get_old_info(video_id)
 | 
				
			||||||
            return self._get_info(url, video_id)
 | 
					 | 
				
			||||||
        except ExtractorError:
 | 
					 | 
				
			||||||
            return self._get_old_info(video_id)
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def _get_info(self, url, video_id):
 | 
					    def _get_info(self, url, video_id):
 | 
				
			||||||
        token = self._download_json(
 | 
					        token = self._download_json(
 | 
				
			||||||
@@ -206,6 +203,7 @@ class NPOIE(NPOBaseIE):
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
        player_token = player['token']
 | 
					        player_token = player['token']
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        drm = False
 | 
				
			||||||
        format_urls = set()
 | 
					        format_urls = set()
 | 
				
			||||||
        formats = []
 | 
					        formats = []
 | 
				
			||||||
        for profile in ('hls', 'dash-widevine', 'dash-playready', 'smooth'):
 | 
					        for profile in ('hls', 'dash-widevine', 'dash-playready', 'smooth'):
 | 
				
			||||||
@@ -227,7 +225,8 @@ class NPOIE(NPOBaseIE):
 | 
				
			|||||||
            if not stream_url or stream_url in format_urls:
 | 
					            if not stream_url or stream_url in format_urls:
 | 
				
			||||||
                continue
 | 
					                continue
 | 
				
			||||||
            format_urls.add(stream_url)
 | 
					            format_urls.add(stream_url)
 | 
				
			||||||
            if stream.get('protection') is not None:
 | 
					            if stream.get('protection') is not None or stream.get('keySystemOptions') is not None:
 | 
				
			||||||
 | 
					                drm = True
 | 
				
			||||||
                continue
 | 
					                continue
 | 
				
			||||||
            stream_type = stream.get('type')
 | 
					            stream_type = stream.get('type')
 | 
				
			||||||
            stream_ext = determine_ext(stream_url)
 | 
					            stream_ext = determine_ext(stream_url)
 | 
				
			||||||
@@ -246,6 +245,11 @@ class NPOIE(NPOBaseIE):
 | 
				
			|||||||
                    'url': stream_url,
 | 
					                    'url': stream_url,
 | 
				
			||||||
                })
 | 
					                })
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        if not formats:
 | 
				
			||||||
 | 
					            if drm:
 | 
				
			||||||
 | 
					                raise ExtractorError('This video is DRM protected.', expected=True)
 | 
				
			||||||
 | 
					            return
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        self._sort_formats(formats)
 | 
					        self._sort_formats(formats)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        info = {
 | 
					        info = {
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user