zyl-midjourney-api v1.0.26
midjourney-client
Node.js client for the unofficial MidJourney api.
English / 中文文档
What's new
Example
To run the included example, you must have Node.js installed. Then, run the following commands in the root directory of this project:
clone the repository
git clone https://github.com/erictik/midjourney-client.git cd midjourney-client
install dependencies
yarn # or npm npm install
set the environment variables
Login Discord
F12
ORCtrl + Shift + I
(orCommand + Option + I
on Mac) to open the developer tools AND paste the following code into the consolewindow.webpackChunkdiscord_app.push([ [Math.random()], {}, (req) => { for (const m of Object.keys(req.c) .map((x) => req.c[x].exports) .filter((x) => x)) { if (m.default && m.default.getToken !== undefined) { return copy(m.default.getToken()); } if (m.getToken !== undefined) { return copy(m.getToken()); } } }, ]); console.log("%cWorked!", "font-size: 50px"); console.log(`%cYou now have your token in the clipboard!`, "font-size: 16px");
export SERVER_ID="1082500871478329374" export CHANNEL_ID="1094892992281718894"
OR Create a server and Invite Midjourney Bot to Your Server
# How to get server and channel ids: # when you click on a channel in your server in the browser # expect to have the follow URL pattern # `https://discord.com/channels/$SERVER_ID/$CHANNEL_ID` export SERVER_ID="your-server-id" export CHANNEL_ID="your-channel-id"
wirte your token to
.env
file or set the environment variables#example variables, please set up yours export SERVER_ID="1082500871478329374" export CHANNEL_ID="1094892992281718894" export SALAI_TOKEN="your-discord-token"
Then, run the example with the following command:
npx tsx example/imagine-ws.ts
OR
yarn example:imagine # or npm npm run example:imagine
Usage
Install
npm i midjourney # or yarn add midjourney
config param
export interface MJConfigParam { SalaiToken: string; //DISCORD_TOKEN ChannelId?: string; //DISCORD_CHANNEL_ID ServerId?: string; //DISCORD_SERVER_ID BotId?: typeof MJBot | typeof NijiBot; //DISCORD_BOT_ID MJBot OR NijiBot Debug?: boolean; // print log ApiInterval?: number; //ApiInterval request api interval Limit?: number; //Limit of get message list MaxWait?: number; Remix?: boolean; //Remix:true use remix mode Ws?: boolean; //Ws:true use websocket get discord message (ephemeral message) HuggingFaceToken?: string; //HuggingFaceToken for verify human SessionId?: string; DiscordBaseUrl?: string; ImageProxy?: string; WsBaseUrl?: string; fetch?: FetchFn; //Node.js<18 need node.fetch Or proxy WebSocket?: WebSocketCl; //isomorphic-ws Or proxy }
Use Imagine 、Variation and Upscale
import { Midjourney } from "midjourney"; const client = new Midjourney({ ServerId: <string>process.env.SERVER_ID, ChannelId: <string>process.env.CHANNEL_ID, SalaiToken: <string>process.env.SALAI_TOKEN, Debug: true, Ws: true, //enable ws is required for remix mode (and custom zoom) }); await client.init(); const prompt = "Christmas dinner with spaghetti with family in a cozy house, we see interior details , simple blue&white illustration"; //imagine const Imagine = await client.Imagine( prompt, (uri: string, progress: string) => { console.log("loading", uri, "progress", progress); } ); console.log(Imagine); if (!Imagine) { console.log("no message"); return; } //U1 U2 U3 U4 V1 V2 V3 V4 "Vary (Strong)" ... //⬅️,⬆️,⬇️,➡️ const V1CustomID = Imagine.options?.find((o) => o.label === "V1")?.custom; if (!V1CustomID) { console.log("no V1"); return; } // Varition V1 const Varition = await client.Custom({ msgId: <string>Imagine.id, flags: Imagine.flags, customId: V1CustomID, content: prompt, //remix mode require content loading: (uri: string, progress: string) => { console.log("loading", uri, "progress", progress); }, }); console.log(Varition); const U1CustomID = Imagine.options?.find((o) => o.label === "U1")?.custom; if (!U1CustomID) { console.log("no U1"); return; } // Upscale U1 const Upscale = await client.Custom({ msgId: <string>Imagine.id, flags: Imagine.flags, customId: U1CustomID, loading: (uri: string, progress: string) => { console.log("loading", uri, "progress", progress); }, }); if (!Upscale) { console.log("no Upscale"); return; } console.log(Upscale); const zoomout = Upscale?.options?.find((o) => o.label === "Custom Zoom"); if (!zoomout) { console.log("no zoomout"); return; } // Custom Zoom const CustomZoomout = await client.Custom({ msgId: <string>Upscale.id, flags: Upscale.flags, content: `${prompt} --zoom 2`, // Custom Zoom require content customId: zoomout.custom, loading: (uri: string, progress: string) => { console.log("loading", uri, "progress", progress); }, }); console.log(CustomZoomout);
route-map
/imagine
variation
upscale
reroll
blend
zoomout
vary
/info
/fast
and/relax
/prefer remix
variation (remix mode)
/describe
/shorten
/settings
reset
- verify human
- proxy
- niji bot
- custom zoom
- autoload command payload
Projects
- midjourney-ui next.js + vercel
- midjourney-discord-bot
- phrame
- guapitu
Support
If you find it valuable and would like to show your support, any donations would be greatly appreciated. Your contribution helps me maintain and improve the program.
Star History
6 months ago
6 months ago
6 months ago
6 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago