osu-beatmapset-downloader

1.1.2 • Public • Published

osu-beatmapset-downloader

npms.io (final) npms.io (final) NPM npm npm

💡 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

Versions

Current Tags

  • Version
    Downloads (Last 7 Days)
    • Tag
  • 1.1.2
    3
    • latest

Version History

Package Sidebar

Install

npm i osu-beatmapset-downloader

Weekly Downloads

3

Version

1.1.2

License

MIT

Unpacked Size

13.7 kB

Total Files

16

Last publish

Collaborators

  • kazoku