Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Импортируем нужные (и не очень) модули
- var ifb = require("isbinaryfile"),
- request = require("request"),
- osua = require("osu"),
- fs = require("fs");
- // Используем АПИ токен из файла cfg.json
- const osu = osua(JSON.parse(fs.readFileSync("cfg.json")).otoken);
- // Функции (да ладно)
- // Функция получения данных битмапы, думаю тут все ок.
- var getMapInfo = (id) => {
- var res;
- osu.get_beatmaps({
- s: id,
- limit: 1
- }, (result) => {
- res = result;
- console.log(res);
- });
- console.log("waiting for res");
- while(!res) {};
- return res;
- };
- // Функция скачивания карты.
- var downloadMap = (id) => {
- // Форма с логином и паролем для входа на форум осу (или куда оно там входит)
- var cfg = JSON.parse(fs.readFileSync("cfg.json"));
- var loginObject = {
- username: cfg.ouser,
- password: cfg.opass,
- autologin: "on",
- sid: "",
- redirect: "index.php",
- viewonline: "off",
- login: "Login"
- };
- // Не знаю зачем большенство параметров, надеюсь так и надо.
- // Формируем линк на битмап и название файла
- var filename = getMapInfo(id).beatmap_id;
- var link = `https://osu.ppy.sh/d/${id}`;
- var result;
- // Вызываем (нет, не Сатану, увы) форум осу и торжественно вручаем ему форму
- request.post({ url: "https://osu.ppy.sh/forum/ucp.php?mode=login",
- form: loginObject }, (err, resp, body) => {
- if(!err) {
- request(link, () => {
- if(ifb(`./${filename}`)) {
- // И наконец-то торжественно вручаем злосчастное имя файла.
- result = filename;
- }
- else {
- result = "ERROR HAPPENED";
- }
- }).pipe(fs.createWriteStream(filename));
- }
- else {
- result = "ERROR HAPPENED";
- };
- });
- // Ждем пока присвоим имя результату
- while(!result) {};
- // На самом деле вручаем мы его тут.
- if(result != "ERROR HAPPENED") {
- return result;
- };
- };
- module.exports.downloadMap = downloadMap;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement