Skip to main content
Help us improve Python packaging – donate today!

zaoshu包实现里对造数openapi功能的封装,使开发人员专注于功能的实现,提高开发效率。

Project Description

# pysdk 造数Python版本SDK

[![CircleCI](https://circleci.com/gh/BuleAnt/pysdk.svg?style=svg)](https://circleci.com/gh/BuleAnt/pysdk)

## 简介
zaoshu 是对造数openAPI接口的一层封装实现,使用户更专注于功能,而不必关注底层实现,这些SDK帮你完成。
## pip 安装造数模块
```
pip install zaoshu
```

## pip 安装完成后引入ZaoshuSdk,即可使用
```
from zaoshu import ZaoshuSdk

# 测试代码 部分
if __name__ == '__main__':

ZAOSHU_URL = 'https://openapi.zaoshu.io/v2'

# api_key = '你的api_key'
API_KEY = '你的api_key'

# api_secret = '你的api_secret'
API_SERVER = '你的api_secret'

sdk = ZaoshuSdk(API_KEY, API_SERVER, base_url=ZAOSHU_URL)
# 造数Http类对象
sdk.request
# 造数实例类对象
sdk.instance
# 造数用户类对象
   sdk.user

```

## sdk功能
### http类对象功能
- 发送 带造数签名的 GET请求
- 发送 带造数签名的 POST请求
- 发送 带造数签名的 PATCH请求

### 造数实例对象
- 获取用户的爬虫实例列表
- 获取实例详情
- 获取实例的数据格式
- 编辑实例
- 获取实例下的任务列表
- 运行实例
- 获取实例下的任务详情
- 下载实例下任务数据

### 造数用户对象
- 获取用户账户信息
- 获取用户钱包信息


## zaoshu模块的构成

* zaoshuRequests : 造数HTTP库
* zaoshuSdk :造数SDK
* Instance : 造数实例类
* User :造数用户类

### zaoshuRequests : 造数HTTP库

造数HTTP库基于Requests库的基础上,添加了符合造数签名规则的函数,目前支持 GET、POST、PATCH 请求自动添加签名

- **发送 带造数签名的 GET请求**

```
zaoshuRequests.get(self, url, params=None):
"""
get请求
:param url: 请求url
:param params: 请求参数
:return:requests.request
"""
```

- **发送 带造数签名的 POST请求**

```
zaoshuRequests.post(self, url, params=None, body=None):
"""
post请求
:param url:请求url
:param params:请求参数
:param body:内容
:return:requests.request 对象
"""
```

- **发送 带造数签名的 PATCH请求**

```
zaoshuRequests.patch(self, url, params=None, body=None):
"""
patch请求
:param url:请求url
:param params:请求参数
:param body:内容
:return:requests.request
"""
```
- **requests.Response**

 requests.Response 的详细文档见 http://docs.python-requests.org/zh_CN/latest/user/quickstart.html
 


### zaoshuSdk : 造数SDK

造数SDK 将 造数HTTP库,造数实例类,造数用户类 聚合在一起,通过 统一的对象进行使用
- **zaoshuSdk的属性代码**
```
self.request = ZaoshuRequests(api_key, api_secret)
self.instance = Instance(self._base_url, self.request)
self.user = User(self._base_url, self.request)
```


### Instance : 造数实例类

 造数实例类 是对造数实例 api 功能的一个封装,大家可以直接使用函数来使用造数提供的服务
- **获取用户的爬虫实例列表**

```
Instance.list(self):
"""
获取实例列表
:return: requests.Response
"""
```

- **获取实例详情**

```
Instance.item(self, instance_id):
"""
获取实例详情
:param instance_id: 运行实例的id编号,可以从实例列表中获取
:return: requests.Response
"""
```

- **获取实例的数据格式**

```
Instance.schema(self, instance_id):
"""
获取单个实例的数据格式
:param instance_id:
:return: requests.Response
"""
```

- **获取某实例下的任务列表**

```
Instance.task(self, instance_id, task_id):
"""
获取某实例下,单个任务详情
:param instance_id:
:param task_id:
:return: requests.Response
"""
```
- **下载运行结果数据**

```
Instance.download_run_data(self, instance_id, task_id, file_type='csv', save_file=False):
"""
下载运行结果
:param instance_id: 实例ID
:param task_id: 任务ID
:param file_type: 文件类型
:param save_file: 是否保持文件
:return:保存文件的路径/保存文件内容的元组
"""
```

- **运行实例**

```
Instance.run(self, instance_id, body=None):
"""
运行实例
:param instance_id: 运行实例的id编号,可以从实例列表中获取
:return: requests.Response
"""
```

- **编辑实例**

```
Instance.edit(self, instance_id, title=None, result_notify_uri=None):
"""
实例编辑
:param instance_id: 实例id
:param title: 要修改的实例标题
:param result_notify_uri: 回调url
:return:requests.Response
"""
```

### User :造数用户类

 造数实例类 是对造数用户 api 功能的一个封装,大家可以直接使用函数来使用造数提供的服务

- **获得用户帐号信息**

```
User.account(self):
"""
获得用户帐号信息
:return:requests.Response
"""
```

- **获取用户钱包信息**

```
User.wallet(self):
"""
获得用户钱包信息
:return:requests.Response
"""
```


# 使用教程DEMO详解

## ZaoshuRequests对象
  ZaoshuRequests对象是对Requests对象的请求头进行了请求头的封装。
  可以使用Requests的方法和属性

  Requests.url : 请求网址

  Requests.status_code  : 请求响应代码

  Requests.text : 请求响应内容

 
## 公共函数,输出请求信息,参数为response对象

```
def print_resopnse_info(response, title=''):
"""
输出响应信息
:param response:response响应对象
:param title: 显示标题
:return: None
"""
print('====[%s]========================================'% title)
print("URL:"+response.url)
print("状态:"+str(response.status_code))
print("返回内容:"+response.text)
print("返回头信息:", end='')
print(response.headers)
print('\n')

```


## 1. 创建ZaoshuSdk的实例
```
# 造数api链接
ZAOSHU_URL = 'https://openapi.zaoshu.io/v2'

# api_key = '你的api_key'
API_KEY = '你的api_key'

# api_secret = '你的api_secret'
API_SERVER = '你的api_secret'

sdk = ZaoshuSdk(API_KEY, API_SERVER, base_url=ZAOSHU_URL)

```


## 2. 用户信息, sdk.user是用户信息模块对象
```
# 获取用户账户信息
user_account_response = sdk.user.account()
print_resopnse_info(user_account_response, '获取用户账户信息')

# 获取用户钱包信息
user_wallet_response = sdk.user.wallet()
print_resopnse_info(user_wallet_response, '获取用户钱包信息')
```
## 3. 用户实例, sdk.instance
```
# 获取用户的爬虫实例
instance_list_response = sdk.instance.list()
print_resopnse_info(instance_list_response, '获取用户的爬虫实例')


response_json = instance_list_response.json()

# 获取实例详情
if response_json['data']:
# 实例id
instance_id = response_json['data'][0]['id']

# 获取实例详情
instance_item_response = sdk.instance.item(instance_id)
print_resopnse_info(instance_item_response, '获取实例详情')

# 获取实例的数据格式
instance_schema_response = sdk.instance.schema(instance_id)
print_resopnse_info(instance_schema_response, '获取实例的数据格式')

# 编辑实例的数据
instance_edit_response = sdk.instance.edit(instance_id, title='测试修改实例数据标题')
print_resopnse_info(instance_edit_response, '编辑实例的数据')

# 运行实例
instance_run_response = sdk.instance.run(instance_id)
print_resopnse_info(instance_run_response, '运行实例')
print('暂停10秒,等待实例运行完成')
sleep(10)

# 获取实例任务列表
instance_task_list_response = sdk.instance.task_list(instance_id)
print_resopnse_info(instance_task_list_response, '获取实例任务列表')

# 解析实例任务列表
tasks = instance_task_list_response.json()

# 获取任务详情
if tasks['data']:
# 任务id
task_id = tasks['data'][-1]['id']

# 获取任务详情
instance_task_response = sdk.instance.task(instance_id, task_id)
print_resopnse_info(instance_task_response, '获取任务详情')

# 实例任务数据下载
instance_download_path = sdk.instance.download_run_data(instance_id, task_id,
file_type='json')
print('====[实例任务数据下载]========================================')
print('下载路径:'+instance_download_path)

else:
print("没有实例无法继续,请创建实例后继续")

```


Release history Release notifications

This version
History Node

0.2.0

History Node

0.1.9

History Node

0.1.8

Download files

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

Filename, size & hash SHA256 hash help File type Python version Upload date
zaoshu-0.2.0-py3-none-any.whl (12.3 kB) Copy SHA256 hash SHA256 Wheel py3 Nov 7, 2017
zaoshu-0.2.0.tar.gz (9.3 kB) Copy SHA256 hash SHA256 Source None Nov 7, 2017

Supported by

Elastic Elastic Search Pingdom Pingdom Monitoring Google Google BigQuery Sentry Sentry Error logging CloudAMQP CloudAMQP RabbitMQ AWS AWS Cloud computing Fastly Fastly CDN DigiCert DigiCert EV certificate StatusPage StatusPage Status page