Giter Site home page Giter Site logo

mj's Introduction

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

mj's People

Contributors

zcpua avatar 1395173231 avatar muyibo avatar autemox avatar artemptushkin avatar jakowenko avatar happyvee avatar estebanrestoy avatar iamkunal9 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.