python对接第三方使用midjourney生成图像

每段代码都有注释了,第三方网站就不放出来了,这是自己学习测试用的,就不打广告了。

简单易用,实现的功能就是输入关键词自动转换英文,提交到midjourney生成相关的图像。

其实如果用英文去提交效果是最好的。

import requests
import os
import time
import hashlib
import random
import json

# 提示用户输入关键词
keyword = input("请输入您的关键词:")

# 百度翻译API的URL
url = "http://api.fanyi.baidu.com/api/trans/vip/translate"

# 百度翻译API的APP ID和密钥
appid = '请替换为您的APP ID'  # 请替换为您的APP ID
secretKey = '请替换为您的密钥'  # 请替换为您的密钥

# 生成随机的salt值
salt = random.randint(32768, 65536)

# 拼接要进行MD5加密的字符串
sign = appid + keyword + str(salt) + secretKey
sign = hashlib.md5(sign.encode()).hexdigest()

# 构造请求参数
params = {
    'q': keyword,
    'from': 'zh',
    'to': 'en',
    'appid': appid,
    'salt': salt,
    'sign': sign,
}

# 发送GET请求
response = requests.get(url, params=params)

# 解析响应内容
result = response.json()

# 获取翻译结果
translated_keyword = result['trans_result'][0]['dst']

# API端点
endpoint = "https://api.不打广告.io/midjourney/v1/imagine"

# 请求头,包含API密钥
headers = {
    "TT-API-KEY": "API密钥",
    "Content-Type": "application/json"
}

# 请求数据,包含用户输入的关键词
data = {
    "prompt": translated_keyword,  # 使用翻译后的关键词
    "model": "fast",
    "hookUrl": "",
    "timeout": 300
}

# 发送POST请求
response = requests.post(endpoint, headers=headers, json=data)

# 打印状态码和响应内容
print(response.status_code)
print(response.json())

# 如果请求成功发送,等待100秒
if response.status_code == 200:
    print("请求已发送,正在等待图像生成...")
    time.sleep(100)  # 等待100秒

    # 获取作业ID
    job_id = response.json()["data"]["jobId"]

    # 设置获取任务状态的API端点
    fetch_endpoint = "https://api.不打广告.io/midjourney/v1/fetch"

    # 设置获取任务状态的请求数据
    fetch_data = {
        "jobId": job_id
    }

    # 发送POST请求以获取任务状态
    fetch_response = requests.post(fetch_endpoint, headers=headers, json=fetch_data)
    print(fetch_response.status_code)
    print(fetch_response.json())

    # 检查响应状态是否为成功
    if fetch_response.json()["status"] == "SUCCESS":
        # 获取图像URL
        image_url = fetch_response.json()["data"].get("cdnImage")

        # 如果'image_url'存在
        if image_url:
            # 确保D盘的mj文件夹存在
            save_path = "img"
            if not os.path.exists(save_path):
                os.makedirs(save_path)

            # 获取图像内容
            image_response = requests.get(image_url)

            # 检查图像请求是否成功
            if image_response.status_code == 200:
                # 创建图像文件的完整路径
                file_path = os.path.join(save_path, f"{translated_keyword}.png")  # 使用翻译后的关键词作为文件名

                # 将图像内容写入文件
                with open(file_path, "wb") as f:
                    f.write(image_response.content)
                print(f"图像已保存到:{file_path}")
            else:
                print(f"下载图像失败,状态码:{image_response.status_code}")
        else:
            print("没有找到图像URL。")
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

给TA打赏
共{{data.count}}人
人已打赏
资源收藏

一个新的项目,可以对接国内的多数模型

2024-4-14 17:18:55

资源收藏

免费使用claude-3-sonnet模型

2024-4-23 20:21:38