import json import os import time import urllib import requests import requests_toolbelt import hashlib from requests_toolbelt import MultipartEncoder WENKU_BASE_URL = 'https://wenku.baidu.com' # 正式 # WENKU_UPLOAD_URL = WENKU_BASE_URL + '/doc/orgapi/orgupload' # 测试 WENKU_UPLOAD_URL = WENKU_BASE_URL + '/doc/orgapi/fororguploadtest' # 正式 # WENKU_APPKEY = '你的正式appkey' # 测试 WENKU_APPKEY = 'test' # 正式 # WENKU_SECRET = '你的正式secret' # 测试 WENKU_SECRET = 'g75a50a20baed9bbd12a6e69d091f4d6' def upload(file_path=''): file_name = os.path.basename(file_path) file_tail = get_file_tail(file_name) file_name_without_tail = file_name[:-(len(file_tail) + 1)] new_file_name = get_md5(file_name_without_tail) + '.' + file_tail tmp_file_path = 'C:/Users/Administrator/Desktop/1' + os.sep + new_file_name # 生成文件名不为中文的临时文件 os.rename(file_path, tmp_file_path) timestamp = '{0}'.format(int(time.time())) flag = '10' price = '2' title = urllib.parse.quote(file_name_without_tail) summary = urllib.parse.quote(file_name_without_tail) pre_sign_str ='appkey={0}&flag={1}&price={2}&summary={3}×tamp={4}&title={5}&secret={6}&filemd5={7}'.format( WENKU_APPKEY, flag, price, summary, timestamp, title, WENKU_SECRET, get_file_md5(tmp_file_path) ) print('pre_sign_str1:', pre_sign_str) sign_str = get_md5(pre_sign_str) print('sign_str:', sign_str) # flag 0:免费文档3:机构文档10:付费文档19:商业文档 # price 单位为分 fields = {'object_file': (os.path.basename(tmp_file_path), open(tmp_file_path, 'rb'), 'multipart/form-data'), 'appkey': WENKU_APPKEY, 'timestamp': timestamp, 'sign': sign_str, 'title': title, 'flag': '10', 'price': '2', 'summary': summary } data = MultipartEncoder(fields=fields) print('ct:', data.content_type) result = requests.Session().post(url=WENKU_UPLOAD_URL, data=data, verify=False, headers={ 'Content-Type': data.content_type}) # print(result.request.headers) print('result.status_code:', result.status_code) if result.status_code == 200: result_str = result.text print('result_str:', result_str) result_json = json.loads(result_str) code = result_json['status']['code'] msg = result_json['status']['msg'] if code == 0: print('msg:', msg) data = result_json['data'] print('上传成功,doc_id:', data['doc_id']) else: print('code:', code) print('msg:', msg) else: print('网络请求出错') # 获取文件名后缀 def get_file_tail(file_name=''): # 获取文件后缀名 file_arr = file_name.split(".") if len(file_arr) >= 2: return file_arr[len(file_arr) - 1].lower() else: return 'default' def get_file_md5(file_path=''): try: with open(file_path, 'rb') as fp: data = fp.read() file_md5 = hashlib.md5(data).hexdigest() print(file_md5) return file_md5 except Exception as e: print(e.args) return '' def get_md5(source_str=''): return hashlib.md5(source_str.encode('utf8')).hexdigest() if __name__ == '__main__': upload(your_absolute_file_path)
提示
Traceback (most recent call last):
File "I:/new-python/down/baidu.py", line 110, in <module>
upload(your_absolute_file_path)
NameError: name 'your_absolute_file_path' is not defined如何解决呢