JSPM

jojo-midjourney-proxy

1.0.0
  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • 0
  • Score
    100M100P100Q27026F
  • License ISC

Node.js client for the unofficial MidJourney API.

Package Exports

    This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (jojo-midjourney-proxy) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

    Readme

    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 DiscordF12 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. 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
      }
    3. 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