aioqzone 1.9.6.dev1__tar.gz → 1.9.6.dev3__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.
Files changed (53) hide show
  1. {aioqzone-1.9.6.dev1 → aioqzone-1.9.6.dev3}/PKG-INFO +5 -5
  2. {aioqzone-1.9.6.dev1 → aioqzone-1.9.6.dev3}/pyproject.toml +7 -7
  3. {aioqzone-1.9.6.dev1 → aioqzone-1.9.6.dev3}/src/aioqzone/api/login/__init__.py +16 -0
  4. {aioqzone-1.9.6.dev1 → aioqzone-1.9.6.dev3}/README.md +0 -0
  5. {aioqzone-1.9.6.dev1 → aioqzone-1.9.6.dev3}/src/aioqzone/__init__.py +0 -0
  6. {aioqzone-1.9.6.dev1 → aioqzone-1.9.6.dev3}/src/aioqzone/api/__init__.py +0 -0
  7. {aioqzone-1.9.6.dev1 → aioqzone-1.9.6.dev3}/src/aioqzone/api/h5/__init__.py +0 -0
  8. {aioqzone-1.9.6.dev1 → aioqzone-1.9.6.dev3}/src/aioqzone/api/h5/model.py +0 -0
  9. {aioqzone-1.9.6.dev1 → aioqzone-1.9.6.dev3}/src/aioqzone/api/login/_base.py +0 -0
  10. {aioqzone-1.9.6.dev1 → aioqzone-1.9.6.dev3}/src/aioqzone/exception.py +0 -0
  11. {aioqzone-1.9.6.dev1 → aioqzone-1.9.6.dev3}/src/aioqzone/message.py +0 -0
  12. {aioqzone-1.9.6.dev1 → aioqzone-1.9.6.dev3}/src/aioqzone/model/__init__.py +0 -0
  13. {aioqzone-1.9.6.dev1 → aioqzone-1.9.6.dev3}/src/aioqzone/model/api/__init__.py +0 -0
  14. {aioqzone-1.9.6.dev1 → aioqzone-1.9.6.dev3}/src/aioqzone/model/api/feed.py +0 -0
  15. {aioqzone-1.9.6.dev1 → aioqzone-1.9.6.dev3}/src/aioqzone/model/api/profile.py +0 -0
  16. {aioqzone-1.9.6.dev1 → aioqzone-1.9.6.dev3}/src/aioqzone/model/api/request.py +0 -0
  17. {aioqzone-1.9.6.dev1 → aioqzone-1.9.6.dev3}/src/aioqzone/model/api/response.py +0 -0
  18. {aioqzone-1.9.6.dev1 → aioqzone-1.9.6.dev3}/src/aioqzone/model/protocol/__init__.py +0 -0
  19. {aioqzone-1.9.6.dev1 → aioqzone-1.9.6.dev3}/src/aioqzone/model/protocol/config.py +0 -0
  20. {aioqzone-1.9.6.dev1 → aioqzone-1.9.6.dev3}/src/aioqzone/model/protocol/entity.py +0 -0
  21. {aioqzone-1.9.6.dev1 → aioqzone-1.9.6.dev3}/src/aioqzone/utils/__init__.py +0 -0
  22. {aioqzone-1.9.6.dev1 → aioqzone-1.9.6.dev3}/src/aioqzone/utils/entity.py +0 -0
  23. {aioqzone-1.9.6.dev1 → aioqzone-1.9.6.dev3}/src/aioqzone/utils/regex.py +0 -0
  24. {aioqzone-1.9.6.dev1 → aioqzone-1.9.6.dev3}/src/aioqzone/utils/retry.py +0 -0
  25. {aioqzone-1.9.6.dev1 → aioqzone-1.9.6.dev3}/src/aioqzone/utils/time.py +0 -0
  26. {aioqzone-1.9.6.dev1 → aioqzone-1.9.6.dev3}/src/qqqr/__init__.py +0 -0
  27. {aioqzone-1.9.6.dev1 → aioqzone-1.9.6.dev3}/src/qqqr/base.py +0 -0
  28. {aioqzone-1.9.6.dev1 → aioqzone-1.9.6.dev3}/src/qqqr/constant.py +0 -0
  29. {aioqzone-1.9.6.dev1 → aioqzone-1.9.6.dev3}/src/qqqr/exception.py +0 -0
  30. {aioqzone-1.9.6.dev1 → aioqzone-1.9.6.dev3}/src/qqqr/message.py +0 -0
  31. {aioqzone-1.9.6.dev1 → aioqzone-1.9.6.dev3}/src/qqqr/py.typed +0 -0
  32. {aioqzone-1.9.6.dev1 → aioqzone-1.9.6.dev3}/src/qqqr/qr/__init__.py +0 -0
  33. {aioqzone-1.9.6.dev1 → aioqzone-1.9.6.dev3}/src/qqqr/qr/type.py +0 -0
  34. {aioqzone-1.9.6.dev1 → aioqzone-1.9.6.dev3}/src/qqqr/type.py +0 -0
  35. {aioqzone-1.9.6.dev1 → aioqzone-1.9.6.dev3}/src/qqqr/up/__init__.py +0 -0
  36. {aioqzone-1.9.6.dev1 → aioqzone-1.9.6.dev3}/src/qqqr/up/_model.py +0 -0
  37. {aioqzone-1.9.6.dev1 → aioqzone-1.9.6.dev3}/src/qqqr/up/captcha/__init__.py +0 -0
  38. {aioqzone-1.9.6.dev1 → aioqzone-1.9.6.dev3}/src/qqqr/up/captcha/_model.py +0 -0
  39. {aioqzone-1.9.6.dev1 → aioqzone-1.9.6.dev3}/src/qqqr/up/captcha/capsess.py +0 -0
  40. {aioqzone-1.9.6.dev1 → aioqzone-1.9.6.dev3}/src/qqqr/up/captcha/click/__init__.py +0 -0
  41. {aioqzone-1.9.6.dev1 → aioqzone-1.9.6.dev3}/src/qqqr/up/captcha/click/_types.py +0 -0
  42. {aioqzone-1.9.6.dev1 → aioqzone-1.9.6.dev3}/src/qqqr/up/captcha/pil_utils.py +0 -0
  43. {aioqzone-1.9.6.dev1 → aioqzone-1.9.6.dev3}/src/qqqr/up/captcha/select/__init__.py +0 -0
  44. {aioqzone-1.9.6.dev1 → aioqzone-1.9.6.dev3}/src/qqqr/up/captcha/select/_types.py +0 -0
  45. {aioqzone-1.9.6.dev1 → aioqzone-1.9.6.dev3}/src/qqqr/up/captcha/slide/__init__.py +0 -0
  46. {aioqzone-1.9.6.dev1 → aioqzone-1.9.6.dev3}/src/qqqr/up/captcha/slide/_types.py +0 -0
  47. {aioqzone-1.9.6.dev1 → aioqzone-1.9.6.dev3}/src/qqqr/up/encrypt.py +0 -0
  48. {aioqzone-1.9.6.dev1 → aioqzone-1.9.6.dev3}/src/qqqr/up/h5.py +0 -0
  49. {aioqzone-1.9.6.dev1 → aioqzone-1.9.6.dev3}/src/qqqr/up/web.py +0 -0
  50. {aioqzone-1.9.6.dev1 → aioqzone-1.9.6.dev3}/src/qqqr/utils/encrypt.py +0 -0
  51. {aioqzone-1.9.6.dev1 → aioqzone-1.9.6.dev3}/src/qqqr/utils/iter.py +0 -0
  52. {aioqzone-1.9.6.dev1 → aioqzone-1.9.6.dev3}/src/qqqr/utils/jsjson.py +0 -0
  53. {aioqzone-1.9.6.dev1 → aioqzone-1.9.6.dev3}/src/qqqr/utils/net.py +0 -0
