Skip to main content

Python 189 webdisk client.

Project description

Python 天翼网盘客户端

PyPI - Python Version PyPI - Version PyPI - Downloads PyPI - Format PyPI - Status

0. 安装

你可以从 pypi 安装最新版本

pip install -U p189client

1. 导入模块和创建实例

导入模块

from p189client import P189Client, P189APIClient

2. 接口调用

所有需要直接或间接执行 HTTP 请求的接口,都有同步和异步的调用方式,且默认是采用 GET 发送请求数据

# 同步调用
client.method(payload)
client.method(payload, async_=False)

# 异步调用
await client.method(payload, async_=True)

从根本上讲,除了几个 staticmethod,它们都会调用 P189Client.request

url = "https://cloud.189.cn/api/someapi"
response = client.request(url=url, json={...})

当你需要构建自己的扩展模块,以增加一些新的天翼网盘的接口时,就需要用到此方法了

from collections.abc import Coroutine
from typing import overload, Any, Literal

from p189client import P189Client

class MyCustom189Client(P189Client):

    @overload
    def foo(
        self, 
        payload: dict, 
        /, 
        async_: Literal[False] = False, 
        **request_kwargs, 
    ) -> dict:
        ...
    @overload
    def foo(
        self, 
        payload: dict, 
        /, 
        async_: Literal[True], 
        **request_kwargs, 
    ) -> Coroutine[Any, Any, dict]:
        ...
    def foo(
        self, 
        payload: dict, 
        /, 
        async_: bool = False, 
        **request_kwargs, 
    ) -> dict | Coroutine[Any, Any, dict]:
        api = "https://cloud.189.cn/api/foo"
        return self.request(
            api, 
            method="GET", 
            params=payload, 
            async_=async_, 
            **request_kwargs, 
        )

    @overload
    def bar(
        self, 
        payload: dict, 
        /, 
        async_: Literal[False] = False, 
        **request_kwargs, 
    ) -> dict:
        ...
    @overload
    def bar(
        self, 
        payload: dict, 
        /, 
        async_: Literal[True], 
        **request_kwargs, 
    ) -> Coroutine[Any, Any, dict]:
        ...
    def bar(
        self, 
        payload: dict, 
        /, 
        async_: bool = False, 
        **request_kwargs, 
    ) -> dict | Coroutine[Any, Any, dict]:
        api = "https://cloud.189.cn/api/bar"
        return self.request(
            api, 
            method="POST", 
            data=payload, 
            async_=async_, 
            **request_kwargs, 
        )

3. 检查响应

接口被调用后,如果返回的是 dict 类型的数据(说明原本是 JSON),则可以用 p189client.check_response 执行检查。如果检测为正常,则原样返回数据;否则,抛出一个 p189client.P189OSError 的实例。

from p189client import check_response

# 检查同步调用
data = check_response(client.method(payload))
# 检查异步调用
data = check_response(await client.method(payload, async_=True))

4. 辅助工具

一些简单的封装工具可能是必要的,特别是那种实现起来代码量比较少,可以封装成单个函数的。我把平常使用过程中,积累的一些经验具体化为一组工具函数。这些工具函数分别有着不同的功能,如果组合起来使用,或许能解决很多问题。

from p189client import tool

5. 学习案例

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

p189client-0.0.0.2.tar.gz (68.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

p189client-0.0.0.2-py3-none-any.whl (71.6 kB view details)

Uploaded Python 3

File details

Details for the file p189client-0.0.0.2.tar.gz.

File metadata

  • Download URL: p189client-0.0.0.2.tar.gz
  • Upload date:
  • Size: 68.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.4 CPython/3.12.4 Darwin/23.5.0

File hashes

Hashes for p189client-0.0.0.2.tar.gz
Algorithm Hash digest
SHA256 68519ecd3b1f62720528592db0cd6fabf5fa471412a052fc9a3b53193ec155b2
MD5 6028897914852db6eec1bdda4a8477b6
BLAKE2b-256 8813fe977188e984cf2862d793696f2d0faf35061a42c54c9c5ebea7f71407f6

See more details on using hashes here.

File details

Details for the file p189client-0.0.0.2-py3-none-any.whl.

File metadata

  • Download URL: p189client-0.0.0.2-py3-none-any.whl
  • Upload date:
  • Size: 71.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.4 CPython/3.12.4 Darwin/23.5.0

File hashes

Hashes for p189client-0.0.0.2-py3-none-any.whl
Algorithm Hash digest
SHA256 3e5db99060832fae8a44ffe7d9a7b5500b59c7bf8d5964cfa0a7e5ce65785fde
MD5 c46da4b4c756f2cda73a37361ba08f25
BLAKE2b-256 50b1396523c82b54706a8a1c81a339b332e06c5cf870b03ca5bd103c31054624

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page