import requests import json import hmac from hashlib import sha1 import base64 import time import uuid from Config.Config import LIBLIB_SECRETKEY, LIBLIB_URL, LIBLIB_ACCESSKEY def make_sign(uri): """ 生成签名 """ # 当前毫秒时间戳 timestamp = str(int(time.time() * 1000)) # 随机字符串 signature_nonce = str(uuid.uuid4()) # 拼接请求数据 content = '&'.join((uri, timestamp, signature_nonce)) # 生成签名 digest = hmac.new(LIBLIB_SECRETKEY.encode(), content.encode(), sha1).digest() # 移除为了补全base64位数而填充的尾部等号 sign = base64.urlsafe_b64encode(digest).rstrip(b'=').decode() return sign, timestamp, signature_nonce # 请求API接口的uri地址 uri = "/api/model/version/get" Signature, timestamp, signature_nonce = make_sign(uri) url = f"{LIBLIB_URL}{uri}?AccessKey={LIBLIB_ACCESSKEY}&Signature={Signature}&Timestamp={timestamp}&SignatureNonce={signature_nonce}" # 设置请求头 headers = {"Content-Type": "application/json"} version_uuid = "4bb1335feb1e4d2eafe5a77bb93e861f" # 准备请求体数据 request_body = {"version_uuid": version_uuid} try: # 发送POST请求 response = requests.post(url, headers=headers, data=json.dumps(request_body)) response.raise_for_status() # 检查请求是否成功 print(response) # 解析响应数据 result = response.json() print("API响应结果:") print(f"模型名称: {result.get('model_name')}") print(f"版本号: {result.get('version_name')}") print(f"是否可商用: {'是' if result.get('commercial_use') == '1' else '否'}") print(f"模型链接: {result.get('model_url')}") except requests.exceptions.RequestException as e: print(f"请求发生错误: {str(e)}") """ { "version_uuid": "21df5d84cca74f7a885ba672b5a80d19",//LiblibAI官网模型链接后缀 "model_name": "AWPortrait XL" "version_name": "1.1" "baseAlgo": "基础算法 XL", "show_type": "1",//公开可用的模型 "commercial_use": "1",//可商用为1,不可商用为0 "model_url": "https://www.liblib.art/modelinfo/f8b990b20cb943e3aa0e96f34099d794?versionUuid=21df5d84cca74f7a885ba672b5a80d19" } } """