mirror of
				https://github.com/yt-dlp/yt-dlp.git
				synced 2025-11-04 08:35:12 +00:00 
			
		
		
		
	Added DRM logic
In the event when there are no available sources due to DRM controlled sources, return a DRM error and don't proceed with trying. #28 reports that an ExtractorError "No video formats found". Which is true, because the formats list is empty, however it's empty because they are all locked. This provides a more informative message to the end-user. # TESTING Tried the URL provided in #28 and confirmed a DRM messages is returned.
This commit is contained in:
		@@ -471,12 +471,17 @@ class BrightcoveNewIE(AdobePassIE):
 | 
			
		||||
        title = json_data['name'].strip()
 | 
			
		||||
 | 
			
		||||
        formats = []
 | 
			
		||||
        sources_num = len(json_data.get('sources'))
 | 
			
		||||
        key_systems_present = 0
 | 
			
		||||
        for source in json_data.get('sources', []):
 | 
			
		||||
            container = source.get('container')
 | 
			
		||||
            ext = mimetype2ext(source.get('type'))
 | 
			
		||||
            src = source.get('src')
 | 
			
		||||
            # https://support.brightcove.com/playback-api-video-fields-reference#key_systems_object
 | 
			
		||||
            if ext == 'ism' or container == 'WVM' or source.get('key_systems'):
 | 
			
		||||
            # https://apis.support.brightcove.com/playback/references/playback-api-video-fields-reference.html
 | 
			
		||||
            if source.get('key_systems'):
 | 
			
		||||
                key_systems_present += 1
 | 
			
		||||
                continue
 | 
			
		||||
            elif ext == 'ism' or container == 'WVM':
 | 
			
		||||
                continue
 | 
			
		||||
            elif ext == 'm3u8' or container == 'M2TS':
 | 
			
		||||
                if not src:
 | 
			
		||||
@@ -533,6 +538,10 @@ class BrightcoveNewIE(AdobePassIE):
 | 
			
		||||
                        'format_id': build_format_id('rtmp'),
 | 
			
		||||
                    })
 | 
			
		||||
                formats.append(f)
 | 
			
		||||
 | 
			
		||||
        if sources_num == key_systems_present:
 | 
			
		||||
            raise ExtractorError('This video is DRM protected', expected=True)
 | 
			
		||||
 | 
			
		||||
        if not formats:
 | 
			
		||||
            # for sonyliv.com DRM protected videos
 | 
			
		||||
            s3_source_url = json_data.get('custom_fields', {}).get('s3sourceurl')
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user