From 9040e2d6e3d1fc7ea7d49d3c872b3ec8f507050c Mon Sep 17 00:00:00 2001 From: LE Date: Fri, 31 Dec 2021 15:11:35 -0500 Subject: [PATCH] [mixcloud] Detect restrictions (#2169) Authored by; llacb47 --- yt_dlp/extractor/mixcloud.py | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/yt_dlp/extractor/mixcloud.py b/yt_dlp/extractor/mixcloud.py index a0c043d4bd..c2dd078ac4 100644 --- a/yt_dlp/extractor/mixcloud.py +++ b/yt_dlp/extractor/mixcloud.py @@ -12,6 +12,7 @@ compat_zip ) from ..utils import ( + ExtractorError, int_or_none, parse_iso8601, strip_or_none, @@ -125,7 +126,20 @@ def _real_extract(self, url): tag { name } - }''', track_id, username, slug) + } + restrictedReason + id''', track_id, username, slug) + + if not cloudcast: + raise ExtractorError('Track not found', expected=True) + + reason = cloudcast.get('restrictedReason') + if reason == 'tracklist': + raise ExtractorError('Track unavailable in your country due to licensing restrictions', expected=True) + elif reason == 'repeat_play': + raise ExtractorError('You have reached your play limit for this track', expected=True) + elif reason: + raise ExtractorError('Track is restricted', expected=True) title = cloudcast['name']