aioqzone 1.9.3.dev3__tar.gz → 1.9.4.dev2__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.4.dev2/.github/dependabot.yml +13 -0
- aioqzone-1.9.4.dev2/.github/workflows/auto-pr.yml +37 -0
- aioqzone-1.9.4.dev2/.github/workflows/build.yml +36 -0
- aioqzone-1.9.4.dev2/.github/workflows/codeql-analysis.yml +59 -0
- aioqzone-1.9.4.dev2/.github/workflows/sphinx.yml +67 -0
- aioqzone-1.9.4.dev2/.github/workflows/test.yml +51 -0
- aioqzone-1.9.4.dev2/.gitignore +28 -0
- aioqzone-1.9.4.dev2/.pre-commit-config.yaml +37 -0
- aioqzone-1.9.4.dev2/CONTRIBUTING.md +9 -0
- {aioqzone-1.9.3.dev3 → aioqzone-1.9.4.dev2}/PKG-INFO +21 -29
- aioqzone-1.9.4.dev2/README_en.md +84 -0
- aioqzone-1.9.4.dev2/cliff.toml +59 -0
- aioqzone-1.9.4.dev2/doc/source/_static/penguin-blob.webp +0 -0
- aioqzone-1.9.4.dev2/doc/source/_static/teaencoder.ts +145 -0
- aioqzone-1.9.4.dev2/doc/source/aioqzone/api/h5.rst +5 -0
- aioqzone-1.9.4.dev2/doc/source/aioqzone/api/index.rst +8 -0
- aioqzone-1.9.4.dev2/doc/source/aioqzone/api/login.rst +16 -0
- aioqzone-1.9.4.dev2/doc/source/aioqzone/exception.rst +6 -0
- aioqzone-1.9.4.dev2/doc/source/aioqzone/index.rst +12 -0
- aioqzone-1.9.4.dev2/doc/source/aioqzone/messages.rst +30 -0
- aioqzone-1.9.4.dev2/doc/source/aioqzone/model/api.rst +23 -0
- aioqzone-1.9.4.dev2/doc/source/aioqzone/model/index.rst +8 -0
- aioqzone-1.9.4.dev2/doc/source/aioqzone/model/protocol.rst +26 -0
- aioqzone-1.9.4.dev2/doc/source/aioqzone/reference.rst +29 -0
- aioqzone-1.9.4.dev2/doc/source/conf.py +79 -0
- aioqzone-1.9.4.dev2/doc/source/disclaimers.rst +49 -0
- aioqzone-1.9.4.dev2/doc/source/index.rst +37 -0
- aioqzone-1.9.4.dev2/doc/source/locale/zh_CN/LC_MESSAGES/aioqzone/api/h5.po +255 -0
- aioqzone-1.9.4.dev2/doc/source/locale/zh_CN/LC_MESSAGES/aioqzone/api/index.po +22 -0
- aioqzone-1.9.4.dev2/doc/source/locale/zh_CN/LC_MESSAGES/aioqzone/api/login.po +234 -0
- aioqzone-1.9.4.dev2/doc/source/locale/zh_CN/LC_MESSAGES/aioqzone/api/web.po +488 -0
- aioqzone-1.9.4.dev2/doc/source/locale/zh_CN/LC_MESSAGES/aioqzone/exception.po +52 -0
- aioqzone-1.9.4.dev2/doc/source/locale/zh_CN/LC_MESSAGES/aioqzone/index.po +22 -0
- aioqzone-1.9.4.dev2/doc/source/locale/zh_CN/LC_MESSAGES/aioqzone/messages.po +226 -0
- aioqzone-1.9.4.dev2/doc/source/locale/zh_CN/LC_MESSAGES/aioqzone/model/api.po +835 -0
- aioqzone-1.9.4.dev2/doc/source/locale/zh_CN/LC_MESSAGES/aioqzone/model/index.po +24 -0
- aioqzone-1.9.4.dev2/doc/source/locale/zh_CN/LC_MESSAGES/aioqzone/model/protocol.po +227 -0
- aioqzone-1.9.4.dev2/doc/source/locale/zh_CN/LC_MESSAGES/aioqzone/model/response.po +1023 -0
- aioqzone-1.9.4.dev2/doc/source/locale/zh_CN/LC_MESSAGES/aioqzone/reference.po +78 -0
- aioqzone-1.9.4.dev2/doc/source/locale/zh_CN/LC_MESSAGES/disclaimers.po +171 -0
- aioqzone-1.9.4.dev2/doc/source/locale/zh_CN/LC_MESSAGES/index.po +74 -0
- aioqzone-1.9.4.dev2/doc/source/locale/zh_CN/LC_MESSAGES/qqqr/base.po +75 -0
- aioqzone-1.9.4.dev2/doc/source/locale/zh_CN/LC_MESSAGES/qqqr/exception.po +78 -0
- aioqzone-1.9.4.dev2/doc/source/locale/zh_CN/LC_MESSAGES/qqqr/index.po +61 -0
- aioqzone-1.9.4.dev2/doc/source/locale/zh_CN/LC_MESSAGES/qqqr/jsjson.po +134 -0
- aioqzone-1.9.4.dev2/doc/source/locale/zh_CN/LC_MESSAGES/qqqr/qr/index.po +22 -0
- aioqzone-1.9.4.dev2/doc/source/locale/zh_CN/LC_MESSAGES/qqqr/qr/login.po +257 -0
- aioqzone-1.9.4.dev2/doc/source/locale/zh_CN/LC_MESSAGES/qqqr/qr/type.po +70 -0
- aioqzone-1.9.4.dev2/doc/source/locale/zh_CN/LC_MESSAGES/qqqr/up/captcha/capsess.po +32 -0
- aioqzone-1.9.4.dev2/doc/source/locale/zh_CN/LC_MESSAGES/qqqr/up/captcha/captcha.po +166 -0
- aioqzone-1.9.4.dev2/doc/source/locale/zh_CN/LC_MESSAGES/qqqr/up/captcha/index.po +108 -0
- aioqzone-1.9.4.dev2/doc/source/locale/zh_CN/LC_MESSAGES/qqqr/up/captcha/jigsaw.po +204 -0
- aioqzone-1.9.4.dev2/doc/source/locale/zh_CN/LC_MESSAGES/qqqr/up/encrypt.po +43 -0
- aioqzone-1.9.4.dev2/doc/source/locale/zh_CN/LC_MESSAGES/qqqr/up/index.po +26 -0
- aioqzone-1.9.4.dev2/doc/source/locale/zh_CN/LC_MESSAGES/qqqr/up/login.po +101 -0
- aioqzone-1.9.4.dev2/doc/source/locale/zh_CN/LC_MESSAGES/qqqr/up/type.po +433 -0
- aioqzone-1.9.4.dev2/doc/source/locale/zh_CN/LC_MESSAGES/reference.po +77 -0
- aioqzone-1.9.4.dev2/doc/source/qqqr/base.rst +7 -0
- aioqzone-1.9.4.dev2/doc/source/qqqr/exception.rst +6 -0
- aioqzone-1.9.4.dev2/doc/source/qqqr/index.rst +46 -0
- aioqzone-1.9.4.dev2/doc/source/qqqr/jsjson.rst +7 -0
- aioqzone-1.9.4.dev2/doc/source/qqqr/qr/index.rst +8 -0
- aioqzone-1.9.4.dev2/doc/source/qqqr/qr/login.rst +14 -0
- aioqzone-1.9.4.dev2/doc/source/qqqr/qr/type.rst +8 -0
- aioqzone-1.9.4.dev2/doc/source/qqqr/up/captcha/capsess.rst +14 -0
- aioqzone-1.9.4.dev2/doc/source/qqqr/up/captcha/captcha.rst +10 -0
- aioqzone-1.9.4.dev2/doc/source/qqqr/up/captcha/index.rst +69 -0
- aioqzone-1.9.4.dev2/doc/source/qqqr/up/encrypt.rst +5 -0
- aioqzone-1.9.4.dev2/doc/source/qqqr/up/index.rst +19 -0
- aioqzone-1.9.4.dev2/doc/source/qqqr/up/login.rst +12 -0
- aioqzone-1.9.4.dev2/doc/source/qqqr/up/type.rst +8 -0
- aioqzone-1.9.4.dev2/pyproject.toml +85 -0
- aioqzone-1.9.4.dev2/test/api/__init__.py +0 -0
- aioqzone-1.9.4.dev2/test/api/conftest.py +39 -0
- aioqzone-1.9.4.dev2/test/api/test_h5.py +124 -0
- aioqzone-1.9.4.dev2/test/api/test_loginman.py +122 -0
- aioqzone-1.9.4.dev2/test/conftest.py +30 -0
- aioqzone-1.9.4.dev2/test/login_logic/__init__.py +0 -0
- aioqzone-1.9.4.dev2/test/login_logic/test_captcha.py +109 -0
- aioqzone-1.9.4.dev2/test/login_logic/test_qr.py +84 -0
- aioqzone-1.9.4.dev2/test/login_logic/test_up.py +103 -0
- aioqzone-1.9.4.dev2/test/utils/test_entity.py +37 -0
- aioqzone-1.9.4.dev2/test/utils/test_json.py +35 -0
- aioqzone-1.9.4.dev2/test/utils/test_time.py +11 -0
- aioqzone-1.9.4.dev2/uv.lock +2005 -0
- aioqzone-1.9.3.dev3/pyproject.toml +0 -103
- {aioqzone-1.9.3.dev3 → aioqzone-1.9.4.dev2}/LICENSE +0 -0
- {aioqzone-1.9.3.dev3 → aioqzone-1.9.4.dev2}/README.md +0 -0
- {aioqzone-1.9.3.dev3 → aioqzone-1.9.4.dev2}/src/aioqzone/__init__.py +0 -0
- {aioqzone-1.9.3.dev3 → aioqzone-1.9.4.dev2}/src/aioqzone/api/__init__.py +0 -0
- {aioqzone-1.9.3.dev3 → aioqzone-1.9.4.dev2}/src/aioqzone/api/h5/__init__.py +0 -0
- {aioqzone-1.9.3.dev3 → aioqzone-1.9.4.dev2}/src/aioqzone/api/h5/model.py +0 -0
- {aioqzone-1.9.3.dev3 → aioqzone-1.9.4.dev2}/src/aioqzone/api/login/__init__.py +0 -0
- {aioqzone-1.9.3.dev3 → aioqzone-1.9.4.dev2}/src/aioqzone/api/login/_base.py +0 -0
- {aioqzone-1.9.3.dev3 → aioqzone-1.9.4.dev2}/src/aioqzone/exception.py +0 -0
- {aioqzone-1.9.3.dev3 → aioqzone-1.9.4.dev2}/src/aioqzone/message.py +0 -0
- {aioqzone-1.9.3.dev3 → aioqzone-1.9.4.dev2}/src/aioqzone/model/__init__.py +0 -0
- {aioqzone-1.9.3.dev3 → aioqzone-1.9.4.dev2}/src/aioqzone/model/api/__init__.py +0 -0
- {aioqzone-1.9.3.dev3 → aioqzone-1.9.4.dev2}/src/aioqzone/model/api/feed.py +0 -0
- {aioqzone-1.9.3.dev3 → aioqzone-1.9.4.dev2}/src/aioqzone/model/api/profile.py +0 -0
- {aioqzone-1.9.3.dev3 → aioqzone-1.9.4.dev2}/src/aioqzone/model/api/request.py +0 -0
- {aioqzone-1.9.3.dev3 → aioqzone-1.9.4.dev2}/src/aioqzone/model/api/response.py +0 -0
- {aioqzone-1.9.3.dev3 → aioqzone-1.9.4.dev2}/src/aioqzone/model/protocol/__init__.py +0 -0
- {aioqzone-1.9.3.dev3 → aioqzone-1.9.4.dev2}/src/aioqzone/model/protocol/config.py +0 -0
- {aioqzone-1.9.3.dev3 → aioqzone-1.9.4.dev2}/src/aioqzone/model/protocol/entity.py +0 -0
- {aioqzone-1.9.3.dev3 → aioqzone-1.9.4.dev2}/src/aioqzone/utils/__init__.py +0 -0
- {aioqzone-1.9.3.dev3 → aioqzone-1.9.4.dev2}/src/aioqzone/utils/entity.py +0 -0
- {aioqzone-1.9.3.dev3 → aioqzone-1.9.4.dev2}/src/aioqzone/utils/regex.py +0 -0
- {aioqzone-1.9.3.dev3 → aioqzone-1.9.4.dev2}/src/aioqzone/utils/retry.py +0 -0
- {aioqzone-1.9.3.dev3 → aioqzone-1.9.4.dev2}/src/aioqzone/utils/time.py +0 -0
- {aioqzone-1.9.3.dev3 → aioqzone-1.9.4.dev2}/src/qqqr/__init__.py +0 -0
- {aioqzone-1.9.3.dev3 → aioqzone-1.9.4.dev2}/src/qqqr/base.py +0 -0
- {aioqzone-1.9.3.dev3 → aioqzone-1.9.4.dev2}/src/qqqr/constant.py +0 -0
- {aioqzone-1.9.3.dev3 → aioqzone-1.9.4.dev2}/src/qqqr/exception.py +0 -0
- {aioqzone-1.9.3.dev3 → aioqzone-1.9.4.dev2}/src/qqqr/message.py +0 -0
- {aioqzone-1.9.3.dev3 → aioqzone-1.9.4.dev2}/src/qqqr/py.typed +0 -0
- {aioqzone-1.9.3.dev3 → aioqzone-1.9.4.dev2}/src/qqqr/qr/__init__.py +0 -0
- {aioqzone-1.9.3.dev3 → aioqzone-1.9.4.dev2}/src/qqqr/qr/type.py +0 -0
- {aioqzone-1.9.3.dev3 → aioqzone-1.9.4.dev2}/src/qqqr/type.py +0 -0
- {aioqzone-1.9.3.dev3 → aioqzone-1.9.4.dev2}/src/qqqr/up/__init__.py +0 -0
- {aioqzone-1.9.3.dev3 → aioqzone-1.9.4.dev2}/src/qqqr/up/_model.py +0 -0
- {aioqzone-1.9.3.dev3 → aioqzone-1.9.4.dev2}/src/qqqr/up/captcha/__init__.py +0 -0
- {aioqzone-1.9.3.dev3 → aioqzone-1.9.4.dev2}/src/qqqr/up/captcha/_model.py +0 -0
- {aioqzone-1.9.3.dev3 → aioqzone-1.9.4.dev2}/src/qqqr/up/captcha/capsess.py +0 -0
- {aioqzone-1.9.3.dev3 → aioqzone-1.9.4.dev2}/src/qqqr/up/captcha/click/__init__.py +0 -0
- {aioqzone-1.9.3.dev3 → aioqzone-1.9.4.dev2}/src/qqqr/up/captcha/click/_types.py +0 -0
- {aioqzone-1.9.3.dev3 → aioqzone-1.9.4.dev2}/src/qqqr/up/captcha/pil_utils.py +0 -0
- {aioqzone-1.9.3.dev3 → aioqzone-1.9.4.dev2}/src/qqqr/up/captcha/select/__init__.py +0 -0
- {aioqzone-1.9.3.dev3 → aioqzone-1.9.4.dev2}/src/qqqr/up/captcha/select/_types.py +0 -0
- {aioqzone-1.9.3.dev3 → aioqzone-1.9.4.dev2}/src/qqqr/up/captcha/slide/__init__.py +0 -0
- {aioqzone-1.9.3.dev3 → aioqzone-1.9.4.dev2}/src/qqqr/up/captcha/slide/_types.py +0 -0
- {aioqzone-1.9.3.dev3 → aioqzone-1.9.4.dev2}/src/qqqr/up/encrypt.py +0 -0
- {aioqzone-1.9.3.dev3 → aioqzone-1.9.4.dev2}/src/qqqr/up/h5.py +0 -0
- {aioqzone-1.9.3.dev3 → aioqzone-1.9.4.dev2}/src/qqqr/up/web.py +0 -0
- {aioqzone-1.9.3.dev3 → aioqzone-1.9.4.dev2}/src/qqqr/utils/encrypt.py +0 -0
- {aioqzone-1.9.3.dev3 → aioqzone-1.9.4.dev2}/src/qqqr/utils/iter.py +0 -0
- {aioqzone-1.9.3.dev3 → aioqzone-1.9.4.dev2}/src/qqqr/utils/jsjson.py +0 -0
- {aioqzone-1.9.3.dev3 → aioqzone-1.9.4.dev2}/src/qqqr/utils/net.py +0 -0
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
name: Auto PR
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches:
|
|
6
|
+
- dev
|
|
7
|
+
- dev/**
|
|
8
|
+
|
|
9
|
+
concurrency:
|
|
10
|
+
group: ci-${{ github.ref_name }}
|
|
11
|
+
cancel-in-progress: true
|
|
12
|
+
|
|
13
|
+
env:
|
|
14
|
+
target: beta
|
|
15
|
+
|
|
16
|
+
jobs:
|
|
17
|
+
pr:
|
|
18
|
+
name: Open or Edit PR
|
|
19
|
+
runs-on: ubuntu-latest
|
|
20
|
+
if: "!startsWith(github.event.head_commit.message, '@no-pr')"
|
|
21
|
+
permissions:
|
|
22
|
+
pull-requests: write
|
|
23
|
+
steps:
|
|
24
|
+
- uses: actions/checkout@v4
|
|
25
|
+
with:
|
|
26
|
+
fetch-depth: 0
|
|
27
|
+
|
|
28
|
+
- uses: JamzumSum/actions/pr-changelog@master
|
|
29
|
+
id: git-cliff
|
|
30
|
+
with:
|
|
31
|
+
start: ${{ env.target }}
|
|
32
|
+
|
|
33
|
+
- name: Push Changelog to PR
|
|
34
|
+
uses: JamzumSum/actions/push-pr-body@master
|
|
35
|
+
with:
|
|
36
|
+
base-branch: ${{ env.target }}
|
|
37
|
+
body: ${{ steps.git-cliff.outputs.changelog }}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
# This workflow will install Python dependencies, build and publish this repo to PyPI.
|
|
2
|
+
|
|
3
|
+
name: Publish to PyPI
|
|
4
|
+
|
|
5
|
+
on:
|
|
6
|
+
workflow_dispatch:
|
|
7
|
+
pull_request:
|
|
8
|
+
types:
|
|
9
|
+
- closed
|
|
10
|
+
branches:
|
|
11
|
+
- "release"
|
|
12
|
+
- "release/**"
|
|
13
|
+
- "beta"
|
|
14
|
+
- "beta/**"
|
|
15
|
+
|
|
16
|
+
jobs:
|
|
17
|
+
build:
|
|
18
|
+
runs-on: ubuntu-latest
|
|
19
|
+
if: |
|
|
20
|
+
github.event_name == 'workflow_dispatch' ||
|
|
21
|
+
contains(github.event.pull_request.labels.*.name, 'release')
|
|
22
|
+
steps:
|
|
23
|
+
#----------------------------------------------
|
|
24
|
+
# check-out repo and set-up python
|
|
25
|
+
#----------------------------------------------
|
|
26
|
+
- uses: actions/checkout@v4
|
|
27
|
+
- uses: astral-sh/setup-uv@v6
|
|
28
|
+
#----------------------------------------------
|
|
29
|
+
# -------- Build and release ---------
|
|
30
|
+
#----------------------------------------------
|
|
31
|
+
- name: Build dist and Publish to PyPI
|
|
32
|
+
env:
|
|
33
|
+
UV_PUBLISH_PASSWORD: ${{ secrets.PYPI_TOKEN }}
|
|
34
|
+
run: |
|
|
35
|
+
uv build
|
|
36
|
+
uv publish --username __token__
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
# For most projects, this workflow file will not need changing; you simply need
|
|
2
|
+
# to commit it to your repository.
|
|
3
|
+
#
|
|
4
|
+
# You may wish to alter this file to override the set of languages analyzed,
|
|
5
|
+
# or to provide custom queries or build logic.
|
|
6
|
+
#
|
|
7
|
+
# ******** NOTE ********
|
|
8
|
+
# We have attempted to detect the languages in your repository. Please check
|
|
9
|
+
# the `language` matrix defined below to confirm you have the correct set of
|
|
10
|
+
# supported CodeQL languages.
|
|
11
|
+
#
|
|
12
|
+
name: "CodeQL"
|
|
13
|
+
|
|
14
|
+
on:
|
|
15
|
+
pull_request:
|
|
16
|
+
# The branches below must be a subset of the branches above
|
|
17
|
+
branches: [ beta ]
|
|
18
|
+
paths:
|
|
19
|
+
- "*.py"
|
|
20
|
+
schedule:
|
|
21
|
+
- cron: '31 23 * * 0/2'
|
|
22
|
+
|
|
23
|
+
jobs:
|
|
24
|
+
analyze:
|
|
25
|
+
name: Analyze
|
|
26
|
+
runs-on: ubuntu-latest
|
|
27
|
+
permissions:
|
|
28
|
+
actions: read
|
|
29
|
+
contents: read
|
|
30
|
+
security-events: write
|
|
31
|
+
|
|
32
|
+
strategy:
|
|
33
|
+
fail-fast: false
|
|
34
|
+
matrix:
|
|
35
|
+
language: [ 'python' ]
|
|
36
|
+
# CodeQL supports [ 'cpp', 'csharp', 'go', 'java', 'javascript', 'python', 'ruby' ]
|
|
37
|
+
# Learn more about CodeQL language support at https://git.io/codeql-language-support
|
|
38
|
+
|
|
39
|
+
steps:
|
|
40
|
+
- name: Checkout repository
|
|
41
|
+
uses: actions/checkout@v4
|
|
42
|
+
|
|
43
|
+
# Initializes the CodeQL tools for scanning.
|
|
44
|
+
- name: Initialize CodeQL
|
|
45
|
+
uses: github/codeql-action/init@v3
|
|
46
|
+
with:
|
|
47
|
+
languages: ${{ matrix.language }}
|
|
48
|
+
# If you wish to specify custom queries, you can do so here or in a config file.
|
|
49
|
+
# By default, queries listed here will override any specified in a config file.
|
|
50
|
+
# Prefix the list here with "+" to use these queries and those in the config file.
|
|
51
|
+
# queries: ./path/to/local/query, your-org/your-repo/queries@main
|
|
52
|
+
|
|
53
|
+
- name: Perform CodeQL Analysis
|
|
54
|
+
uses: github/codeql-action/analyze@v3
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
concurrency:
|
|
58
|
+
group: codeql-${{ github.ref_name }}
|
|
59
|
+
cancel-in-progress: true
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
name: Sphinx Build and Deploy
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
pull_request:
|
|
5
|
+
types:
|
|
6
|
+
- review_requested
|
|
7
|
+
branches:
|
|
8
|
+
- beta
|
|
9
|
+
push:
|
|
10
|
+
branches:
|
|
11
|
+
- beta
|
|
12
|
+
paths:
|
|
13
|
+
- doc/**
|
|
14
|
+
- .github/workflows/sphinx.yml
|
|
15
|
+
|
|
16
|
+
concurrency:
|
|
17
|
+
group: pages
|
|
18
|
+
cancel-in-progress: true
|
|
19
|
+
|
|
20
|
+
jobs:
|
|
21
|
+
sphinx-build:
|
|
22
|
+
runs-on: ubuntu-latest
|
|
23
|
+
permissions:
|
|
24
|
+
contents: read
|
|
25
|
+
steps:
|
|
26
|
+
- uses: actions/checkout@v4
|
|
27
|
+
- uses: actions/configure-pages@v5
|
|
28
|
+
- uses: astral-sh/setup-uv@v6
|
|
29
|
+
|
|
30
|
+
- name: Install Library and Build HTML
|
|
31
|
+
run: |
|
|
32
|
+
echo "::group::Install Library"
|
|
33
|
+
uv sync --group doc
|
|
34
|
+
echo "::endgroup::"
|
|
35
|
+
|
|
36
|
+
echo "::group::Build HTML"
|
|
37
|
+
uv run sphinx-build doc/source doc/build/html -D release=$(uv version --short)
|
|
38
|
+
echo "::endgroup::"
|
|
39
|
+
|
|
40
|
+
- name: Fix permissions
|
|
41
|
+
run: |
|
|
42
|
+
chmod -c -R +rX "doc/build/html/" | while read line; do
|
|
43
|
+
echo "::warning title=Invalid file permissions automatically fixed::$line"
|
|
44
|
+
done
|
|
45
|
+
|
|
46
|
+
- name: Upload artifact
|
|
47
|
+
if: github.event_name == 'push'
|
|
48
|
+
uses: actions/upload-pages-artifact@v3
|
|
49
|
+
with:
|
|
50
|
+
path: doc/build/html
|
|
51
|
+
|
|
52
|
+
deploy:
|
|
53
|
+
if: github.event_name == 'push'
|
|
54
|
+
environment:
|
|
55
|
+
name: github-pages
|
|
56
|
+
url: ${{ steps.deployment.outputs.page_url }}
|
|
57
|
+
permissions:
|
|
58
|
+
pages: write
|
|
59
|
+
id-token: write
|
|
60
|
+
runs-on: ubuntu-latest
|
|
61
|
+
needs: sphinx-build
|
|
62
|
+
outputs:
|
|
63
|
+
page_url: ${{ steps.deployment.outputs.page_url }}
|
|
64
|
+
steps:
|
|
65
|
+
- name: Deploy to GitHub Pages
|
|
66
|
+
id: deployment
|
|
67
|
+
uses: actions/deploy-pages@v4
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
# install dependency and current package
|
|
2
|
+
name: Test Poetry Project
|
|
3
|
+
|
|
4
|
+
on:
|
|
5
|
+
pull_request:
|
|
6
|
+
types:
|
|
7
|
+
- review_requested
|
|
8
|
+
branches:
|
|
9
|
+
- beta
|
|
10
|
+
- release
|
|
11
|
+
|
|
12
|
+
concurrency:
|
|
13
|
+
group: test-${{ github.ref_name }}
|
|
14
|
+
cancel-in-progress: true
|
|
15
|
+
|
|
16
|
+
jobs:
|
|
17
|
+
install-test:
|
|
18
|
+
runs-on: ubuntu-latest
|
|
19
|
+
strategy:
|
|
20
|
+
matrix:
|
|
21
|
+
python-version: ["3.13", "3.11", "3.10", "3.9"]
|
|
22
|
+
steps:
|
|
23
|
+
#----------------------------------------------
|
|
24
|
+
# check-out repo and set-up python
|
|
25
|
+
#----------------------------------------------
|
|
26
|
+
- uses: actions/checkout@v4
|
|
27
|
+
- uses: astral-sh/setup-uv@v6
|
|
28
|
+
with:
|
|
29
|
+
python-version: ${{ matrix.python-version }}
|
|
30
|
+
enable-cache: true
|
|
31
|
+
|
|
32
|
+
- name: Install and Test
|
|
33
|
+
env:
|
|
34
|
+
TEST_UIN: ${{ secrets.TEST_UIN }}
|
|
35
|
+
TEST_PASSWORD: ${{ secrets.TEST_PASSWORD }}
|
|
36
|
+
run: |
|
|
37
|
+
echo "::group::Install Basic Dependencies"
|
|
38
|
+
uv sync --group test
|
|
39
|
+
echo "::endgroup::"
|
|
40
|
+
|
|
41
|
+
echo "::group::pytest outputs"
|
|
42
|
+
uv run pytest test --log-cli-level=WARNING
|
|
43
|
+
echo "::endgroup::"
|
|
44
|
+
|
|
45
|
+
- name: Request Changes
|
|
46
|
+
env:
|
|
47
|
+
GH_TOKEN: ${{ secrets.COMMENT_PAT }} # the reviewer PAT
|
|
48
|
+
run: |
|
|
49
|
+
if [[ $GH_TOKEN != "" ]]; then
|
|
50
|
+
gh pr review ${{ github.event.pull_request.number }} -r -b "Some test(s) failed."
|
|
51
|
+
fi
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
# local config
|
|
2
|
+
.vscode
|
|
3
|
+
.env
|
|
4
|
+
uv.toml
|
|
5
|
+
package-lock.json
|
|
6
|
+
|
|
7
|
+
# venv
|
|
8
|
+
.venv
|
|
9
|
+
.tox
|
|
10
|
+
/venv
|
|
11
|
+
node_modules
|
|
12
|
+
|
|
13
|
+
# cache and tempfiles
|
|
14
|
+
__pycache__
|
|
15
|
+
*.pyc
|
|
16
|
+
tmp
|
|
17
|
+
/data
|
|
18
|
+
|
|
19
|
+
# build, metadata and distributions
|
|
20
|
+
/dist
|
|
21
|
+
/build
|
|
22
|
+
/doc/source/locale/**/*.mo
|
|
23
|
+
*.egg-info
|
|
24
|
+
|
|
25
|
+
# useless documents
|
|
26
|
+
/archive
|
|
27
|
+
/doc/*
|
|
28
|
+
!/doc/source
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
# See https://pre-commit.com for more information
|
|
2
|
+
# See https://pre-commit.com/hooks.html for more hooks
|
|
3
|
+
repos:
|
|
4
|
+
- repo: https://github.com/pre-commit/pre-commit-hooks
|
|
5
|
+
rev: v5.0.0
|
|
6
|
+
hooks:
|
|
7
|
+
- id: check-case-conflict
|
|
8
|
+
- id: trailing-whitespace
|
|
9
|
+
- id: end-of-file-fixer
|
|
10
|
+
- id: check-yaml
|
|
11
|
+
- id: check-added-large-files
|
|
12
|
+
- repo: https://github.com/astral-sh/uv-pre-commit
|
|
13
|
+
rev: 0.7.2
|
|
14
|
+
hooks:
|
|
15
|
+
- id: uv-lock
|
|
16
|
+
- repo: local
|
|
17
|
+
hooks:
|
|
18
|
+
- id: isort
|
|
19
|
+
name: sort imports
|
|
20
|
+
entry: uv run ruff check --select I --fix
|
|
21
|
+
pass_filenames: false
|
|
22
|
+
language: system
|
|
23
|
+
types: [python]
|
|
24
|
+
- id: black
|
|
25
|
+
name: format
|
|
26
|
+
entry: uv run ruff format
|
|
27
|
+
pass_filenames: false
|
|
28
|
+
language: system
|
|
29
|
+
types: [python]
|
|
30
|
+
- id: pytest
|
|
31
|
+
name: pytest-check
|
|
32
|
+
entry: uv run pytest test
|
|
33
|
+
language: system
|
|
34
|
+
pass_filenames: false
|
|
35
|
+
types: [python, toml]
|
|
36
|
+
default_language_version:
|
|
37
|
+
python: python3
|
|
@@ -1,39 +1,32 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
2
|
Name: aioqzone
|
|
3
|
-
Version: 1.9.
|
|
3
|
+
Version: 1.9.4.dev2
|
|
4
4
|
Summary: A Python wrapper for Qzone login and H5 APIs.
|
|
5
|
-
|
|
6
|
-
|
|
5
|
+
Project-URL: Homepage, https://github.com/aioqzone/aioqzone
|
|
6
|
+
Project-URL: Repository, https://github.com/aioqzone/aioqzone
|
|
7
|
+
Project-URL: Documentation, https://aioqzone.github.io/aioqzone
|
|
8
|
+
Project-URL: Bug Tracker, https://github.com/aioqzone/aioqzone/issues
|
|
9
|
+
Project-URL: Discussion, https://t.me/aioqzone_chatroom
|
|
7
10
|
Author: aioqzone
|
|
8
|
-
|
|
9
|
-
|
|
11
|
+
Maintainer-email: JamzumSum <22952836+JamzumSum@users.noreply.github.com>
|
|
12
|
+
License-Expression: AGPL-3.0
|
|
13
|
+
License-File: LICENSE
|
|
14
|
+
Keywords: asyncio-spider,autologin,qzone-api
|
|
10
15
|
Classifier: Development Status :: 4 - Beta
|
|
11
16
|
Classifier: Intended Audience :: Developers
|
|
12
|
-
Classifier: License :: OSI Approved :: GNU Affero General Public License v3
|
|
13
|
-
Classifier: Programming Language :: Python :: 3
|
|
14
|
-
Classifier: Programming Language :: Python :: 3.9
|
|
15
|
-
Classifier: Programming Language :: Python :: 3.10
|
|
16
|
-
Classifier: Programming Language :: Python :: 3.11
|
|
17
|
-
Classifier: Programming Language :: Python :: 3.12
|
|
18
|
-
Classifier: Programming Language :: Python :: 3.13
|
|
19
17
|
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
20
18
|
Classifier: Typing :: Typed
|
|
19
|
+
Requires-Python: >=3.9
|
|
20
|
+
Requires-Dist: aiohttp>=3.9.0
|
|
21
|
+
Requires-Dist: pillow>=10.1.0
|
|
22
|
+
Requires-Dist: pychaosvm~=0.4.3
|
|
23
|
+
Requires-Dist: pydantic-settings>=2.9.0
|
|
24
|
+
Requires-Dist: pydantic>=2.11.4
|
|
25
|
+
Requires-Dist: rsa>=4.9.1
|
|
26
|
+
Requires-Dist: tenacity<10.0.0,>=8.2.3
|
|
27
|
+
Requires-Dist: tylisten>=2.2.1
|
|
21
28
|
Provides-Extra: slide-captcha
|
|
22
|
-
Requires-Dist:
|
|
23
|
-
Requires-Dist: exceptiongroup (>=1.1.1,<2.0.0)
|
|
24
|
-
Requires-Dist: pillow (>=10.1.0,<11.0.0)
|
|
25
|
-
Requires-Dist: pychaosvm (>=0.4.3,<0.5.0)
|
|
26
|
-
Requires-Dist: pydantic (>=2.11.3,<3.0.0)
|
|
27
|
-
Requires-Dist: pydantic-settings (>=2.2.0,<3.0.0)
|
|
28
|
-
Requires-Dist: rsa (>=4.8,<5.0)
|
|
29
|
-
Requires-Dist: slide-tc (>=0.1.1,<0.2.0) ; extra == "slide-captcha"
|
|
30
|
-
Requires-Dist: tenacity (>=8.2.3,<10.0.0)
|
|
31
|
-
Requires-Dist: tylisten (>=2.1.4,<3.0.0)
|
|
32
|
-
Project-URL: Bug Tracker, https://github.com/aioqzone/aioqzone/issues
|
|
33
|
-
Project-URL: Documentation, https://aioqzone.github.io/aioqzone
|
|
34
|
-
Project-URL: Discussion, https://t.me/aioqzone_chatroom
|
|
35
|
-
Project-URL: Homepage, https://github.com/aioqzone/aioqzone
|
|
36
|
-
Project-URL: Repository, https://github.com/aioqzone/aioqzone
|
|
29
|
+
Requires-Dist: slide-tc~=0.1.1; extra == 'slide-captcha'
|
|
37
30
|
Description-Content-Type: text/markdown
|
|
38
31
|
|
|
39
32
|
# aioqzone
|
|
@@ -123,4 +116,3 @@ along with this program. If not, see <https://www.gnu.org/licenses/>.
|
|
|
123
116
|
[pychaosvm]: https://github.com/aioqzone/pychaosvm "A Python envirionment for Tencent ChaosVM."
|
|
124
117
|
[pypi]: https://pypi.org/project/aioqzone
|
|
125
118
|
[org]: https://github.com/aioqzone
|
|
126
|
-
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
# aioqzone
|
|
2
|
+
|
|
3
|
+
aioqzone is a python package handling Qzone web login and wrapping some common Qzone Http apis.
|
|
4
|
+
|
|
5
|
+
[][home]
|
|
6
|
+
[][pypi]
|
|
7
|
+
[](https://github.com/psf/black)
|
|
8
|
+
[](https://t.me/aioqzone_chatroom)
|
|
9
|
+
|
|
10
|
+
English | [简体中文](README.md)
|
|
11
|
+
|
|
12
|
+
> [!WARNING]
|
|
13
|
+
> aioqzone is under active development. Any functionality and interface may be changed.
|
|
14
|
+
|
|
15
|
+
## Features
|
|
16
|
+
|
|
17
|
+
### Qzone Feature
|
|
18
|
+
|
|
19
|
+
- [x] [QR login](src/qqqr/qr/)
|
|
20
|
+
- [x] [password login](src/qqqr/up/) (limited)
|
|
21
|
+
- [x] [solve slide captcha](src/qqqr/up/captcha/slide)
|
|
22
|
+
- [x] [parse select captcha](src/qqqr/up/captcha/select)
|
|
23
|
+
- [ ] [pass network environment verification][pychaosvm]
|
|
24
|
+
- [x] get complete html feeds
|
|
25
|
+
- [x] get feed details
|
|
26
|
+
- [x] like/unlike app
|
|
27
|
+
- [x] publish/update/delete text feeds
|
|
28
|
+
- [x] add comment
|
|
29
|
+
|
|
30
|
+
### Why using this package?
|
|
31
|
+
|
|
32
|
+
- [x] full ide typing support (typing)
|
|
33
|
+
- [x] api validation (pydantic)
|
|
34
|
+
- [x] async design
|
|
35
|
+
- [x] complete infrastructure to ease your own develop
|
|
36
|
+
- [x] [doc support](https://aioqzone.github.io/aioqzone)
|
|
37
|
+
|
|
38
|
+
__Working On:__
|
|
39
|
+
|
|
40
|
+
- [ ] test coverage
|
|
41
|
+
|
|
42
|
+
## Description
|
|
43
|
+
|
|
44
|
+
|package |brief description |
|
|
45
|
+
|-----------|-------------------|
|
|
46
|
+
|aioqzone |qzone api |
|
|
47
|
+
|qqqr |qzone login |
|
|
48
|
+
|
|
49
|
+
## Examples
|
|
50
|
+
|
|
51
|
+
You can look for these repos for examples in practice.
|
|
52
|
+
|
|
53
|
+
### aioqzone plugins
|
|
54
|
+
|
|
55
|
+
- [aioqzone-feed][aioqzone-feed]: aioqzone plugin providing higher level api for processing feed
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
## License
|
|
59
|
+
|
|
60
|
+
```
|
|
61
|
+
Copyright (C) 2022-2025 aioqzone.
|
|
62
|
+
|
|
63
|
+
This program is free software: you can redistribute it and/or modify
|
|
64
|
+
it under the terms of the GNU Affero General Public License as published
|
|
65
|
+
by the Free Software Foundation, either version 3 of the License, or
|
|
66
|
+
(at your option) any later version.
|
|
67
|
+
|
|
68
|
+
This program is distributed in the hope that it will be useful,
|
|
69
|
+
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
70
|
+
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
71
|
+
GNU Affero General Public License for more details.
|
|
72
|
+
|
|
73
|
+
You should have received a copy of the GNU Affero General Public License
|
|
74
|
+
along with this program. If not, see <https://www.gnu.org/licenses/>.
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
- [AGPL-3.0](LICENSE)
|
|
78
|
+
- [Disclaimers](https://aioqzone.github.io/aioqzone/disclaimers.html)
|
|
79
|
+
|
|
80
|
+
|
|
81
|
+
[home]: https://github.com/aioqzone/aioqzone "Python wrapper for Qzone web login and Qzone http api"
|
|
82
|
+
[aioqzone-feed]: https://github.com/aioqzone/aioqzone-feed "aioqzone plugin providing higher level api for processing feed"
|
|
83
|
+
[pychaosvm]: https://github.com/aioqzone/pychaosvm "A Python envirionment for Tencent ChaosVM."
|
|
84
|
+
[pypi]: https://pypi.org/project/aioqzone
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
# configuration file for git-cliff (0.1.0)
|
|
2
|
+
|
|
3
|
+
[changelog]
|
|
4
|
+
# changelog header
|
|
5
|
+
header = """
|
|
6
|
+
# Changelog
|
|
7
|
+
|
|
8
|
+
All notable changes to this project will be documented in this file.\n
|
|
9
|
+
"""
|
|
10
|
+
# template for the changelog body
|
|
11
|
+
# https://tera.netlify.app/docs/#introduction
|
|
12
|
+
body = """
|
|
13
|
+
{% if version %}\
|
|
14
|
+
## [{{ version | trim_start_matches(pat="v") }}] - {{ timestamp | date(format="%Y-%m-%d") }}
|
|
15
|
+
{% else %}\
|
|
16
|
+
## [unreleased]
|
|
17
|
+
{% endif %}\
|
|
18
|
+
{% for group, commits in commits | group_by(attribute="group") %}
|
|
19
|
+
### {{ group | upper_first }}
|
|
20
|
+
{% for commit in commits %}
|
|
21
|
+
{% raw -%} - {% endraw %}\
|
|
22
|
+
{%- if commit.breaking -%} 💥 **{% endif -%}\
|
|
23
|
+
{%- if commit.scope -%} ({{ commit.scope }}) {% endif -%}\
|
|
24
|
+
{{ commit.message | upper_first }} ({{ commit.id | truncate(length=7, end="") }})\
|
|
25
|
+
{%- if commit.breaking -%} ** {%- endif -%}\
|
|
26
|
+
{% endfor %}
|
|
27
|
+
{% endfor %}\n
|
|
28
|
+
"""
|
|
29
|
+
# remove the leading and trailing whitespaces from the template
|
|
30
|
+
trim = true
|
|
31
|
+
# changelog footer
|
|
32
|
+
footer = """
|
|
33
|
+
<!-- generated by git-cliff -->
|
|
34
|
+
"""
|
|
35
|
+
|
|
36
|
+
[git]
|
|
37
|
+
# allow only conventional commits
|
|
38
|
+
# https://www.conventionalcommits.org
|
|
39
|
+
conventional_commits = true
|
|
40
|
+
# regex for parsing and grouping commits
|
|
41
|
+
commit_parsers = [
|
|
42
|
+
{ message = "^build", group = "Build"},
|
|
43
|
+
{ message = "^ci", group = "CI/CD"},
|
|
44
|
+
{ message = "^feat", group = "Features"},
|
|
45
|
+
{ message = "^fix", group = "Bug Fixes"},
|
|
46
|
+
{ message = "^doc", group = "Documentation"},
|
|
47
|
+
{ message = "^fmt", group = "Styling"},
|
|
48
|
+
{ message = "^perf", group = "Performance"},
|
|
49
|
+
{ message = "^proj", group = "Project"},
|
|
50
|
+
{ message = "^chore", group = "Miscellaneous"},
|
|
51
|
+
{ message = "^refactor", group = "Refactor"},
|
|
52
|
+
{ message = "^style", group = "Styling"},
|
|
53
|
+
{ message = "^test", group = "Testing"},
|
|
54
|
+
{ body = ".*security", group = "Security"},
|
|
55
|
+
]
|
|
56
|
+
# filter out the commits that are not matched by commit parsers
|
|
57
|
+
filter_commits = false
|
|
58
|
+
# glob pattern for matching git tags
|
|
59
|
+
tag_pattern = "v[0-9]*"
|
|
Binary file
|