aioqzone 1.9.6.dev2__tar.gz → 1.9.6.dev4__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {aioqzone-1.9.6.dev2 → aioqzone-1.9.6.dev4}/PKG-INFO +1 -1
- {aioqzone-1.9.6.dev2 → aioqzone-1.9.6.dev4}/pyproject.toml +5 -10
- {aioqzone-1.9.6.dev2 → aioqzone-1.9.6.dev4}/src/aioqzone/api/h5/model.py +1 -1
- {aioqzone-1.9.6.dev2 → aioqzone-1.9.6.dev4}/src/aioqzone/api/login/__init__.py +16 -0
- {aioqzone-1.9.6.dev2 → aioqzone-1.9.6.dev4}/src/qqqr/qr/__init__.py +2 -2
- {aioqzone-1.9.6.dev2 → aioqzone-1.9.6.dev4}/README.md +0 -0
- {aioqzone-1.9.6.dev2 → aioqzone-1.9.6.dev4}/src/aioqzone/__init__.py +0 -0
- {aioqzone-1.9.6.dev2 → aioqzone-1.9.6.dev4}/src/aioqzone/api/__init__.py +0 -0
- {aioqzone-1.9.6.dev2 → aioqzone-1.9.6.dev4}/src/aioqzone/api/h5/__init__.py +0 -0
- {aioqzone-1.9.6.dev2 → aioqzone-1.9.6.dev4}/src/aioqzone/api/login/_base.py +0 -0
- {aioqzone-1.9.6.dev2 → aioqzone-1.9.6.dev4}/src/aioqzone/exception.py +0 -0
- {aioqzone-1.9.6.dev2 → aioqzone-1.9.6.dev4}/src/aioqzone/message.py +0 -0
- {aioqzone-1.9.6.dev2 → aioqzone-1.9.6.dev4}/src/aioqzone/model/__init__.py +0 -0
- {aioqzone-1.9.6.dev2 → aioqzone-1.9.6.dev4}/src/aioqzone/model/api/__init__.py +0 -0
- {aioqzone-1.9.6.dev2 → aioqzone-1.9.6.dev4}/src/aioqzone/model/api/feed.py +0 -0
- {aioqzone-1.9.6.dev2 → aioqzone-1.9.6.dev4}/src/aioqzone/model/api/profile.py +0 -0
- {aioqzone-1.9.6.dev2 → aioqzone-1.9.6.dev4}/src/aioqzone/model/api/request.py +0 -0
- {aioqzone-1.9.6.dev2 → aioqzone-1.9.6.dev4}/src/aioqzone/model/api/response.py +0 -0
- {aioqzone-1.9.6.dev2 → aioqzone-1.9.6.dev4}/src/aioqzone/model/protocol/__init__.py +0 -0
- {aioqzone-1.9.6.dev2 → aioqzone-1.9.6.dev4}/src/aioqzone/model/protocol/config.py +0 -0
- {aioqzone-1.9.6.dev2 → aioqzone-1.9.6.dev4}/src/aioqzone/model/protocol/entity.py +0 -0
- {aioqzone-1.9.6.dev2 → aioqzone-1.9.6.dev4}/src/aioqzone/utils/__init__.py +0 -0
- {aioqzone-1.9.6.dev2 → aioqzone-1.9.6.dev4}/src/aioqzone/utils/entity.py +0 -0
- {aioqzone-1.9.6.dev2 → aioqzone-1.9.6.dev4}/src/aioqzone/utils/regex.py +0 -0
- {aioqzone-1.9.6.dev2 → aioqzone-1.9.6.dev4}/src/aioqzone/utils/retry.py +0 -0
- {aioqzone-1.9.6.dev2 → aioqzone-1.9.6.dev4}/src/aioqzone/utils/time.py +0 -0
- {aioqzone-1.9.6.dev2 → aioqzone-1.9.6.dev4}/src/qqqr/__init__.py +0 -0
- {aioqzone-1.9.6.dev2 → aioqzone-1.9.6.dev4}/src/qqqr/base.py +0 -0
- {aioqzone-1.9.6.dev2 → aioqzone-1.9.6.dev4}/src/qqqr/constant.py +0 -0
- {aioqzone-1.9.6.dev2 → aioqzone-1.9.6.dev4}/src/qqqr/exception.py +0 -0
- {aioqzone-1.9.6.dev2 → aioqzone-1.9.6.dev4}/src/qqqr/message.py +0 -0
- {aioqzone-1.9.6.dev2 → aioqzone-1.9.6.dev4}/src/qqqr/py.typed +0 -0
- {aioqzone-1.9.6.dev2 → aioqzone-1.9.6.dev4}/src/qqqr/qr/type.py +0 -0
- {aioqzone-1.9.6.dev2 → aioqzone-1.9.6.dev4}/src/qqqr/type.py +0 -0
- {aioqzone-1.9.6.dev2 → aioqzone-1.9.6.dev4}/src/qqqr/up/__init__.py +0 -0
- {aioqzone-1.9.6.dev2 → aioqzone-1.9.6.dev4}/src/qqqr/up/_model.py +0 -0
- {aioqzone-1.9.6.dev2 → aioqzone-1.9.6.dev4}/src/qqqr/up/captcha/__init__.py +0 -0
- {aioqzone-1.9.6.dev2 → aioqzone-1.9.6.dev4}/src/qqqr/up/captcha/_model.py +0 -0
- {aioqzone-1.9.6.dev2 → aioqzone-1.9.6.dev4}/src/qqqr/up/captcha/capsess.py +0 -0
- {aioqzone-1.9.6.dev2 → aioqzone-1.9.6.dev4}/src/qqqr/up/captcha/click/__init__.py +0 -0
- {aioqzone-1.9.6.dev2 → aioqzone-1.9.6.dev4}/src/qqqr/up/captcha/click/_types.py +0 -0
- {aioqzone-1.9.6.dev2 → aioqzone-1.9.6.dev4}/src/qqqr/up/captcha/pil_utils.py +0 -0
- {aioqzone-1.9.6.dev2 → aioqzone-1.9.6.dev4}/src/qqqr/up/captcha/select/__init__.py +0 -0
- {aioqzone-1.9.6.dev2 → aioqzone-1.9.6.dev4}/src/qqqr/up/captcha/select/_types.py +0 -0
- {aioqzone-1.9.6.dev2 → aioqzone-1.9.6.dev4}/src/qqqr/up/captcha/slide/__init__.py +0 -0
- {aioqzone-1.9.6.dev2 → aioqzone-1.9.6.dev4}/src/qqqr/up/captcha/slide/_types.py +0 -0
- {aioqzone-1.9.6.dev2 → aioqzone-1.9.6.dev4}/src/qqqr/up/encrypt.py +0 -0
- {aioqzone-1.9.6.dev2 → aioqzone-1.9.6.dev4}/src/qqqr/up/h5.py +0 -0
- {aioqzone-1.9.6.dev2 → aioqzone-1.9.6.dev4}/src/qqqr/up/web.py +0 -0
- {aioqzone-1.9.6.dev2 → aioqzone-1.9.6.dev4}/src/qqqr/utils/encrypt.py +0 -0
- {aioqzone-1.9.6.dev2 → aioqzone-1.9.6.dev4}/src/qqqr/utils/iter.py +0 -0
- {aioqzone-1.9.6.dev2 → aioqzone-1.9.6.dev4}/src/qqqr/utils/jsjson.py +0 -0
- {aioqzone-1.9.6.dev2 → aioqzone-1.9.6.dev4}/src/qqqr/utils/net.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "aioqzone"
|
|
3
|
-
version = "1.9.6.
|
|
3
|
+
version = "1.9.6.dev4"
|
|
4
4
|
description = "A Python wrapper for Qzone login and H5 APIs."
|
|
5
5
|
authors = [{ name = "aioqzone" }]
|
|
6
6
|
maintainers = [
|
|
@@ -40,10 +40,10 @@ Documentation = "https://aioqzone.github.io/aioqzone"
|
|
|
40
40
|
test = ["pytest>=8.2.0", "pytest-asyncio>=1.1,<1.3"]
|
|
41
41
|
dev = ["pre-commit", "ruff"]
|
|
42
42
|
doc = [
|
|
43
|
-
"Sphinx>=
|
|
44
|
-
"Sphinx
|
|
45
|
-
"autodoc-pydantic>=2.0
|
|
46
|
-
"sphinx-autodoc-typehints~=
|
|
43
|
+
"Sphinx>=8.1.3; python_version=='3.10'",
|
|
44
|
+
"Sphinx~=9.0; python_version>='3.11'",
|
|
45
|
+
"autodoc-pydantic>=2.2.0",
|
|
46
|
+
"sphinx-autodoc-typehints~=3.0",
|
|
47
47
|
"furo",
|
|
48
48
|
"sphinx-intl",
|
|
49
49
|
"sphinx-inline-tabs",
|
|
@@ -84,8 +84,3 @@ ignore = [
|
|
|
84
84
|
"F403", # 'from module import *' used; unable to detect undefined names
|
|
85
85
|
"F405", # name may be undefined, or defined from star imports
|
|
86
86
|
]
|
|
87
|
-
|
|
88
|
-
[tool.pyright]
|
|
89
|
-
pythonVersion = "3.10"
|
|
90
|
-
pythonPlatform = "All"
|
|
91
|
-
reportIncompatibleVariableOverride = "information"
|
|
@@ -183,6 +183,22 @@ class QrLoginManager(Loginable):
|
|
|
183
183
|
log.fatal("二维码登录异常", exc_info=True)
|
|
184
184
|
raise UnexpectedLoginError from e
|
|
185
185
|
|
|
186
|
+
if self.uin:
|
|
187
|
+
return cookie
|
|
188
|
+
|
|
189
|
+
# uin in qrconfig might be 0, we could get uin after login
|
|
190
|
+
for k, v in cookie.items():
|
|
191
|
+
if not k.endswith("uin"):
|
|
192
|
+
continue
|
|
193
|
+
v = v.removeprefix("o0")
|
|
194
|
+
if not v.isdigit():
|
|
195
|
+
continue
|
|
196
|
+
try:
|
|
197
|
+
self.uin = int(v)
|
|
198
|
+
except ValueError:
|
|
199
|
+
continue
|
|
200
|
+
if self.uin:
|
|
201
|
+
break
|
|
186
202
|
return cookie
|
|
187
203
|
|
|
188
204
|
def h5(self, enable=True, clear_cookie=True):
|
|
@@ -108,7 +108,7 @@ class QrLogin(LoginBase[QrSession], _QrHookMixin):
|
|
|
108
108
|
async with self.client.get(RECENT_UIN_URL, params=params) as response:
|
|
109
109
|
dev_mid_sig = response.cookies.get("dev_mid_sig")
|
|
110
110
|
m = re.search(r"ptui_fetch_dev_uin_CB\((.*)\)", r := await response.text())
|
|
111
|
-
log.debug("pt_fetch_dev_uin response:
|
|
111
|
+
log.debug(f"pt_fetch_dev_uin response: {r}")
|
|
112
112
|
|
|
113
113
|
if m:
|
|
114
114
|
r = FetchDevUinResp.model_validate_json(m.group(1))
|
|
@@ -143,7 +143,7 @@ class QrLogin(LoginBase[QrSession], _QrHookMixin):
|
|
|
143
143
|
)
|
|
144
144
|
m = re.search(r"ptui_qrcode_CB\((.*)\)", r := await r.text())
|
|
145
145
|
|
|
146
|
-
log.debug("ptqrshow(qr_push) response:
|
|
146
|
+
log.debug(f"ptqrshow(qr_push) response: {r}")
|
|
147
147
|
assert m
|
|
148
148
|
resp = PushQrResp.model_validate_json(m.group(1))
|
|
149
149
|
if qrsig and resp.code == 0:
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|