Skip to content

Latest commit

 

History

History
237 lines (198 loc) · 7.35 KB

README.md

File metadata and controls

237 lines (198 loc) · 7.35 KB

midjourney-client

Node.js client for the unofficial MidJourney api.

English / 中文文档

Discord server npm version

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:

  1. clone the repository

    git clone https://github.com/erictik/midjourney-client.git
    cd midjourney-client
  2. install dependencies

    yarn
    # or npm
    npm install
  3. set the environment variables

  • Login Discord
    F12 OR Ctrl + Shift + I (or Command + Option + I on Mac) to open the developer tools AND paste the following code into the console

    window.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");

    OR use network your Discord TOKEN

  • Join my discord server

    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
  • more example

Usage

  1. Install

    npm i midjourney
    # or
    yarn add midjourney
  2. 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


Projects


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.

   Buy Me a Coffee

Star History

Star History Chart