from .common import InfoExtractor from ..utils import ExtractorError, classproperty, remove_start class UnsupportedInfoExtractor(InfoExtractor): IE_DESC = False URLS = () # Redefine in subclasses @classproperty def IE_NAME(cls): return remove_start(super().IE_NAME, 'Known') @classproperty def _VALID_URL(cls): return rf'https?://(?:www\.)?(?:{"|".join(cls.URLS)})' LF = '\n ' class KnownDRMIE(UnsupportedInfoExtractor): """Sites that are known to use DRM for all their videos Add to this list only if: * You are reasonably certain that the site uses DRM for ALL their videos * Multiple users have asked about this site on github/reddit/discord """ 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', r'nowtv\.it/watch', r'tv\.apple\.com', ) _TESTS = [{ # https://github.com/yt-dlp/yt-dlp/issues/4309 'url': 'https://peacocktv.com/watch/playback/vod/GMO_00000000073159_01/f9d03003-eb04-3c7f-a7b6-a83ab7eb55bc', 'only_matching': True, }, { # https://github.com/yt-dlp/yt-dlp/issues/1719, 'url': 'https://www.channel4.com/programmes/gurren-lagann/on-demand/69960-001', 'only_matching': True, }, { # https://github.com/yt-dlp/yt-dlp/issues/1548 'url': 'https://www.channel5.com/show/uk-s-strongest-man-2021/season-2021/episode-1', '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, }, { # https://github.com/yt-dlp/yt-dlp/issues/4122 'url': 'https://www.tvnz.co.nz/shows/ice-airport-alaska/episodes/s1-e1', 'only_matching': True, }, { # https://github.com/yt-dlp/yt-dlp/issues/1922 'url': 'https://www.oneplus.ch/play/1008188', 'only_matching': True, }, { # https://github.com/yt-dlp/yt-dlp/issues/1140 'url': 'https://www.artstation.com/learning/courses/dqQ/character-design-masterclass-with-serge-birault/chapters/Rxn3/introduction', 'only_matching': True, }, { # https://github.com/yt-dlp/yt-dlp/issues/3544 'url': 'https://www.philo.com/player/player/vod/Vk9EOjYwODU0ODg5OTY0ODY0OTQ5NA', 'only_matching': True, }, { # https://github.com/yt-dlp/yt-dlp/issues/3533 'url': 'https://www.mech-plus.com/player/24892/stream?assetType=episodes&playlist_id=6', 'only_matching': True, }, { 'url': 'https://watch.mech-plus.com/details/25240?playlist_id=6', 'only_matching': True, }, { # https://github.com/yt-dlp/yt-dlp/issues/2934 'url': 'https://www.aha.video/player/movie/lucky-man', 'only_matching': True, }, { # https://github.com/yt-dlp/yt-dlp/issues/2743 'url': 'https://mubi.com/films/the-night-doctor', 'only_matching': True, }, { # https://github.com/yt-dlp/yt-dlp/issues/3287 'url': 'https://www.vootkids.com/movies/chhota-bheem-the-rise-of-kirmada/764459', 'only_matching': True, }, { # https://github.com/yt-dlp/yt-dlp/issues/2744 'url': 'https://www.nowtv.it/watch/home/asset/and-just-like-that/skyserie_f8fe979772e8437d8a61ab83b6d293e9/seasons/1/episodes/8/R_126182_HD', 'only_matching': True, }, { # https://github.com/yt-dlp/yt-dlp/issues/5557 'url': 'https://tv.apple.com/it/show/loot---una-fortuna/umc.cmc.5erbujil1mpazuerhr1udnk45?ctx_brand=tvs.sbd.4000', 'only_matching': True, }] def _real_extract(self, url): raise ExtractorError( f'The requested site is known to use DRM protection. ' f'It will {self._downloader._format_err("NOT", self._downloader.Styles.EMPHASIS)} be supported.{LF}' f'Please {self._downloader._format_err("DO NOT", self._downloader.Styles.ERROR)} open an issue, ' 'unless you have evidence that the video is not DRM protected', expected=True) class KnownPiracyIE(UnsupportedInfoExtractor): """Sites that have been deemed to be piracy In order for this to not end up being a catalog of piracy sites, only sites that were once supported should be added to this list """ URLS = ( r'dood\.(?:to|watch|so|pm|wf|re)', # Sites youtube-dl supports, but we won't r'viewsb\.com', r'filemoon\.sx', r'hentai\.animestigma\.com', ) _TESTS = [{ 'url': 'http://dood.to/e/5s1wmbdacezb', 'only_matching': True, }] def _real_extract(self, url): raise ExtractorError( f'This website is no longer supported since it has been determined to be primarily used for piracy.{LF}' f'{self._downloader._format_err("DO NOT", self._downloader.Styles.ERROR)} open issues for it', expected=True)