@@ -1,23 +1,23 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: aioqzone
3
- Version: 1.9.6.dev1
3
+ Version: 1.9.6.dev3
4
4
  Summary: A Python wrapper for Qzone login and H5 APIs.
5
5
  Keywords: qzone-api,autologin,asyncio-spider
6
6
  Author: aioqzone
7
- License-Expression: AGPL-3.0
7
+ License-Expression: AGPL-3.0-or-later
8
8
  Classifier: Development Status :: 4 - Beta
9
9
  Classifier: Intended Audience :: Developers
10
10
  Classifier: Topic :: Software Development :: Libraries :: Python Modules
11
11
  Classifier: Typing :: Typed
12
- Requires-Dist: aiohttp>=3.9.0
13
- Requires-Dist: pydantic>=2.12
12
+ Requires-Dist: aiohttp~=3.13
13
+ Requires-Dist: pydantic~=2.12
14
14
  Requires-Dist: pydantic-settings>=2.9.0
15
15
  Requires-Dist: rsa>=4.9.1
16
16
  Requires-Dist: tenacity>=8.2.3,<10.0.0
17
17
  Requires-Dist: tylisten>=2.2.1
18
18
  Requires-Dist: pillow>=11.3.0
19
19
  Requires-Dist: pychaosvm~=0.5.4
