summary refs log tree commit diff
diff options
context:
space:
mode:
authorRemita Amine <remitamine@gmail.com>2018-11-21 23:19:46 +0100
committerRemita Amine <remitamine@gmail.com>2018-11-21 23:21:05 +0100
commit560020da3049bec19e5714e9e24fc90fadd06582 (patch)
tree12fba69734705e8e62ab8208b697cbdbe9fb6194
parent305ce767d586e8796d873270abf771e69ff5586c (diff)
downloadyoutube-dl-560020da3049bec19e5714e9e24fc90fadd06582.tar.gz
youtube-dl-560020da3049bec19e5714e9e24fc90fadd06582.tar.xz
youtube-dl-560020da3049bec19e5714e9e24fc90fadd06582.zip
[mixcloud] fallback to hardcoded decryption key(closes #18016)
-rw-r--r--youtube_dl/extractor/mixcloud.py8
1 files changed, 7 insertions, 1 deletions
diff --git a/youtube_dl/extractor/mixcloud.py b/youtube_dl/extractor/mixcloud.py
index b7bccb504..a2d19d3ef 100644
--- a/youtube_dl/extractor/mixcloud.py
+++ b/youtube_dl/extractor/mixcloud.py
@@ -161,11 +161,17 @@ class MixcloudIE(InfoExtractor):
             stream_info = info_json['streamInfo']
             formats = []
 
+            def decrypt_url(f_url):
+                for k in (key, 'IFYOUWANTTHEARTISTSTOGETPAIDDONOTDOWNLOADFROMMIXCLOUD'):
+                    decrypted_url = self._decrypt_xor_cipher(k, compat_b64decode(f_url))
+                    if re.search(r'^https?://[0-9a-z.]+/[0-9A-Za-z/.?=&_-]+$', decrypted_url):
+                        return decrypted_url
+
             for url_key in ('url', 'hlsUrl', 'dashUrl'):
                 format_url = stream_info.get(url_key)
                 if not format_url:
                     continue
-                decrypted = self._decrypt_xor_cipher(key, compat_b64decode(format_url))
+                decrypted = decrypt_url(format_url)
                 if not decrypted:
                     continue
                 if url_key == 'hlsUrl':