import json,os,time
import urllib
import requests
import requests_toolbelt
import hashlib
from requests_toolbelt import MultipartEncoder
import io,base64
#coding=utf-8
def sfmd5(a):
file_name =a
buf_size = 8192
fp = open(file_name, 'rb')
md5 = hashlib.md5()
while True:
bytes_to_read = buf_size
buf = fp.read(bytes_to_read)
if not buf:
break
md5.update(buf)
content_md5 = base64.standard_b64encode(md5.digest())
return content_md5
thefirstUrl= 'https://wenku.baidu.com/doc/openapi/getuploadtoken'
theUrl='https://wenku.baidu.com/doc/openapi/addpublicdoc'
fileName = '603032公司控股股东关于股票交易异常波动的问询函的回复'+'.pdf'
filePath = 'C:\Users\Administrator\Desktop\bigtail\'+str(fileName)
fsize = os.path.getsize(filePath)
data0={
"appkey": "0abc7cc138d5492812cabd3ab2cfd27d",
"uidStr": "ff3bb32925c52cc58bd6be83",
"sourceFlag": "5",
"md5sum": sfmd5(filePath),
}
data0 = json.dumps(data0)
data2={
"appkey": "0abc7cc138d5492812cabd3ab2cfd27d",
"uidStr": "ff3bb32925c52cc58bd6be83",
"sourceFlag": "5",
"md5sum": sfmd5(filePath),
"addDocInfo": {
"title": fileName,
"fileExt": "pdf",
"totalSize": fsize,
"price": "0",
"payPrice": "",
"freePage": "",
"oriDocId": ""
}
}
data2 = json.dumps(data2)
print(data2)
result0 = requests.Session().post(url=thefirstUrl, data=data0, verify=False, headers={"Content-Type": "application/json;charset=utf-8;"})
print('result0.status_code:', result0.status_code)
if result0.status_code == 200:
result_str = result0.text
print('result_str:', result_str)
result_json = json.loads(result_str)
code = result_json['status']['code']
msg = result_json['status']['msg']
result_json = json.loads(result_str)
print(result_json['data'])
AK = result_json['data']['ak']
SK = result_json['data']['sk']
sessionKey = result_json['data']['sessionkey']
key3 = result_json['data']['key']
bucket = result_json['data']['bucket']
#BOSCLIENT
import logging
#从Python SDK导入BOS配置管理模块以及安全认证模块
from baidubce.bce_client_configuration import BceClientConfiguration
from baidubce.auth.bce_credentials import BceCredentials
#设置BosClient的Host,Access Key ID和Secret Access Key
bos_host = "bj.bcebos.com"
access_key_id = AK
secret_access_key = SK
#设置日志文件的句柄和日志级别
logger = logging.getLogger('baidubce.http.bce_http_client')
fh = logging.FileHandler("sample.log")
fh.setLevel(logging.DEBUG)
#设置日志文件输出的顺序、结构和内容
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
fh.setFormatter(formatter)
logger.setLevel(logging.DEBUG)
logger.addHandler(fh)
#创建BceClientConfiguration
config = BceClientConfiguration(credentials=BceCredentials(access_key_id, secret_access_key), endpoint = bos_host)
#导入BosClient配置文件
#导入BOS相关模块
from baidubce import exception
from baidubce.services import bos
from baidubce.services.bos import canned_acl
from baidubce.services.bos.bos_client import BosClient
#新建BosClient
bos_client = BosClient(config)
#uploadobject
data1 = open(filePath, 'rb')
#以数据流形式上传Object,用户需要自行计算数据长度content_length
#用户需自行计算content_md5.计算方法是对数据执行md5算法获取128位二进制数据,再进行base64编码
bucket_name = bucket
object_key = key3
content_length = fsize
content_md5 = sfmd5(filePath)
bos_client.put_object(bucket_name, object_key, data1, content_length,content_md5)
#reportthepdf
result0 = requests.Session().post(url=Url, data=data2, verify=False, headers={"Content-Type": "application/json;charset=utf-8;"})
print('result0.status_code:', result0.status_code)
if result0.status_code == 200:
result_str = result0.text
print('result_str:', result_str)
result_json = json.loads(result_str)
code = result_json['status']['code']
msg = result_json['status']['msg']
result_json = json.loads(result_str)
print(result_json['data'])
0条评论