qqmusic-api-python 0.7.2__tar.gz → 0.7.3__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.
- {qqmusic_api_python-0.7.2 → qqmusic_api_python-0.7.3}/PKG-INFO +2 -2
- {qqmusic_api_python-0.7.2 → qqmusic_api_python-0.7.3}/docs/release-notes.md +24 -0
- qqmusic_api_python-0.7.3/examples/singer_name_special_display.py +22 -0
- {qqmusic_api_python-0.7.2 → qqmusic_api_python-0.7.3}/qqmusic_api/__init__.py +1 -1
- {qqmusic_api_python-0.7.2 → qqmusic_api_python-0.7.3}/qqmusic_api/models/singer.py +25 -0
- {qqmusic_api_python-0.7.2 → qqmusic_api_python-0.7.3}/qqmusic_api/modules/singer.py +19 -0
- {qqmusic_api_python-0.7.2 → qqmusic_api_python-0.7.3}/qqmusic_api/modules/song.py +4 -1
- {qqmusic_api_python-0.7.2 → qqmusic_api_python-0.7.3}/tests/test_singer.py +24 -0
- {qqmusic_api_python-0.7.2 → qqmusic_api_python-0.7.3}/tests/test_song.py +7 -0
- {qqmusic_api_python-0.7.2 → qqmusic_api_python-0.7.3}/web/requirements.txt +32 -32
- {qqmusic_api_python-0.7.2 → qqmusic_api_python-0.7.3}/web/src/routes/singer.py +9 -0
- {qqmusic_api_python-0.7.2 → qqmusic_api_python-0.7.3}/.agents/skills/pydantic/SKILL.md +0 -0
- {qqmusic_api_python-0.7.2 → qqmusic_api_python-0.7.3}/.agents/skills/python-standards/SKILL.md +0 -0
- {qqmusic_api_python-0.7.2 → qqmusic_api_python-0.7.3}/.agents/skills/uv-package-manager/SKILL.md +0 -0
- {qqmusic_api_python-0.7.2 → qqmusic_api_python-0.7.3}/.dockerignore +0 -0
- {qqmusic_api_python-0.7.2 → qqmusic_api_python-0.7.3}/.github/ISSUE_TEMPLATE/bug.yml +0 -0
- {qqmusic_api_python-0.7.2 → qqmusic_api_python-0.7.3}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {qqmusic_api_python-0.7.2 → qqmusic_api_python-0.7.3}/.github/ISSUE_TEMPLATE/feature.yml +0 -0
- {qqmusic_api_python-0.7.2 → qqmusic_api_python-0.7.3}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
- {qqmusic_api_python-0.7.2 → qqmusic_api_python-0.7.3}/.github/renovate.json +0 -0
- {qqmusic_api_python-0.7.2 → qqmusic_api_python-0.7.3}/.github/workflows/checking.yaml +0 -0
- {qqmusic_api_python-0.7.2 → qqmusic_api_python-0.7.3}/.github/workflows/docs.yml +0 -0
- {qqmusic_api_python-0.7.2 → qqmusic_api_python-0.7.3}/.github/workflows/release.yml +0 -0
- {qqmusic_api_python-0.7.2 → qqmusic_api_python-0.7.3}/.github/workflows/testing.yml +0 -0
- {qqmusic_api_python-0.7.2 → qqmusic_api_python-0.7.3}/.gitignore +0 -0
- {qqmusic_api_python-0.7.2 → qqmusic_api_python-0.7.3}/.markdownlint-cli2.yaml +0 -0
- {qqmusic_api_python-0.7.2 → qqmusic_api_python-0.7.3}/AGENTS.md +0 -0
- {qqmusic_api_python-0.7.2 → qqmusic_api_python-0.7.3}/CLAUDE.md +0 -0
- {qqmusic_api_python-0.7.2 → qqmusic_api_python-0.7.3}/LICENSE +0 -0
- {qqmusic_api_python-0.7.2 → qqmusic_api_python-0.7.3}/README.md +0 -0
- {qqmusic_api_python-0.7.2 → qqmusic_api_python-0.7.3}/assets/qq-music.svg +0 -0
- {qqmusic_api_python-0.7.2 → qqmusic_api_python-0.7.3}/cliff.toml +0 -0
- {qqmusic_api_python-0.7.2 → qqmusic_api_python-0.7.3}/docs/coding.md +0 -0
- {qqmusic_api_python-0.7.2 → qqmusic_api_python-0.7.3}/docs/contributing.md +0 -0
- {qqmusic_api_python-0.7.2 → qqmusic_api_python-0.7.3}/docs/index.md +0 -0
- {qqmusic_api_python-0.7.2 → qqmusic_api_python-0.7.3}/docs/reference/core/client.md +0 -0
- {qqmusic_api_python-0.7.2 → qqmusic_api_python-0.7.3}/docs/reference/core/exception.md +0 -0
- {qqmusic_api_python-0.7.2 → qqmusic_api_python-0.7.3}/docs/reference/core/pagination.md +0 -0
- {qqmusic_api_python-0.7.2 → qqmusic_api_python-0.7.3}/docs/reference/core/request.md +0 -0
- {qqmusic_api_python-0.7.2 → qqmusic_api_python-0.7.3}/docs/reference/core/versioning.md +0 -0
- {qqmusic_api_python-0.7.2 → qqmusic_api_python-0.7.3}/docs/reference/model/album.md +0 -0
- {qqmusic_api_python-0.7.2 → qqmusic_api_python-0.7.3}/docs/reference/model/base.md +0 -0
- {qqmusic_api_python-0.7.2 → qqmusic_api_python-0.7.3}/docs/reference/model/comment.md +0 -0
- {qqmusic_api_python-0.7.2 → qqmusic_api_python-0.7.3}/docs/reference/model/helper.md +0 -0
- {qqmusic_api_python-0.7.2 → qqmusic_api_python-0.7.3}/docs/reference/model/login.md +0 -0
- {qqmusic_api_python-0.7.2 → qqmusic_api_python-0.7.3}/docs/reference/model/lyric.md +0 -0
- {qqmusic_api_python-0.7.2 → qqmusic_api_python-0.7.3}/docs/reference/model/mv.md +0 -0
- {qqmusic_api_python-0.7.2 → qqmusic_api_python-0.7.3}/docs/reference/model/private_message.md +0 -0
- {qqmusic_api_python-0.7.2 → qqmusic_api_python-0.7.3}/docs/reference/model/recommend.md +0 -0
- {qqmusic_api_python-0.7.2 → qqmusic_api_python-0.7.3}/docs/reference/model/request.md +0 -0
- {qqmusic_api_python-0.7.2 → qqmusic_api_python-0.7.3}/docs/reference/model/search.md +0 -0
- {qqmusic_api_python-0.7.2 → qqmusic_api_python-0.7.3}/docs/reference/model/singer.md +0 -0
- {qqmusic_api_python-0.7.2 → qqmusic_api_python-0.7.3}/docs/reference/model/song.md +0 -0
- {qqmusic_api_python-0.7.2 → qqmusic_api_python-0.7.3}/docs/reference/model/songlist.md +0 -0
- {qqmusic_api_python-0.7.2 → qqmusic_api_python-0.7.3}/docs/reference/model/top.md +0 -0
- {qqmusic_api_python-0.7.2 → qqmusic_api_python-0.7.3}/docs/reference/model/user.md +0 -0
- {qqmusic_api_python-0.7.2 → qqmusic_api_python-0.7.3}/docs/reference/modules/album.md +0 -0
- {qqmusic_api_python-0.7.2 → qqmusic_api_python-0.7.3}/docs/reference/modules/comment.md +0 -0
- {qqmusic_api_python-0.7.2 → qqmusic_api_python-0.7.3}/docs/reference/modules/helper.md +0 -0
- {qqmusic_api_python-0.7.2 → qqmusic_api_python-0.7.3}/docs/reference/modules/helper_utils.md +0 -0
- {qqmusic_api_python-0.7.2 → qqmusic_api_python-0.7.3}/docs/reference/modules/login.md +0 -0
- {qqmusic_api_python-0.7.2 → qqmusic_api_python-0.7.3}/docs/reference/modules/login_utils.md +0 -0
- {qqmusic_api_python-0.7.2 → qqmusic_api_python-0.7.3}/docs/reference/modules/lyric.md +0 -0
- {qqmusic_api_python-0.7.2 → qqmusic_api_python-0.7.3}/docs/reference/modules/mv.md +0 -0
- {qqmusic_api_python-0.7.2 → qqmusic_api_python-0.7.3}/docs/reference/modules/private_message.md +0 -0
- {qqmusic_api_python-0.7.2 → qqmusic_api_python-0.7.3}/docs/reference/modules/recommend.md +0 -0
- {qqmusic_api_python-0.7.2 → qqmusic_api_python-0.7.3}/docs/reference/modules/search.md +0 -0
- {qqmusic_api_python-0.7.2 → qqmusic_api_python-0.7.3}/docs/reference/modules/singer.md +0 -0
- {qqmusic_api_python-0.7.2 → qqmusic_api_python-0.7.3}/docs/reference/modules/song.md +0 -0
- {qqmusic_api_python-0.7.2 → qqmusic_api_python-0.7.3}/docs/reference/modules/songlist.md +0 -0
- {qqmusic_api_python-0.7.2 → qqmusic_api_python-0.7.3}/docs/reference/modules/top.md +0 -0
- {qqmusic_api_python-0.7.2 → qqmusic_api_python-0.7.3}/docs/reference/modules/user.md +0 -0
- {qqmusic_api_python-0.7.2 → qqmusic_api_python-0.7.3}/docs/tutorial/client.md +0 -0
- {qqmusic_api_python-0.7.2 → qqmusic_api_python-0.7.3}/docs/tutorial/credential.md +0 -0
- {qqmusic_api_python-0.7.2 → qqmusic_api_python-0.7.3}/docs/tutorial/download.md +0 -0
- {qqmusic_api_python-0.7.2 → qqmusic_api_python-0.7.3}/docs/tutorial/error-handling.md +0 -0
- {qqmusic_api_python-0.7.2 → qqmusic_api_python-0.7.3}/docs/tutorial/login.md +0 -0
- {qqmusic_api_python-0.7.2 → qqmusic_api_python-0.7.3}/docs/tutorial/pagination.md +0 -0
- {qqmusic_api_python-0.7.2 → qqmusic_api_python-0.7.3}/docs/tutorial/start.md +0 -0
- {qqmusic_api_python-0.7.2 → qqmusic_api_python-0.7.3}/docs/tutorial/web.md +0 -0
- {qqmusic_api_python-0.7.2 → qqmusic_api_python-0.7.3}/examples/download_song.py +0 -0
- {qqmusic_api_python-0.7.2 → qqmusic_api_python-0.7.3}/examples/get_all_sheets.py +0 -0
- {qqmusic_api_python-0.7.2 → qqmusic_api_python-0.7.3}/examples/phone_login.py +0 -0
- {qqmusic_api_python-0.7.2 → qqmusic_api_python-0.7.3}/examples/private_message.py +0 -0
- {qqmusic_api_python-0.7.2 → qqmusic_api_python-0.7.3}/examples/qrcode_login.py +0 -0
- {qqmusic_api_python-0.7.2 → qqmusic_api_python-0.7.3}/examples/upload_file.py +0 -0
- {qqmusic_api_python-0.7.2 → qqmusic_api_python-0.7.3}/prek.toml +0 -0
- {qqmusic_api_python-0.7.2 → qqmusic_api_python-0.7.3}/pyproject.toml +0 -0
- {qqmusic_api_python-0.7.2 → qqmusic_api_python-0.7.3}/qqmusic_api/algorithms/__init__.py +0 -0
- {qqmusic_api_python-0.7.2 → qqmusic_api_python-0.7.3}/qqmusic_api/algorithms/sign.py +0 -0
- {qqmusic_api_python-0.7.2 → qqmusic_api_python-0.7.3}/qqmusic_api/algorithms/tripledes.py +0 -0
- {qqmusic_api_python-0.7.2 → qqmusic_api_python-0.7.3}/qqmusic_api/core/__init__.py +0 -0
- {qqmusic_api_python-0.7.2 → qqmusic_api_python-0.7.3}/qqmusic_api/core/api_context.py +0 -0
- {qqmusic_api_python-0.7.2 → qqmusic_api_python-0.7.3}/qqmusic_api/core/client.py +0 -0
- {qqmusic_api_python-0.7.2 → qqmusic_api_python-0.7.3}/qqmusic_api/core/exceptions.py +0 -0
- {qqmusic_api_python-0.7.2 → qqmusic_api_python-0.7.3}/qqmusic_api/core/pagination.py +0 -0
- {qqmusic_api_python-0.7.2 → qqmusic_api_python-0.7.3}/qqmusic_api/core/request.py +0 -0
- {qqmusic_api_python-0.7.2 → qqmusic_api_python-0.7.3}/qqmusic_api/core/versioning.py +0 -0
- {qqmusic_api_python-0.7.2 → qqmusic_api_python-0.7.3}/qqmusic_api/models/__init__.py +0 -0
- {qqmusic_api_python-0.7.2 → qqmusic_api_python-0.7.3}/qqmusic_api/models/_validator.py +0 -0
- {qqmusic_api_python-0.7.2 → qqmusic_api_python-0.7.3}/qqmusic_api/models/album.py +0 -0
- {qqmusic_api_python-0.7.2 → qqmusic_api_python-0.7.3}/qqmusic_api/models/base.py +0 -0
- {qqmusic_api_python-0.7.2 → qqmusic_api_python-0.7.3}/qqmusic_api/models/comment.py +0 -0
- {qqmusic_api_python-0.7.2 → qqmusic_api_python-0.7.3}/qqmusic_api/models/helper.py +0 -0
- {qqmusic_api_python-0.7.2 → qqmusic_api_python-0.7.3}/qqmusic_api/models/login.py +0 -0
- {qqmusic_api_python-0.7.2 → qqmusic_api_python-0.7.3}/qqmusic_api/models/lyric.py +0 -0
- {qqmusic_api_python-0.7.2 → qqmusic_api_python-0.7.3}/qqmusic_api/models/mv.py +0 -0
- {qqmusic_api_python-0.7.2 → qqmusic_api_python-0.7.3}/qqmusic_api/models/private_message.py +0 -0
- {qqmusic_api_python-0.7.2 → qqmusic_api_python-0.7.3}/qqmusic_api/models/recommend.py +0 -0
- {qqmusic_api_python-0.7.2 → qqmusic_api_python-0.7.3}/qqmusic_api/models/request.py +0 -0
- {qqmusic_api_python-0.7.2 → qqmusic_api_python-0.7.3}/qqmusic_api/models/search.py +0 -0
- {qqmusic_api_python-0.7.2 → qqmusic_api_python-0.7.3}/qqmusic_api/models/song.py +0 -0
- {qqmusic_api_python-0.7.2 → qqmusic_api_python-0.7.3}/qqmusic_api/models/songlist.py +0 -0
- {qqmusic_api_python-0.7.2 → qqmusic_api_python-0.7.3}/qqmusic_api/models/top.py +0 -0
- {qqmusic_api_python-0.7.2 → qqmusic_api_python-0.7.3}/qqmusic_api/models/user.py +0 -0
- {qqmusic_api_python-0.7.2 → qqmusic_api_python-0.7.3}/qqmusic_api/modules/__init__.py +0 -0
- {qqmusic_api_python-0.7.2 → qqmusic_api_python-0.7.3}/qqmusic_api/modules/_base.py +0 -0
- {qqmusic_api_python-0.7.2 → qqmusic_api_python-0.7.3}/qqmusic_api/modules/album.py +0 -0
- {qqmusic_api_python-0.7.2 → qqmusic_api_python-0.7.3}/qqmusic_api/modules/comment.py +0 -0
- {qqmusic_api_python-0.7.2 → qqmusic_api_python-0.7.3}/qqmusic_api/modules/helper.py +0 -0
- {qqmusic_api_python-0.7.2 → qqmusic_api_python-0.7.3}/qqmusic_api/modules/helper_utils.py +0 -0
- {qqmusic_api_python-0.7.2 → qqmusic_api_python-0.7.3}/qqmusic_api/modules/login.py +0 -0
- {qqmusic_api_python-0.7.2 → qqmusic_api_python-0.7.3}/qqmusic_api/modules/login_utils.py +0 -0
- {qqmusic_api_python-0.7.2 → qqmusic_api_python-0.7.3}/qqmusic_api/modules/lyric.py +0 -0
- {qqmusic_api_python-0.7.2 → qqmusic_api_python-0.7.3}/qqmusic_api/modules/mv.py +0 -0
- {qqmusic_api_python-0.7.2 → qqmusic_api_python-0.7.3}/qqmusic_api/modules/private_message.py +0 -0
- {qqmusic_api_python-0.7.2 → qqmusic_api_python-0.7.3}/qqmusic_api/modules/recommend.py +0 -0
- {qqmusic_api_python-0.7.2 → qqmusic_api_python-0.7.3}/qqmusic_api/modules/search.py +0 -0
- {qqmusic_api_python-0.7.2 → qqmusic_api_python-0.7.3}/qqmusic_api/modules/songlist.py +0 -0
- {qqmusic_api_python-0.7.2 → qqmusic_api_python-0.7.3}/qqmusic_api/modules/top.py +0 -0
- {qqmusic_api_python-0.7.2 → qqmusic_api_python-0.7.3}/qqmusic_api/modules/user.py +0 -0
- {qqmusic_api_python-0.7.2 → qqmusic_api_python-0.7.3}/qqmusic_api/utils/__init__.py +0 -0
- {qqmusic_api_python-0.7.2 → qqmusic_api_python-0.7.3}/qqmusic_api/utils/common.py +0 -0
- {qqmusic_api_python-0.7.2 → qqmusic_api_python-0.7.3}/qqmusic_api/utils/device.py +0 -0
- {qqmusic_api_python-0.7.2 → qqmusic_api_python-0.7.3}/qqmusic_api/utils/mqtt.py +0 -0
- {qqmusic_api_python-0.7.2 → qqmusic_api_python-0.7.3}/qqmusic_api/utils/qimei.py +0 -0
- {qqmusic_api_python-0.7.2 → qqmusic_api_python-0.7.3}/scripts/ag-1.py +0 -0
- {qqmusic_api_python-0.7.2 → qqmusic_api_python-0.7.3}/tests/conftest.py +0 -0
- {qqmusic_api_python-0.7.2 → qqmusic_api_python-0.7.3}/tests/test_album.py +0 -0
- {qqmusic_api_python-0.7.2 → qqmusic_api_python-0.7.3}/tests/test_api_context.py +0 -0
- {qqmusic_api_python-0.7.2 → qqmusic_api_python-0.7.3}/tests/test_client.py +0 -0
- {qqmusic_api_python-0.7.2 → qqmusic_api_python-0.7.3}/tests/test_comment.py +0 -0
- {qqmusic_api_python-0.7.2 → qqmusic_api_python-0.7.3}/tests/test_login.py +0 -0
- {qqmusic_api_python-0.7.2 → qqmusic_api_python-0.7.3}/tests/test_login_utils.py +0 -0
- {qqmusic_api_python-0.7.2 → qqmusic_api_python-0.7.3}/tests/test_lyric.py +0 -0
- {qqmusic_api_python-0.7.2 → qqmusic_api_python-0.7.3}/tests/test_mv.py +0 -0
- {qqmusic_api_python-0.7.2 → qqmusic_api_python-0.7.3}/tests/test_pagination.py +0 -0
- {qqmusic_api_python-0.7.2 → qqmusic_api_python-0.7.3}/tests/test_private_message.py +0 -0
- {qqmusic_api_python-0.7.2 → qqmusic_api_python-0.7.3}/tests/test_recommend.py +0 -0
- {qqmusic_api_python-0.7.2 → qqmusic_api_python-0.7.3}/tests/test_search.py +0 -0
- {qqmusic_api_python-0.7.2 → qqmusic_api_python-0.7.3}/tests/test_songlist.py +0 -0
- {qqmusic_api_python-0.7.2 → qqmusic_api_python-0.7.3}/tests/test_top.py +0 -0
- {qqmusic_api_python-0.7.2 → qqmusic_api_python-0.7.3}/tests/test_user.py +0 -0
- {qqmusic_api_python-0.7.2 → qqmusic_api_python-0.7.3}/uv.lock +0 -0
- {qqmusic_api_python-0.7.2 → qqmusic_api_python-0.7.3}/web/.gitignore +0 -0
- {qqmusic_api_python-0.7.2 → qqmusic_api_python-0.7.3}/web/Dockerfile +0 -0
- {qqmusic_api_python-0.7.2 → qqmusic_api_python-0.7.3}/web/README.md +0 -0
- {qqmusic_api_python-0.7.2 → qqmusic_api_python-0.7.3}/web/accounts.example.toml +0 -0
- {qqmusic_api_python-0.7.2 → qqmusic_api_python-0.7.3}/web/config.example.toml +0 -0
- {qqmusic_api_python-0.7.2 → qqmusic_api_python-0.7.3}/web/docker-compose.example.yml +0 -0
- {qqmusic_api_python-0.7.2 → qqmusic_api_python-0.7.3}/web/run.py +0 -0
- {qqmusic_api_python-0.7.2 → qqmusic_api_python-0.7.3}/web/src/app.py +0 -0
- {qqmusic_api_python-0.7.2 → qqmusic_api_python-0.7.3}/web/src/core/__init__.py +0 -0
- {qqmusic_api_python-0.7.2 → qqmusic_api_python-0.7.3}/web/src/core/auth.py +0 -0
- {qqmusic_api_python-0.7.2 → qqmusic_api_python-0.7.3}/web/src/core/cache.py +0 -0
- {qqmusic_api_python-0.7.2 → qqmusic_api_python-0.7.3}/web/src/core/config.py +0 -0
- {qqmusic_api_python-0.7.2 → qqmusic_api_python-0.7.3}/web/src/core/credential_store.py +0 -0
- {qqmusic_api_python-0.7.2 → qqmusic_api_python-0.7.3}/web/src/core/deps.py +0 -0
- {qqmusic_api_python-0.7.2 → qqmusic_api_python-0.7.3}/web/src/core/response.py +0 -0
- {qqmusic_api_python-0.7.2 → qqmusic_api_python-0.7.3}/web/src/core/security.py +0 -0
- {qqmusic_api_python-0.7.2 → qqmusic_api_python-0.7.3}/web/src/modules/__init__.py +0 -0
- {qqmusic_api_python-0.7.2 → qqmusic_api_python-0.7.3}/web/src/modules/comment.py +0 -0
- {qqmusic_api_python-0.7.2 → qqmusic_api_python-0.7.3}/web/src/modules/login.py +0 -0
- {qqmusic_api_python-0.7.2 → qqmusic_api_python-0.7.3}/web/src/modules/mv.py +0 -0
- {qqmusic_api_python-0.7.2 → qqmusic_api_python-0.7.3}/web/src/modules/singer.py +0 -0
- {qqmusic_api_python-0.7.2 → qqmusic_api_python-0.7.3}/web/src/modules/song.py +0 -0
- {qqmusic_api_python-0.7.2 → qqmusic_api_python-0.7.3}/web/src/modules/songlist.py +0 -0
- {qqmusic_api_python-0.7.2 → qqmusic_api_python-0.7.3}/web/src/routes/__init__.py +0 -0
- {qqmusic_api_python-0.7.2 → qqmusic_api_python-0.7.3}/web/src/routes/_helpers.py +0 -0
- {qqmusic_api_python-0.7.2 → qqmusic_api_python-0.7.3}/web/src/routes/album.py +0 -0
- {qqmusic_api_python-0.7.2 → qqmusic_api_python-0.7.3}/web/src/routes/comment.py +0 -0
- {qqmusic_api_python-0.7.2 → qqmusic_api_python-0.7.3}/web/src/routes/login.py +0 -0
- {qqmusic_api_python-0.7.2 → qqmusic_api_python-0.7.3}/web/src/routes/lyric.py +0 -0
- {qqmusic_api_python-0.7.2 → qqmusic_api_python-0.7.3}/web/src/routes/mv.py +0 -0
- {qqmusic_api_python-0.7.2 → qqmusic_api_python-0.7.3}/web/src/routes/recommend.py +0 -0
- {qqmusic_api_python-0.7.2 → qqmusic_api_python-0.7.3}/web/src/routes/search.py +0 -0
- {qqmusic_api_python-0.7.2 → qqmusic_api_python-0.7.3}/web/src/routes/song.py +0 -0
- {qqmusic_api_python-0.7.2 → qqmusic_api_python-0.7.3}/web/src/routes/songlist.py +0 -0
- {qqmusic_api_python-0.7.2 → qqmusic_api_python-0.7.3}/web/src/routes/top.py +0 -0
- {qqmusic_api_python-0.7.2 → qqmusic_api_python-0.7.3}/web/src/routes/user.py +0 -0
- {qqmusic_api_python-0.7.2 → qqmusic_api_python-0.7.3}/web/src/routing/__init__.py +0 -0
- {qqmusic_api_python-0.7.2 → qqmusic_api_python-0.7.3}/web/src/routing/adapter_registry.py +0 -0
- {qqmusic_api_python-0.7.2 → qqmusic_api_python-0.7.3}/web/src/routing/docstrings.py +0 -0
- {qqmusic_api_python-0.7.2 → qqmusic_api_python-0.7.3}/web/src/routing/executor.py +0 -0
- {qqmusic_api_python-0.7.2 → qqmusic_api_python-0.7.3}/web/src/routing/params.py +0 -0
- {qqmusic_api_python-0.7.2 → qqmusic_api_python-0.7.3}/web/src/routing/route_types.py +0 -0
- {qqmusic_api_python-0.7.2 → qqmusic_api_python-0.7.3}/web/src/routing/router_factory.py +0 -0
- {qqmusic_api_python-0.7.2 → qqmusic_api_python-0.7.3}/web/tests/conftest.py +0 -0
- {qqmusic_api_python-0.7.2 → qqmusic_api_python-0.7.3}/web/tests/test_web_core.py +0 -0
- {qqmusic_api_python-0.7.2 → qqmusic_api_python-0.7.3}/web/tests/test_web_docstrings.py +0 -0
- {qqmusic_api_python-0.7.2 → qqmusic_api_python-0.7.3}/web/tests/test_web_enums.py +0 -0
- {qqmusic_api_python-0.7.2 → qqmusic_api_python-0.7.3}/web/tests/test_web_route_validation.py +0 -0
- {qqmusic_api_python-0.7.2 → qqmusic_api_python-0.7.3}/web/tests/test_web_routes.py +0 -0
- {qqmusic_api_python-0.7.2 → qqmusic_api_python-0.7.3}/zensical.toml +0 -0
|
@@ -1,4 +1,28 @@
|
|
|
1
1
|
|
|
2
|
+
## [[0.7.2](https://github.com/L-1124/QQMusicApi/compare/v0.7.1..v0.7.2)] - 2026-08-05
|
|
3
|
+
|
|
4
|
+
### Bug 修复
|
|
5
|
+
|
|
6
|
+
* **(routing)** 修复 add_api_route tags 参数类型不匹配 ([ee98436](https://github.com/L-1124/QQMusicApi/commit/ee984368c19bca4d164475c272b49fa136566e9e)) by [@L-1124](https://github.com/L-1124)
|
|
7
|
+
|
|
8
|
+
### 功能更新
|
|
9
|
+
|
|
10
|
+
* **(search)** 为 quick_search/complete/get_hotkey 添加响应模型 ([b97549f](https://github.com/L-1124/QQMusicApi/commit/b97549fea31f3de9ce68904df932a6c4d73aff45)) by [@L-1124](https://github.com/L-1124)
|
|
11
|
+
* **(singer)** 支持 get_desc 接口详细数据控制参数 ([8a8c7f1](https://github.com/L-1124/QQMusicApi/commit/8a8c7f14262e5b08dc46073e84e43fc43508f392)) by [@L-1124](https://github.com/L-1124)
|
|
12
|
+
|
|
13
|
+
### 功能重构
|
|
14
|
+
|
|
15
|
+
* **(core)** [**breaking**] 统一请求调度引擎 ([8b71333](https://github.com/L-1124/QQMusicApi/commit/8b71333835891f851a70354c313c614f558ff8e0)) by [@L-1124](https://github.com/L-1124) in [#301](https://github.com/L-1124/QQMusicApi/pull/301)
|
|
16
|
+
|
|
17
|
+
### 文档更新
|
|
18
|
+
|
|
19
|
+
* 更新 lyric.py 中的错误 docstring ([8ec78ce](https://github.com/L-1124/QQMusicApi/commit/8ec78ce3f16805ebe470b8308a96fef925cf8e56)) by [@L-1124](https://github.com/L-1124)
|
|
20
|
+
|
|
21
|
+
### 贡献者
|
|
22
|
+
|
|
23
|
+
* @L-1124
|
|
24
|
+
* @github-actions[bot]
|
|
25
|
+
|
|
2
26
|
## [[0.7.1](https://github.com/L-1124/QQMusicApi/compare/v0.7.0..v0.7.1)] - 2026-08-02
|
|
3
27
|
|
|
4
28
|
### Bug 修复
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"""获取歌手名称透明 PNG, 演示有图片和无特殊展示两种结果."""
|
|
2
|
+
|
|
3
|
+
import asyncio
|
|
4
|
+
|
|
5
|
+
from qqmusic_api import Client
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
async def main() -> None:
|
|
9
|
+
"""请求真实歌手名称展示信息并输出 JSON."""
|
|
10
|
+
async with Client() as client:
|
|
11
|
+
for mid in ("000qrPik2w6lDr", "0025NhlN2yWrP4"):
|
|
12
|
+
result = await client.singer.get_name_special_display(mid)
|
|
13
|
+
print(f"\nMID: {mid}")
|
|
14
|
+
print(result.model_dump_json(indent=2))
|
|
15
|
+
if result.display_type == 2 and result.pic_file:
|
|
16
|
+
print(f"PNG: {result.pic_file}")
|
|
17
|
+
else:
|
|
18
|
+
print(f"无名称图片, 使用文字: {result.name}")
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
if __name__ == "__main__":
|
|
22
|
+
asyncio.run(main())
|
|
@@ -248,6 +248,31 @@ class HomepageTabDetailResponse(Response):
|
|
|
248
248
|
)
|
|
249
249
|
|
|
250
250
|
|
|
251
|
+
class SingerNameSpecialDisplayResponse(Response):
|
|
252
|
+
"""歌手名称特殊展示信息.
|
|
253
|
+
|
|
254
|
+
Attributes:
|
|
255
|
+
display_type: 展示类型, 2 表示名称图片, 0 表示无特殊展示.
|
|
256
|
+
pic_file: 透明 PNG 地址, 无名称图片时为空字符串.
|
|
257
|
+
signature_name_overlap_ratio: 上游返回的签名与名称重叠比例.
|
|
258
|
+
name: 歌手名称.
|
|
259
|
+
"""
|
|
260
|
+
|
|
261
|
+
display_type: int = Field(
|
|
262
|
+
default=0,
|
|
263
|
+
json_schema_extra={"jsonpath": "$.Info.Singer.SingerNameSpecialDisplay.DisplayType"},
|
|
264
|
+
)
|
|
265
|
+
pic_file: str = Field(
|
|
266
|
+
default="",
|
|
267
|
+
json_schema_extra={"jsonpath": "$.Info.Singer.SingerNameSpecialDisplay.PicFile"},
|
|
268
|
+
)
|
|
269
|
+
signature_name_overlap_ratio: float = Field(
|
|
270
|
+
default=0.0,
|
|
271
|
+
json_schema_extra={"jsonpath": "$.Info.Singer.SingerNameSpecialDisplay.SignatureNameOverlapRatio"},
|
|
272
|
+
)
|
|
273
|
+
name: str = Field(default="", json_schema_extra={"jsonpath": "$.Info.Singer.Name"})
|
|
274
|
+
|
|
275
|
+
|
|
251
276
|
class HomepageHeaderResponse(Response):
|
|
252
277
|
"""歌手主页头部响应.
|
|
253
278
|
|
|
@@ -17,6 +17,7 @@ from ..models.singer import (
|
|
|
17
17
|
SingerDetailResponse,
|
|
18
18
|
SingerIndexPageResponse,
|
|
19
19
|
SingerMvListResponse,
|
|
20
|
+
SingerNameSpecialDisplayResponse,
|
|
20
21
|
SingerSongListResponse,
|
|
21
22
|
SingerTypeListResponse,
|
|
22
23
|
)
|
|
@@ -208,6 +209,24 @@ class SingerApi(ApiModule):
|
|
|
208
209
|
platform=Platform.ANDROID,
|
|
209
210
|
)
|
|
210
211
|
|
|
212
|
+
def get_name_special_display(self, mid: str):
|
|
213
|
+
"""获取歌手名称透明 PNG 展示信息.
|
|
214
|
+
|
|
215
|
+
返回歌手名称、展示类型、图片地址和重叠比例.
|
|
216
|
+
无名称图片时, 返回 display_type=0 和空 pic_file.
|
|
217
|
+
|
|
218
|
+
Args:
|
|
219
|
+
mid: 歌手 MID.
|
|
220
|
+
"""
|
|
221
|
+
return self._build_cgi(
|
|
222
|
+
module="music.UnifiedHomepage.UnifiedHomepageSrv",
|
|
223
|
+
method="GetHomepageHeader",
|
|
224
|
+
param={"SingerMid": mid},
|
|
225
|
+
response_model=SingerNameSpecialDisplayResponse,
|
|
226
|
+
platform=Platform.ANDROID,
|
|
227
|
+
comm={"cv": 20_080_000, "v": 20_080_000},
|
|
228
|
+
)
|
|
229
|
+
|
|
211
230
|
def get_tab_detail(
|
|
212
231
|
self,
|
|
213
232
|
mid: str,
|
|
@@ -283,8 +283,11 @@ class SongApi(ApiModule):
|
|
|
283
283
|
credential: 凭据对象.
|
|
284
284
|
|
|
285
285
|
Raises:
|
|
286
|
-
ValueError: 当 `mid` 数量超过上限时抛出.
|
|
286
|
+
ValueError: 当 `mid` 数量超过上限时抛出. 超限时上游返回错误且无结果, 故提前拒绝.
|
|
287
287
|
"""
|
|
288
|
+
if len(file_info) > self._GET_SONG_URLS_MAX_MID:
|
|
289
|
+
raise ValueError(f"mid 数量不能超过 {self._GET_SONG_URLS_MAX_MID}, 当前为 {len(file_info)}")
|
|
290
|
+
|
|
288
291
|
encrypted = isinstance(file_type, EncryptedSongFileType)
|
|
289
292
|
module, method = (
|
|
290
293
|
("music.vkey.GetVkey", "UrlGetVkey") if not encrypted else ("music.vkey.GetEVkey", "CgiGetEVkey")
|
|
@@ -1,5 +1,9 @@
|
|
|
1
1
|
"""歌手模块测试."""
|
|
2
2
|
|
|
3
|
+
from urllib.parse import urlparse
|
|
4
|
+
|
|
5
|
+
import pytest
|
|
6
|
+
|
|
3
7
|
from qqmusic_api import Client
|
|
4
8
|
from qqmusic_api.modules.singer import AreaType, GenreType, IndexType, SexType, TabType
|
|
5
9
|
|
|
@@ -51,6 +55,26 @@ async def test_get_info(client: Client) -> None:
|
|
|
51
55
|
assert result.base_info.name
|
|
52
56
|
|
|
53
57
|
|
|
58
|
+
@pytest.mark.parametrize(
|
|
59
|
+
("mid", "name", "display_type"),
|
|
60
|
+
[("000qrPik2w6lDr", "Taylor Swift", 2), ("0025NhlN2yWrP4", "周杰伦", 0)],
|
|
61
|
+
)
|
|
62
|
+
async def test_get_name_special_display(client: Client, mid: str, name: str, display_type: int) -> None:
|
|
63
|
+
"""测试真实歌手名称图片与无特殊展示的返回结果."""
|
|
64
|
+
result = await client.singer.get_name_special_display(mid)
|
|
65
|
+
|
|
66
|
+
assert result.name == name
|
|
67
|
+
assert result.display_type == display_type
|
|
68
|
+
assert isinstance(result.signature_name_overlap_ratio, float)
|
|
69
|
+
if display_type == 2:
|
|
70
|
+
url = urlparse(result.pic_file)
|
|
71
|
+
assert url.scheme == "https"
|
|
72
|
+
assert url.netloc
|
|
73
|
+
assert url.path.endswith(".png")
|
|
74
|
+
else:
|
|
75
|
+
assert result.pic_file == ""
|
|
76
|
+
|
|
77
|
+
|
|
54
78
|
async def test_get_tab_detail_wiki(client: Client) -> None:
|
|
55
79
|
"""测试获取歌手 Wiki Tab 详情模型."""
|
|
56
80
|
result = await client.singer.get_tab_detail(
|
|
@@ -52,6 +52,13 @@ async def test_get_song_urls(client: Client, file_type: SongFileType | Encrypted
|
|
|
52
52
|
assert len(result.data) == 1
|
|
53
53
|
|
|
54
54
|
|
|
55
|
+
def test_get_song_urls_exceed_limit(client: Client) -> None:
|
|
56
|
+
"""测试获取歌曲链接超出 mid 数量上限时抛出异常."""
|
|
57
|
+
oversized = [SongFileInfo(mid="003w2xz20QlUZt")] * (client.song._GET_SONG_URLS_MAX_MID + 1)
|
|
58
|
+
with pytest.raises(ValueError, match="mid 数量不能超过"):
|
|
59
|
+
client.song.get_song_urls(oversized)
|
|
60
|
+
|
|
61
|
+
|
|
55
62
|
@pytest.mark.parametrize("value", [100, "003w2xz20QlUZt"])
|
|
56
63
|
async def test_get_detail(client: Client, value: int | str) -> None:
|
|
57
64
|
"""测试获取歌曲详情."""
|
|
@@ -906,19 +906,19 @@ pymdown-extensions==11.0.1 \
|
|
|
906
906
|
# via
|
|
907
907
|
# mkdocstrings
|
|
908
908
|
# zensical
|
|
909
|
-
pyrefly==1.
|
|
910
|
-
--hash=sha256:
|
|
911
|
-
--hash=sha256:
|
|
912
|
-
--hash=sha256:
|
|
913
|
-
--hash=sha256:
|
|
914
|
-
--hash=sha256:
|
|
915
|
-
--hash=sha256:
|
|
916
|
-
--hash=sha256:
|
|
917
|
-
--hash=sha256:
|
|
918
|
-
--hash=sha256:
|
|
919
|
-
--hash=sha256:
|
|
920
|
-
--hash=sha256:
|
|
921
|
-
--hash=sha256:
|
|
909
|
+
pyrefly==1.2.0 \
|
|
910
|
+
--hash=sha256:25822ea9505f589ea8a725e4268b475132fb89e038fbf092e446510443ac142a \
|
|
911
|
+
--hash=sha256:368aaf7eee4f511ddc0f8e564cf14e01ab2f10b0db9105c6d5b153bf498d07bf \
|
|
912
|
+
--hash=sha256:3a90bb8df39dfbac74b1f3b2e9d7c526b8f80568884c3944d955023a73ebf61e \
|
|
913
|
+
--hash=sha256:5485f960fc2481617068c918335c39ab1507ef90b6b5bd35bf57726e60e73185 \
|
|
914
|
+
--hash=sha256:5de7b2ad2bba5c8055181681a84b74143eac2234a48ba5d1b7ed7e7a722b02bd \
|
|
915
|
+
--hash=sha256:756f669b5555090f5c1a4fef30db1785fabe657764f7e4e6dc88994dfb8ca82d \
|
|
916
|
+
--hash=sha256:7f46d983ac49ddd2b043694960a01dc6a19a5cfd8eec609d6bd9c42866f91b4e \
|
|
917
|
+
--hash=sha256:8a8964c224ccc4882730130955815de21ff443c1ac3f0b90685b19bf63848170 \
|
|
918
|
+
--hash=sha256:8c90751de8506d938e8f802659c74cf35bd7a0036510ee6c634a38eebb280bfa \
|
|
919
|
+
--hash=sha256:90efe75e17491ef5d636e10469e9278d7d0256b3b4c5e1f4750069bf3ae0f5d1 \
|
|
920
|
+
--hash=sha256:d52d5da7bc65fb7675fbaa80eda879d4f8787c494f04cac21603330d3abbdbbe \
|
|
921
|
+
--hash=sha256:e3465812ce5ef4781fb592edbf2724547296f0a3124be115d73c7e8b2401862d
|
|
922
922
|
pytest==9.1.1 \
|
|
923
923
|
--hash=sha256:1088fbde8f2b49d95a549a195707afa7a76a3ce9bcadc26b6d71f0ffda5fe313 \
|
|
924
924
|
--hash=sha256:37a86b45efb9a47a61a36449063e8e18d0cab3161329fc099eb21783169c4f0c
|
|
@@ -1095,25 +1095,25 @@ requests==2.34.2 \
|
|
|
1095
1095
|
--hash=sha256:2a0d60c172f83ac6ab31e4554906c0f3b3588d37b5cb939b1c061f4907e278e0 \
|
|
1096
1096
|
--hash=sha256:f288924cae4e29463698d6d60bc6a4da69c89185ad1e0bcc4104f584e960b9ed
|
|
1097
1097
|
# via cos-python-sdk-v5
|
|
1098
|
-
ruff==0.16.
|
|
1099
|
-
--hash=sha256:
|
|
1100
|
-
--hash=sha256:
|
|
1101
|
-
--hash=sha256:
|
|
1102
|
-
--hash=sha256:
|
|
1103
|
-
--hash=sha256:
|
|
1104
|
-
--hash=sha256:
|
|
1105
|
-
--hash=sha256:
|
|
1106
|
-
--hash=sha256:
|
|
1107
|
-
--hash=sha256:
|
|
1108
|
-
--hash=sha256:
|
|
1109
|
-
--hash=sha256:
|
|
1110
|
-
--hash=sha256:
|
|
1111
|
-
--hash=sha256:
|
|
1112
|
-
--hash=sha256:
|
|
1113
|
-
--hash=sha256:
|
|
1114
|
-
--hash=sha256:
|
|
1115
|
-
--hash=sha256:
|
|
1116
|
-
--hash=sha256:
|
|
1098
|
+
ruff==0.16.1 \
|
|
1099
|
+
--hash=sha256:07bf434b1c95f4e093be4532068ef4fcf00924eb2ade8796075980902d6fd54a \
|
|
1100
|
+
--hash=sha256:09b05e8b90c2cb06ad63464350e7a45e8e44a2dfe52072ebfba6666ca8d3f596 \
|
|
1101
|
+
--hash=sha256:24e9c631573cbca9d20f1283f8f479b2afa4a8503504822bd71a293889f16743 \
|
|
1102
|
+
--hash=sha256:26e9ca5c9bc3971f20d3cf18a957f52ffd6a5f6564ff15c4912a144dcac22494 \
|
|
1103
|
+
--hash=sha256:30affbcedf59ad5703d9c91f82266e02b47739f797e1a7b6e158e5526a6dae38 \
|
|
1104
|
+
--hash=sha256:39897739f112253ee4fdd2e8aa9a4f9ded99fb2be367d5f31dfa4ded6025584c \
|
|
1105
|
+
--hash=sha256:4d5f2ed10f8242d83fc08d521301089364e3375375705356f20c0e31606ef3ef \
|
|
1106
|
+
--hash=sha256:58edb313b88f0c5460a26adf5f39a37a3be789494a15e3e411e35fa78b89f9a0 \
|
|
1107
|
+
--hash=sha256:67e1e1e3fa4f0c82f0e36d4cd61e661f6e7a6196cb1aa92fe0828fa7b8f257cd \
|
|
1108
|
+
--hash=sha256:82ae3c0c0d74daf17b968a10b7b3bb3ef297ab7de0c1f749646b25e690ccb150 \
|
|
1109
|
+
--hash=sha256:a4665b309891f83f3e3c25447935f1213e9abbd4b5640af7a1f2def9f8d413c1 \
|
|
1110
|
+
--hash=sha256:b0d1e1393b7648079e13669de1c1f4fde06d4583e84d8fd5c1551e0a77a2aa75 \
|
|
1111
|
+
--hash=sha256:b41bdd48fb420987a9b5212e4957c26ad4abce401fa9ea9d4d85843727945f4f \
|
|
1112
|
+
--hash=sha256:d31765e131295b8445caf301e3e8a85b34d1b9b211b4109b7ba457888b051806 \
|
|
1113
|
+
--hash=sha256:dbaadaac38c70239f056d306b7476f246b0bf000fa6b3876402acbf5b227eaf8 \
|
|
1114
|
+
--hash=sha256:e0d4c20532fca4f7fa609369161d968dd28f65d83dabbd61d8e9c7edbf7001f6 \
|
|
1115
|
+
--hash=sha256:fde5a99e2f97479af66edd6622c6d5a2a7592c77cf4153d9e4428f5eeb55b60c \
|
|
1116
|
+
--hash=sha256:fedad7c801dabd3fb9741d76aca39246e6ddd9ca446a015875207bf19f1e6bc7
|
|
1117
1117
|
six==1.17.0 \
|
|
1118
1118
|
--hash=sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274 \
|
|
1119
1119
|
--hash=sha256:ff70335d468e7eb6ec65b95b99d3a2836546063f63acc5171de367e834932a81
|
|
@@ -8,6 +8,7 @@ from qqmusic_api.models.singer import (
|
|
|
8
8
|
SingerDetailResponse,
|
|
9
9
|
SingerIndexPageResponse,
|
|
10
10
|
SingerMvListResponse,
|
|
11
|
+
SingerNameSpecialDisplayResponse,
|
|
11
12
|
SingerSongListResponse,
|
|
12
13
|
SingerTypeListResponse,
|
|
13
14
|
)
|
|
@@ -53,6 +54,14 @@ ROUTES: tuple[WebRoute, ...] = (
|
|
|
53
54
|
cache=PUBLIC_300,
|
|
54
55
|
),
|
|
55
56
|
R("singer", "get_info", "/singer/{mid}/info", HomepageHeaderResponse, params=MID, cache=PUBLIC_300),
|
|
57
|
+
R(
|
|
58
|
+
"singer",
|
|
59
|
+
"get_name_special_display",
|
|
60
|
+
"/singer/{mid}/name-special-display",
|
|
61
|
+
SingerNameSpecialDisplayResponse,
|
|
62
|
+
params=MID,
|
|
63
|
+
cache=PUBLIC_600,
|
|
64
|
+
),
|
|
56
65
|
R(
|
|
57
66
|
"singer",
|
|
58
67
|
"get_mv_list",
|
|
File without changes
|
{qqmusic_api_python-0.7.2 → qqmusic_api_python-0.7.3}/.agents/skills/python-standards/SKILL.md
RENAMED
|
File without changes
|
{qqmusic_api_python-0.7.2 → qqmusic_api_python-0.7.3}/.agents/skills/uv-package-manager/SKILL.md
RENAMED
|
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
|
{qqmusic_api_python-0.7.2 → qqmusic_api_python-0.7.3}/docs/reference/model/private_message.md
RENAMED
|
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
|
{qqmusic_api_python-0.7.2 → qqmusic_api_python-0.7.3}/docs/reference/modules/helper_utils.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{qqmusic_api_python-0.7.2 → qqmusic_api_python-0.7.3}/docs/reference/modules/private_message.md
RENAMED
|
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
|
|
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
|
{qqmusic_api_python-0.7.2 → qqmusic_api_python-0.7.3}/qqmusic_api/modules/private_message.py
RENAMED
|
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
|
|
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
|
{qqmusic_api_python-0.7.2 → qqmusic_api_python-0.7.3}/web/tests/test_web_route_validation.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|