20
- Requires-Dist: slide-tc~=0.1.3 ; extra == 'slide-captcha'
20
+ Requires-Dist: slide-tc~=0.1.4 ; extra == 'slide-captcha'
21
21
  Maintainer: JamzumSum
22
22
  Maintainer-email: JamzumSum <22952836+JamzumSum@users.noreply.github.com>
23
23
  Requires-Python: >=3.10
@@ -1,12 +1,12 @@
1
1
  [project]
2
2
  name = "aioqzone"
3
- version = "1.9.6.dev1"
3
+ version = "1.9.6.dev3"
4
4
  description = "A Python wrapper for Qzone login and H5 APIs."
5
5
  authors = [{ name = "aioqzone" }]
6
6
  maintainers = [
7
7
  { name = "JamzumSum", email = "22952836+JamzumSum@users.noreply.github.com" },
8
8
  ]
9
- license = "AGPL-3.0"
9
+ license = "AGPL-3.0-or-later"
10
10
  readme = "README.md"
11
11
  requires-python = ">=3.10"
12
12
  keywords = ["qzone-api", "autologin", "asyncio-spider"]
@@ -18,8 +18,8 @@ classifiers = [
18
18
  ]
19
19
 
20
20
  dependencies = [
21
- "aiohttp>=3.9.0",
22
- "pydantic>=2.12",
21
+ "aiohttp~=3.13",
22
+ "pydantic~=2.12",
23
23
  "pydantic-settings>=2.9.0",
24
24
  "rsa>=4.9.1",
25
25
  "tenacity>=8.2.3,<10.0.0",
@@ -40,17 +40,17 @@ 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>=7.0.1; python_version>='3.10' and python_version<'3.11'",
43
+ "Sphinx>=7.0.1; python_version=='3.10'",
44
44
  "Sphinx>=8.2.0; python_version>='3.11'",
45
45
  "autodoc-pydantic>=2.0.1",
46
- "sphinx-autodoc-typehints>=1.19.5",
46
+ "sphinx-autodoc-typehints~=2.5",
47
47
  "furo",
48
48
  "sphinx-intl",
49
49
  "sphinx-inline-tabs",
50
50
  ]
51
51
 
52
52
  [project.optional-dependencies]
53
- slide-captcha = ["slide-tc~=0.1.3"]
53
+ slide-captcha = ["slide-tc~=0.1.4"]
54
54
 
55
55
  [tool.uv]
56
56
  prerelease = "if-necessary-or-explicit"
@@ -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):
File without changes