Skip to content

K4zoku/osu-beatmapset-downloader

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

16 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

osu-beatmapset-downloader

💡 About

This repo was originally created to download osu beatmaps when I had to switch machines. And another reason is to reduce lag while playing osu on my potato machine (because it doesn't need to open the browser)

📥 Installation

$ npm install osu-beatmapset-downloader

⌨️ Usage

🔰 Basic

// import statement
const {FetchDownloadClient, OsuAuthenticator, OsuOfficialDownloader} = require("osu-beatmapset-downloader");
const {writeFile} = require("fs/promises");

async function main(args) {
  const account = {
    username: args[0] ?? process.env.OSU_USERNAME ?? "username",
    password: args[1] ?? process.env.OSU_PASSWORD ?? "password"
  }
  // get session from username and password
  const session = await OsuAuthenticator.login(account);
  // construct new OsuOfficialDownloader
  const bmsDownloader = new OsuOfficialDownloader(new FetchDownloadClient(), session);
  // download beatmapset with id 1220040
  const downloader = await bmsDownloader.download({beatmapsetId: 1220040, noVideo: true});
  const filename = await downloader.name();
  const data = await downloader.buffer();
  await writeFile(filename, data);
}

main(process.argv.slice(2)).catch(console.error);

⏫ Advanced

// import statement
const {FetchDownloadClient, OsuAuthenticator, OsuOfficialDownloader} = require("osu-beatmapset-downloader");
const {createWriteStream} = require("fs");

async function main(args) {
  const account = {
    username: args[0] ?? process.env.OSU_USERNAME ?? "username",
    password: args[1] ?? process.env.OSU_PASSWORD ?? "password"
  }
  // get cookie from username and password
  const cookie = (await OsuAuthenticator.advancedLogin(account)).cookie;
  // check login
  if (await OsuAuthenticator.checkSession(cookie)) {
    console.log("Login success!");
    console.log("Downloading...");
    // get session value
    const session = cookie["osu_session"][0].value;
    // construct new OsuOfficialDownloader
    const bmsDownloader = new OsuOfficialDownloader(new FetchDownloadClient(), session);
    // download beatmapset with id 1220040
    const downloader = await bmsDownloader.download({beatmapsetId: 1220040, noVideo: true});
    const filename = await downloader.name();
    const downloadStream = await downloader.stream();
    const dest = createWriteStream(filename);
    downloadStream.pipe(dest).on("finish", () => console.log("Done!"));
  } else {
    console.log("Invalid session");
  }
}

main(process.argv.slice(2)).catch(console.error);

💌 Credits

Special thanks to:

  • NNB for polish this project's README.md.






Made with ❤️ by K4zoku

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published