import hmac from hashlib import sha1 import base64 import time import uuid import requests import Config.Config def make_sign(uri): """ 生成签名 """ # API访问密钥 secret_key = Config.Config.LIBLIB_SECRETKEY # 当前毫秒时间戳 timestamp = str(int(time.time() * 1000)) # 随机字符串 signature_nonce = str(uuid.uuid4()) # 拼接请求数据 content = '&'.join((uri, timestamp, signature_nonce)) # 生成签名 digest = hmac.new(secret_key.encode(), content.encode(), sha1).digest() # 移除为了补全base64位数而填充的尾部等号 sign = base64.urlsafe_b64encode(digest).rstrip(b'=').decode() return sign, timestamp, signature_nonce if __name__ == '__main__': # 要调用的接口路径 uri = "/api/model/version/get" # 获取签名 sign, timestamp, signature_nonce = make_sign(uri) url = f'{Config.Config.LIBLIB_URL}{uri}?AccessKey={Config.Config.LIBLIB_ACCESSKEY}&Signature={sign}&Timestamp={timestamp}&SignatureNonce={signature_nonce}' # 封装调用参数 # hellonijicute25d官方版 # https://www.liblib.art/modelinfo/018f2fd5718d45a38546b5e518483856?from=feed&versionUuid=390e7df48aed45d4bc3f0bcbc89fa44c # 接口文档 # https://liblibai.feishu.cn/wiki/UAMVw67NcifQHukf8fpccgS5n6d versionUuid="390e7df48aed45d4bc3f0bcbc89fa44c" response = requests.post(url, json={"versionUuid":versionUuid}) response_data = response.json() if response_data.get('code') == 0: model_info = response_data.get('data') modelName= model_info.get('modelName') versionNam= model_info.get('versionName') commercialUse=model_info.get('commercialUse') modelUrl= model_info.get('modelUrl') print(f"模型名称:{modelName}") print(f"版本名称:{versionNam}") print(f"是否允许商业用途:{commercialUse}") print(f"模型下载地址:{modelUrl}") else: print(f"错误信息:{response_data.get('message')}") # POST /api/generate/webui/text2img """ https://liblibai.feishu.cn/wiki/UAMVw67NcifQHukf8fpccgS5n6d { "templateUuid": "7d888009f81d4252a7c458c874cd017f", // 参数模板ID "generateParams": { // 基础参数 "checkPointId": "0ea388c7eb854be3ba3c6f65aac6bfd3", // 仅 XL模型支持人像换脸 "prompt": "Asian portrait,A young woman wearing a green baseball cap, close shot, background is coffee store, masterpiece, best quality, ultra resolution", // 选填 "width": 768, // 宽,必填 "height": 1152, // 高,必填 //以下参数可不传 "sampler":20, // 默认DPM++ 2M SDE Karras "steps": 35, // 默认35步 "cfgScale": 2.0, "imgCount": 1, // 图片数量,默认1张 // controlNet,最多4组 "controlNet": [ // 设置要用的人像人脸 { "unitOrder": 1, // 第一步:先识别要用的人像人脸 "sourceImage": "https://liblibai-online.liblib.cloud/img/081e9f07d9bd4c2ba090efde163518f9/49943c0b-4d79-4e2f-8c55-bc1e5b8c69d8.png", "width": 1080, // 参考图宽度 "height": 1432 // 参考图高度 }, // 设置面部朝向的人像参考图 { "unitOrder": 2, // 第二步:再识别要参考的人物面部朝向 "sourceImage": "https://liblibai-online.liblib.cloud/img/081e9f07d9bd4c2ba090efde163518f9/e713676d-baaa-4dac-99b9-d5d814a29f9f.png", //这张图可以与上一张不同,可以是任意人像。只参考面部朝向,不参考人物长相。 "width": 1024, // 参考图宽度 "height": 1024 // 参考图高度 } ] } } """