mirror of
				https://github.com/yt-dlp/yt-dlp.git
				synced 2025-11-04 08:35:12 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			94 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			94 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
from .common import InfoExtractor
 | 
						|
from ..utils import classproperty, ExtractorError
 | 
						|
 | 
						|
 | 
						|
class KnownDRMIE(InfoExtractor):
 | 
						|
    IE_DESC = False
 | 
						|
    IE_NAME = 'unsupported:drm'
 | 
						|
    UNSUPPORTED_URLS = (
 | 
						|
        r'play\.hbomax\.com',
 | 
						|
        r'channel(?:4|5)\.com',
 | 
						|
        r'peacocktv\.com',
 | 
						|
        r'(?:[\w\.]+\.)?disneyplus\.com',
 | 
						|
        r'open\.spotify\.com/(?:track|playlist|album|artist)',
 | 
						|
        r'tvnz\.co\.nz',
 | 
						|
        r'oneplus\.ch',
 | 
						|
        r'artstation\.com/learning/courses',
 | 
						|
        r'philo\.com',
 | 
						|
        r'(?:[\w\.]+\.)?mech-plus\.com',
 | 
						|
        r'aha\.video',
 | 
						|
        r'mubi\.com',
 | 
						|
        r'vootkids\.com'
 | 
						|
    )
 | 
						|
 | 
						|
    _TESTS = [{
 | 
						|
        # https://github.com/yt-dlp/yt-dlp/issues/4309
 | 
						|
        'url': 'https://www.peacocktv.com',
 | 
						|
        'only_matching': True,
 | 
						|
    }, {
 | 
						|
        # https://github.com/yt-dlp/yt-dlp/issues/1719,
 | 
						|
        'url': 'https://www.channel4.com',
 | 
						|
        'only_matching': True,
 | 
						|
    }, {
 | 
						|
        # https://github.com/yt-dlp/yt-dlp/issues/1548
 | 
						|
        'url': 'https://www.channel5.com',
 | 
						|
        'only_matching': True,
 | 
						|
    }, {
 | 
						|
        'url': r'https://hsesn.apps.disneyplus.com',
 | 
						|
        'only_matching': True,
 | 
						|
    }, {
 | 
						|
        'url': r'https://www.disneyplus.com',
 | 
						|
        'only_matching': True,
 | 
						|
    }, {
 | 
						|
        'url': 'https://open.spotify.com/artist/',
 | 
						|
        'only_matching': True,
 | 
						|
    }, {
 | 
						|
        'url': 'https://open.spotify.com/track/',
 | 
						|
        'only_matching': True,
 | 
						|
    }, {
 | 
						|
        # TVNZ: https://github.com/yt-dlp/yt-dlp/issues/4122
 | 
						|
        'url': 'https://tvnz.co.nz',
 | 
						|
        'only_matching': True,
 | 
						|
    }, {
 | 
						|
        # https://github.com/yt-dlp/yt-dlp/issues/1922
 | 
						|
        'url': 'https://www.oneplus.ch',
 | 
						|
        'only_matching': True,
 | 
						|
    }, {
 | 
						|
        # https://github.com/yt-dlp/yt-dlp/issues/1140
 | 
						|
        'url': 'https://www.artstation.com/learning/courses/',
 | 
						|
        'only_matching': True,
 | 
						|
    }, {
 | 
						|
        # https://github.com/yt-dlp/yt-dlp/issues/3544
 | 
						|
        'url': 'https://www.philo.com',
 | 
						|
        'only_matching': True,
 | 
						|
    }, {
 | 
						|
        # https://github.com/yt-dlp/yt-dlp/issues/3533
 | 
						|
        'url': 'https://www.mech-plus.com/',
 | 
						|
        'only_matching': True,
 | 
						|
    }, {
 | 
						|
        'url': 'https://watch.mech-plus.com/',
 | 
						|
        'only_matching': True,
 | 
						|
    }, {
 | 
						|
        # https://github.com/yt-dlp/yt-dlp/issues/2934
 | 
						|
        'url': 'https://www.aha.video',
 | 
						|
        'only_matching': True,
 | 
						|
    }, {
 | 
						|
        # https://github.com/yt-dlp/yt-dlp/issues/2743
 | 
						|
        'url': 'https://mubi.com',
 | 
						|
        'only_matching': True,
 | 
						|
    }, {
 | 
						|
        # https://github.com/yt-dlp/yt-dlp/issues/3287
 | 
						|
        'url': 'https://www.vootkids.com',
 | 
						|
        'only_matching': True,
 | 
						|
    }]
 | 
						|
 | 
						|
    @classproperty
 | 
						|
    def _VALID_URL(cls):
 | 
						|
        return rf'https?://(?:www\.)?(?:{"|".join(cls.UNSUPPORTED_URLS)})'
 | 
						|
 | 
						|
    def _real_extract(self, url):
 | 
						|
        raise ExtractorError(
 | 
						|
            f'The requested site is known to use DRM protection. It will {self._downloader._format_err("NOT", self._downloader.Styles.EMPHASIS)} be supported by yt-dlp. '
 | 
						|
            f'Please {self._downloader._format_err("DO NOT", self._downloader.Styles.ERROR)} open an issue, unless you have evidence that it is not DRM protected.',
 | 
						|
            expected=True)
 |