feat: 改为转发的方式获取midjourney图片
This commit is contained in:
parent
9baa615a64
commit
84645128c3
@ -62,7 +62,8 @@ _✨ 通过标准的 OpenAI API 格式访问所有的大模型,开箱即用
|
|||||||
1. 添加[Midjourney-Proxy](https://github.com/novicezk/midjourney-proxy)接口的支持:
|
1. 添加[Midjourney-Proxy](https://github.com/novicezk/midjourney-proxy)接口的支持:
|
||||||
+ [x] /mj/submit/imagine
|
+ [x] /mj/submit/imagine
|
||||||
+ [x] /mj/submit/change
|
+ [x] /mj/submit/change
|
||||||
+ [x] /mj/task/{id}/fetch
|
+ [x] /mj/image/{id} (通过此接口获取图片,**请必须在系统设置中填写服务器地址!!**)
|
||||||
|
+ [x] /mj/task/{id}/fetch (此接口返回的图片地址为经过One API转发的地址)
|
||||||
+ 使用方法:渠道类型选择自定义渠道,Base URL填写Midjourney-Proxy的地址(例如 http://localhost:8080 ),模型填入自定义模型midjourney,密钥填写Midjourney-Proxy的mj-api-secret(没有的话可以随便填)。
|
+ 使用方法:渠道类型选择自定义渠道,Base URL填写Midjourney-Proxy的地址(例如 http://localhost:8080 ),模型填入自定义模型midjourney,密钥填写Midjourney-Proxy的mj-api-secret(没有的话可以随便填)。
|
||||||
2. 支持在线充值功能,可在系统设置中设置,当前支持的支付接口:
|
2. 支持在线充值功能,可在系统设置中设置,当前支持的支付接口:
|
||||||
+ [x] 易支付
|
+ [x] 易支付
|
||||||
|
@ -31,6 +31,32 @@ type Midjourney struct {
|
|||||||
FailReason string `json:"failReason"`
|
FailReason string `json:"failReason"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func RelayMidjourneyImage(c *gin.Context) {
|
||||||
|
taskId := c.Param("id")
|
||||||
|
midjourneyTask := model.GetByMJId(taskId)
|
||||||
|
if midjourneyTask == nil {
|
||||||
|
c.JSON(400, gin.H{
|
||||||
|
"error": "midjourney_task_not_found",
|
||||||
|
})
|
||||||
|
return
|
||||||
|
}
|
||||||
|
resp, err := http.Get(midjourneyTask.ImageUrl)
|
||||||
|
if err != nil {
|
||||||
|
c.JSON(http.StatusInternalServerError, gin.H{
|
||||||
|
"error": "http_get_image_failed",
|
||||||
|
})
|
||||||
|
}
|
||||||
|
defer resp.Body.Close()
|
||||||
|
data, err := io.ReadAll(resp.Body)
|
||||||
|
if err != nil {
|
||||||
|
c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()})
|
||||||
|
return
|
||||||
|
}
|
||||||
|
c.Header("Content-Type", "image/jpeg")
|
||||||
|
//c.Header("Content-Length", string(rune(len(data))))
|
||||||
|
c.Data(http.StatusOK, "image/jpeg", data)
|
||||||
|
}
|
||||||
|
|
||||||
func relayMidjourneyNotify(c *gin.Context) *MidjourneyResponse {
|
func relayMidjourneyNotify(c *gin.Context) *MidjourneyResponse {
|
||||||
var midjRequest Midjourney
|
var midjRequest Midjourney
|
||||||
err := common.UnmarshalBodyReusable(c, &midjRequest)
|
err := common.UnmarshalBodyReusable(c, &midjRequest)
|
||||||
@ -88,7 +114,7 @@ func relayMidjourneyTask(c *gin.Context, relayMode int) *MidjourneyResponse {
|
|||||||
midjourneyTask.SubmitTime = originTask.SubmitTime
|
midjourneyTask.SubmitTime = originTask.SubmitTime
|
||||||
midjourneyTask.StartTime = originTask.StartTime
|
midjourneyTask.StartTime = originTask.StartTime
|
||||||
midjourneyTask.FinishTime = originTask.FinishTime
|
midjourneyTask.FinishTime = originTask.FinishTime
|
||||||
midjourneyTask.ImageUrl = originTask.ImageUrl
|
midjourneyTask.ImageUrl = common.ServerAddress + "/mj/image/" + originTask.MjId
|
||||||
midjourneyTask.Status = originTask.Status
|
midjourneyTask.Status = originTask.Status
|
||||||
midjourneyTask.FailReason = originTask.FailReason
|
midjourneyTask.FailReason = originTask.FailReason
|
||||||
midjourneyTask.Action = originTask.Action
|
midjourneyTask.Action = originTask.Action
|
||||||
|
@ -42,6 +42,7 @@ func SetRelayRouter(router *gin.Engine) {
|
|||||||
relayV1Router.POST("/moderations", controller.Relay)
|
relayV1Router.POST("/moderations", controller.Relay)
|
||||||
}
|
}
|
||||||
relayMjRouter := router.Group("/mj")
|
relayMjRouter := router.Group("/mj")
|
||||||
|
relayMjRouter.GET("/image/:id", controller.RelayMidjourneyImage)
|
||||||
relayMjRouter.Use(middleware.TokenAuth(), middleware.Distribute())
|
relayMjRouter.Use(middleware.TokenAuth(), middleware.Distribute())
|
||||||
{
|
{
|
||||||
relayMjRouter.POST("/submit/imagine", controller.RelayMidjourney)
|
relayMjRouter.POST("/submit/imagine", controller.RelayMidjourney)
|
||||||
@ -49,4 +50,5 @@ func SetRelayRouter(router *gin.Engine) {
|
|||||||
relayMjRouter.POST("/notify", controller.RelayMidjourney)
|
relayMjRouter.POST("/notify", controller.RelayMidjourney)
|
||||||
relayMjRouter.GET("/task/:id/fetch", controller.RelayMidjourney)
|
relayMjRouter.GET("/task/:id/fetch", controller.RelayMidjourney)
|
||||||
}
|
}
|
||||||
|
//relayMjRouter.Use()
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user