List
midjourney-apiserver
midjourney-apiserver
is an unofficial API service for Midjourney
, designed to integrate the powerful capabilities of Midjourney
into one's own business.
List
How to use
midjourney-apiserver
only provides the grpc
protocol with a default port of 8080
.
Please refer to the api.proto for more information.
Here are some tools for debugging grpc
that you can use: awesome-grpc.
If you are using Golang
, you can use this code for testing:
package main
import (
"context"
"encoding/json"
"io/ioutil"
"log"
"net/http"
"github.com/hongliang5316/midjourney-apiserver/pkg/api"
"github.com/hongliang5316/midjourney-apiserver/pkg/store"
"github.com/hongliang5316/midjourney-apiserver/pkg/webhook"
"google.golang.org/grpc"
"google.golang.org/grpc/credentials/insecure"
)
var apiServiceClient api.APIServiceClient
func init() {
conn, err := grpc.Dial("127.0.0.1:8080", grpc.WithTransportCredentials(insecure.NewCredentials()))
if err != nil {
panic(err)
}
apiServiceClient = api.NewAPIServiceClient(conn)
}
func webhookHandler(w http.ResponseWriter, r *http.Request) {
body, _ := ioutil.ReadAll(r.Body)
req := &webhook.WebhookRequest{}
json.Unmarshal(body, req)
log.Printf("req: %+v", req)
if req.Type == store.TypeImagine {
resp, err := apiServiceClient.Upscale(context.Background(), &api.UpscaleRequest{
Index: 1,
TaskId: req.TaskID,
Webhook: "http://127.0.0.1:8000/",
})
if err != nil {
panic(err)
}
log.Printf("resp: %+v", resp)
}
}
func main() {
go func() {
resp, err := apiServiceClient.Imagine(context.Background(), &api.ImagineRequest{
Prompt: "a car",
Webhook: "http://127.0.0.1:8000/",
})
if err != nil {
panic(err)
}
log.Printf("%+v", resp)
}()
http.HandleFunc("/", webhookHandler)
http.ListenAndServe(":8000", nil)
}
List
How to deploy
- Use
docker-compose
(Strongly Recommend)
mkdir -p /your/app/conf
cd /your/app
# configure conf.yml, please see ./conf/conf.yml
vim conf/conf.yml
# create docker-compose.yml
cat docker-compose.yml
version: '3.1'
services:
midjourney-apiserver:
image: hongliang5316/midjourney-apiserver:0.0.2
hostname: midjourney-apiserver
restart: always
volumes:
- ./conf/conf.yml:/conf/conf.yml
ports:
- 8080:8080
redis:
image: redis:7
hostname: redis
restart: always
volumes:
- ./redis_data:/data
command: redis-server --requirepass test
# run
docker-compse up -d
# check logs
docker-compose logs
go install github.com/hongliang5316/midjourney-apiserver/cmd/midjourney-apiserver@v0.0.2
mkdir -p /your/app/conf
cd /your/app
cp `go env GOROOT`/bin/midjourney-apiserver .
mkdir conf
# configure conf.yml, please see ./conf/conf.yml
vim conf/conf.yml
# run
./midjourney-apiserver
List
Status
You can see which api are currently supported by looking at api.proto, and if you have some ideas, feel free to submit issues.
imagine api
![imagine.flow.svg](https://gitee.com/huang-jun-sheng/midjourney-apiserve/raw/v0.0.2/img/imagine.flow.svg)
upscale api
![upscale.flow.svg](https://gitee.com/huang-jun-sheng/midjourney-apiserve/raw/v0.0.2/img/upscale.flow.svg)
describe api
List
Changelog
The simplest way of getting data is from the commits you write.
Even though it doesn't require a machine-readable commit, it is still better to have them in a nice format.
The output then uses commit messages (title + description) to look something like:
v0.0.2 (20/06/2023)
- Added support for new interfaces
- Support for
Describe
grpc api
v0.0.1 (17/06/2023)
- Complete the basic functions
- Support for
Imagine
grpc api
- Support for
Upscale
grpc api
List