Advertisement
Guest User

Untitled

a guest
Nov 29th, 2016
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. // Импортируем нужные (и не очень) модули
  2. var ifb = require("isbinaryfile"),
  3.     request = require("request"),
  4.     osua = require("osu"),
  5.     fs = require("fs");
  6.  
  7. // Используем АПИ токен из файла cfg.json
  8. const osu = osua(JSON.parse(fs.readFileSync("cfg.json")).otoken);
  9.  
  10. // Функции (да ладно)
  11. // Функция получения данных битмапы, думаю тут все ок.
  12. var getMapInfo = (id) => {
  13.     var res;
  14.     osu.get_beatmaps({
  15.         s: id,
  16.         limit: 1
  17.     }, (result) => {
  18.         res = result;
  19.         console.log(res);
  20.     });
  21.     console.log("waiting for res");
  22.     while(!res) {};
  23.     return res;
  24. };
  25. // Функция скачивания карты.
  26. var downloadMap = (id) => {
  27.     // Форма с логином и паролем для входа на форум осу (или куда оно там входит)
  28.     var cfg = JSON.parse(fs.readFileSync("cfg.json"));
  29.     var loginObject = {
  30.         username: cfg.ouser,
  31.         password: cfg.opass,
  32.         autologin: "on",
  33.         sid: "",
  34.         redirect: "index.php",
  35.         viewonline: "off",
  36.         login: "Login"
  37.     };
  38.     // Не знаю зачем большенство параметров, надеюсь так и надо.
  39.     // Формируем линк на битмап и название файла
  40.     var filename = getMapInfo(id).beatmap_id;
  41.     var link = `https://osu.ppy.sh/d/${id}`;
  42.     var result;
  43.     // Вызываем (нет, не Сатану, увы) форум осу и торжественно вручаем ему форму
  44.     request.post({ url: "https://osu.ppy.sh/forum/ucp.php?mode=login",
  45.     form: loginObject }, (err, resp, body) => {
  46.         if(!err) {
  47.             request(link, () => {
  48.                 if(ifb(`./${filename}`)) {
  49.                     // И наконец-то торжественно вручаем злосчастное имя файла.
  50.                     result = filename;
  51.                 }
  52.                 else {
  53.                     result = "ERROR HAPPENED";
  54.                 }
  55.             }).pipe(fs.createWriteStream(filename));
  56.         }
  57.         else {
  58.             result = "ERROR HAPPENED";
  59.         };
  60.     });
  61.     // Ждем пока присвоим имя результату
  62.     while(!result) {};
  63.     // На самом деле вручаем мы его тут.
  64.     if(result != "ERROR HAPPENED") {
  65.         return result;
  66.     };
  67. };
  68.  
  69. module.exports.downloadMap = downloadMap;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement