前几章,我介绍了Midjourney
以及Midjourney Bot
的基本玩法, 本章我将站在一个开发
的视角,运用编程
的方法来调用Midjourney Bot
。
原理
因为Midjourney Bot
是由Discord
开发出来的Application
,咱们能够先经过阅览Discord Developer Platform Docs文档来了解下Discord
敞开的一些API
才能。
/imagine
发生了什么
首要,咱们翻开浏览器的开发者东西
, 经过抓包
看下客户端
与服务端
之间的调用恳求。
以Google Chrome
为例:
翻开开发者东西
:
当咱们给Midjourney Bot
发送一个/imagine
指令时, 能够看到抓到的恳求是:
发送/imagine
指令:
抓包检查恳求
:
经过阅览interactions api文档, 咱们能够发现这个接口就是与Discord Bot
交互用的, 那么,咱们完全能够经过curl
, postman
等一系列东西来模仿同样的恳求与完成/imagine
, 有兴趣的小伙伴能够手动实践试试。
经过测试,咱们只需要改动prompt
,其它的参数都能够坚持不变,便能够完成给Midjourney Bot
发送/imagine
指令。
需要留意的是, 因为Discord API
接口有鉴权, 咱们需要在HTTP
恳求时带上Authorization
头部, 内容能够从这里拿到:
获取Authorization头部
内容:
那么经过curl
测试的恳求为:
curl -d '{payload_json}' -H 'Authorization: {your token}' -H 'Content-Type: application/json' https://discord.com/api/v9/interactions -v
那么经过同样的方法,咱们能够完成大部分给Midjourney Bot
发送的指令。
midjourney-go介绍
midjourney-go主要是便利调用Midjourney Bot
, 进行以下指令的操作:
-
/imagine
-
/upscale
-
/variation
-
/describe
-
/blend
-
/reroll
它被规划为不包括任何事务逻辑,且十分轻量级,所以能够很便利的被集成到运用Golang
开发的项目中,比如咱们在Discord
中开发了自己的Bot
, 便能够很轻松的集成Midjourney Bot
的才能。
环境预备
- 科学上网
- 装置golang环境
- 预备
discord token
- 预备
guild_id
和channel_id
运用方法
运用方法十分简单, 新建一个Golang
的项目, 然后修改main.go
, 只需几行
代码就能够完成/imagine
:
package main
import (
"context"
"log"
"github.com/hongliang5316/midjourney-go/midjourney"
)
func main() {
client := midjourney.NewClient(&midjourney.Config{
UserToken: "",
})
// imagine
err := client.Imagine(context.Background(), &midjourney.ImagineRequest{
GuildID: "",
ChannelID: "",
Prompt: "",
})
if err != nil {
log.Fatalf("Call client.Imagine failed, err: %+v", err)
}
}
然后运转:
go mod tidy
go run main.go
然后观察discord频道
里的Midjourney Bot
的消息即可。
总结
本章介绍了怎么运用Golang
调用Midjourney Bot
, 咱们有了midjourney-go, 能够在咱们的使用
中调用Midjourney Bot
了, 但是因为Midjourney Bot
的输出的图片是在Discord
中的, 咱们仍是无法完全将Midjourney
的输出图片
的才能集成到咱们的使用中, 好在Discord
十分敞开, 支撑经过编程
的方法获取Midjourney Bot
的消息, 下一章我将介绍一下怎么脱离Discord
, 自建Midjourney APIServer
。