summaryrefslogtreecommitdiffstats
path: root/gallery_dl/extractor/hotleak.py
diff options
context:
space:
mode:
Diffstat (limited to 'gallery_dl/extractor/hotleak.py')
-rw-r--r--gallery_dl/extractor/hotleak.py13
1 files changed, 10 insertions, 3 deletions
diff --git a/gallery_dl/extractor/hotleak.py b/gallery_dl/extractor/hotleak.py
index eb64db0..7c656be 100644
--- a/gallery_dl/extractor/hotleak.py
+++ b/gallery_dl/extractor/hotleak.py
@@ -8,6 +8,7 @@
from .common import Extractor, Message
from .. import text, exception
+import binascii
BASE_PATTERN = r"(?:https?://)?(?:www\.)?hotleak\.vip"
@@ -49,6 +50,11 @@ class HotleakExtractor(Extractor):
params["page"] += 1
+def decode_video_url(url):
+ # cut first and last 16 characters, reverse, base64 decode
+ return binascii.a2b_base64(url[-17:15:-1]).decode()
+
+
class HotleakPostExtractor(HotleakExtractor):
"""Extractor for individual posts on hotleak"""
subcategory = "post"
@@ -100,8 +106,8 @@ class HotleakPostExtractor(HotleakExtractor):
text.nameext_from_url(data["url"], data)
elif self.type == "video":
- data["url"] = "ytdl:" + text.extr(
- text.unescape(page), '"src":"', '"')
+ data["url"] = "ytdl:" + decode_video_url(text.extr(
+ text.unescape(page), '"src":"', '"'))
text.nameext_from_url(data["url"], data)
data["extension"] = "mp4"
@@ -163,7 +169,8 @@ class HotleakCreatorExtractor(HotleakExtractor):
elif post["type"] == 1:
data["type"] = "video"
- data["url"] = "ytdl:" + post["stream_url_play"]
+ data["url"] = "ytdl:" + decode_video_url(
+ post["stream_url_play"])
text.nameext_from_url(data["url"], data)
data["extension"] = "mp4"