summaryrefslogtreecommitdiffstats
path: root/gallery_dl/extractor/mangoxo.py
diff options
context:
space:
mode:
authorLibravatarUnit 193 <unit193@ubuntu.com>2020-03-16 23:20:15 -0400
committerLibravatarUnit 193 <unit193@ubuntu.com>2020-03-16 23:20:15 -0400
commite8cc000750de972384f2f34d02d42222b4018ae9 (patch)
tree26eb0bacedff7480d29bafcf184ca529cf9f1d9f /gallery_dl/extractor/mangoxo.py
parent4366125d2580982abb57bc65a26fc1fb8ef2a5df (diff)
New upstream version 1.13.2upstream/1.13.2
Diffstat (limited to 'gallery_dl/extractor/mangoxo.py')
-rw-r--r--gallery_dl/extractor/mangoxo.py35
1 files changed, 21 insertions, 14 deletions
diff --git a/gallery_dl/extractor/mangoxo.py b/gallery_dl/extractor/mangoxo.py
index 114a48e..8cd7fa5 100644
--- a/gallery_dl/extractor/mangoxo.py
+++ b/gallery_dl/extractor/mangoxo.py
@@ -1,6 +1,6 @@
# -*- coding: utf-8 -*-
-# Copyright 2019 Mike Fährmann
+# Copyright 2019-2020 Mike Fährmann
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License version 2 as
@@ -12,6 +12,7 @@ from .common import Extractor, Message
from .. import text, exception
from ..cache import cache
import hashlib
+import time
class MangoxoExtractor(Extractor):
@@ -35,28 +36,34 @@ class MangoxoExtractor(Extractor):
def _login_impl(self, username, password):
self.log.info("Logging in as %s", username)
- page = self.request(self.root + "/login/").text
- token = text.extract(page, 'id="loginToken" value="', '"')[0]
- if not token:
- self.log.debug("failed to extract 'loginToken'")
-
- url = self.root + "/login/loginxmm"
+ url = self.root + "/api/login"
headers = {
"X-Requested-With": "XMLHttpRequest",
"Referer": self.root + "/login",
}
- data = {
- "name": username,
- "password": hashlib.md5(password.encode()).hexdigest(),
- "loginToken": token,
- }
+ data = self._sign_by_md5(username, password)
response = self.request(url, method="POST", headers=headers, data=data)
- if response.json().get("result") != "1":
- raise exception.AuthenticationError()
+ data = response.json()
+ if str(data.get("result")) != "1":
+ raise exception.AuthenticationError(data.get("msg"))
return {"SESSION": self.session.cookies.get("SESSION")}
@staticmethod
+ def _sign_by_md5(username, password):
+ # https://dns.mangoxo.com/libs/plugins/phoenix-ui/js/phoenix-ui.js
+ params = [
+ ("username" , username),
+ ("password" , password),
+ ("timestamp", str(int(time.time()))),
+ ]
+ query = "&".join("=".join(item) for item in sorted(params))
+ query += "&secretKey=996293536"
+ sign = hashlib.md5(query.encode()).hexdigest()
+ params.append(("sign", sign.upper()))
+ return params
+
+ @staticmethod
def _total_pages(page):
return text.parse_int(text.extract(page, "total :", ",")[0])