快速开始

Python 3客户端

我们提供python3客户端以方便大家使用。

安装

sudo pip3 install aureport

注册

from aureport import Aureport
aureport = Aureport()
name = 'Memect'
phone = '13000000000'
title = 'DS'
passcode = '0000'
aureport.register(phone=phone, name=name, passcode=passcode, title=title)

登录

from aureport import Aureport
aureport = Aureport()
phone = '13000000000'
passcode = '0000'
aureport.get_token(phone=phone, passcode=passcode)

获取报告

data = [{'title':'hi','layout':['text'],'data':[['hihihi']]}]
from aureport import Aureport
aureport = Aureport(token='a153763a1000006ba4e6e4f53a0df40f')
aureport.request_report(data, 'doc')

Shell

最简单的就是手边有一个shell,可以通过curl命令直接在命令行生成报告。

第一步:注册

如果您有了一个token,请直接忽略这一步。

把下面例子中的各个字段替换成您自己的内容,就可以开始注册了,passcode请注意个人隐私安全,因为我们使用的是明文保存。

curl https://autoreport.memect.cn/api/register -d '{
    "name": "memect",
    "phone": "13000000000",
    "title": "data scientist",
    "passcode": "0000"
}'

## 返回结果:
#{
#    "request_at": 1492755876118,
#    "token": "b91b7842192d4ae988427d6da7bb9232"
#}

## 如果你不替换上面的内容信息,会出现下面的报错:
#{"error": "Register unsuccessfully."}

这里请妥善保管您的phone、passcode和token,获取新的token和报告历史都需要这三个信息。

第二步:获取token

如果您已经注册过第一步,但是已经忘记了token,却还记得手机号码和passcode,您可以通过token API获取新的token。

curl https://autoreport.memect.cn/api/token -d '{
    "phone": "13000000000",
    "passcode": "9527"
}'

## 正常返回结果:
#{
#    "token": "c4f51cf55697415392154717f14067c9",
#    "request_at": 1492756812572
#}

如果返回错误,可以检查以下phone和passcode的值是否是字符串。

第三步:提交数据请求文档

自动报告的API目前提供的是数据即报告服务,因此,您需要向服务器请求报告数据文件。比如:

curl https://autoreport.memect.cn/api/render/doc -d '{
  "data": [
    {
      "title": "这是我的第一份报告",
      "layout": ["text"],
      "data": [
        [
          "这是我的第一份报告的第一段。",
          "这是我的第一份报告的第二段。"
        ]
      ]
    }
  ],
  "token":"c4f51cf55697415392154717f14067c9"}'

## 正常返回结果
#{
#    "report_id": "389c8a9929224c148ad34c8e2da3f160",
#    "request_at": 1492757807260
#}

第四步:查询报告生成状态

因为我们报告生成使用的是队列,所以需要查询报告生成状态。

curl https://autoreport.memect.cn/api/query_status/389c8a9929224c148ad34c8e2da3f160

## 正常返回结果
#{
#    "report_id": "389c8a9929224c148ad34c8e2da3f160",
#    "query_at": 1492758757091,
#    "url": "https://autoreport.memect.cn/report_cloud/389c8a9929224c148ad34c8e2da3f160/%E8%BF%99%E6%98%AF%E6%88%91%E7%9A%84%E7%AC%AC%E4%B8%80%E4%BB%BD%E6%8A%A5%E5%91%8A.docx",
#    "status": "done"
#}

第五步:下载报告

curl -O https://autoreport.memect.cn/report_cloud/389c8a9929224c148ad34c8e2da3f160/%E8%BF%99%E6%98%AF%E6%88%91%E7%9A%84%E7%AC%AC%E4%B8%80%E4%BB%BD%E6%8A%A5%E5%91%8A.docx

Python

关于如何获取token

# Python 3.5
import json
import requests

# 注册
name = 'memect'
phone = '13000000001' ## 务必修改这里
passcode = '1234'
title = '数据科学家'

url_register = 'https://autoreport.memect.cn/api/register'

data_register = {
  'name': name,
  'phone': phone,
  'passcode': passcode,
  'title': title
}

r = requests.post(url_register, data=json.dumps(data_register))

print(r.text)
##  正常结果
#{
#    "token": "4fa116c4c5b04b0cac8ce03acaaa0e02",
#    "request_at": 1492759459967
#}

## 如果是号码已经被注册过
#'{"error": "Register unsuccessfully."}'

res = json.loads(r.text)

token = res['token']

# 如果是已经注册过的,但是忘记了token的

url_token = 'https://autoreport.memect.cn/api/token'
data_token = {
  'phone': phone,
  'passcode': passcode
}

r = requests.post(url_token, data=json.dumps(data_token))
res = json.loads(r.text)
token = res['token']

关于如何生成报告

# Python 3.5
import os
import sys
import time
import json
import requests

from urllib.parse import unquote

token = '87f1a62b78a24d2b8a0ea7a0ae722ef4'
url_render = "https://autoreport.memect.cn/api/render/doc"
data_report = []
module_1 = {
  "title": "autoreport",
  "layout": ["text"],
  "data": []
}
paragraph = ["这是第一段"]
module_1['data'].append(paragraph)
data_report.append(module_1)

data = {
  "token": token,
  "data": data_report
}
r = requests.post(url_render, data=json.dumps(data))
if r.status_code == 200:
    res = json.loads(r.text)
else:
    print(r.text)

report_id = res['report_id']

input("报告生成需要一定时间,请等待几秒,按回车继续:")
# 查询报告是否生成

url_query_status = "https://autoreport.memect.cn/api/query_status/" + report_id

r = requests.get(url_query_status)

res = json.loads(r.text)
print(res.get("status"))

count = 1
while res.get('status', '')  != 'done':
    r = requests.get(url_query_status)
    print("报告正在生成,请等待...")
    res = json.loads(r.text)
    time.sleep(1)
    count += 1
    if count > 10:
        print("报告生成失败,退出。")
        sys.exit()

print(res.get('url'))
report_addr = res.get('url')

# 已经成功获取报告链接,可以直接启动报告下载了

filename = os.path.basename(report_addr)
print(filename)
filename = unquote(filename)

r = requests.get(report_addr, stream=True)
with open(filename, "wb") as f:
    for chunk in r.iter_content(chunk_size=512):
        if chunk:
            f.write(chunk)