UNPKG

osu-api-extended

Version:

Advanced osu! api wrapper for v1 and v2, with extra stuff

113 lines 3.63 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.description = void 0; const request_1 = require("../../../utility/request"); // import { id as mods_id } from "../../../../utility/mods"; // import path from "path"; const fs_1 = __importDefault(require("fs")); const scores_1 = __importDefault(require("./beatmap/scores")); const diff_1 = __importDefault(require("./beatmap/diff")); const replays_1 = __importDefault(require("../form/replays")); const request = (0, request_1.namespace)('https://osu.ppy.sh/api/'); const _mode = [ 'osu', 'taiko', 'fruits', 'mania', ]; exports.description = { auth: 2, title: __filename, method: 'GET', description: 'Download replay file for specified score', params: [ { type: 'number', name: 'id', optional: true, description: 'id of the beatmap', }, { type: 'number', name: 'user', optional: true, description: 'id of the user', }, { type: 'string', name: 'mode', optional: true, description: '\`\`\`osu\`\`\` or \`\`\`fruits\`\`\` or \`\`\`mania\`\`\` or \`\`\`taiko\`\`\`', }, { type: 'number', name: 'score_id', optional: true, description: 'id of the score', }, { type: 'string/number', name: 'mods', optional: true, description: 'Name of the mods \`\`\`HDDT\`\`\` or mods number \`\`\`72\`\`\`', }, { type: 'string', name: 'type', optional: true, description: '\`\`\`u\`\`\` is a user_id or a username. Use string for usernames or \`\`\`id\`\`\` for user_ids', }, { type: 'string', name: 'dest', optional: false, description: 'Path to the folder', }, { type: 'string', name: 'file', optional: false, description: 'File name (without extension)', }, ], }; ; const name = async (obj = {}, dest, file) => { let _file = ''; if (dest) _file = `${dest}${dest.endsWith('/') ? '' : '/'}${file ? `${file}.osr` : 'replay.osr'}`; else _file = file ? `${file}.osr` : 'replay.osr'; if (fs_1.default.existsSync(_file)) throw new Error(`Replay ${_file} already exists`); const params = { b: obj.id, u: obj.user, m: _mode.indexOf(obj.mode), s: obj.score_id, type: obj.type, mods: obj.mods, }; const data = await request(`get_replay`, { method: 'GET', params: params, }); const score = await (0, scores_1.default)(obj.id, { user: obj.user, mode: obj.mode, mods: obj.mods, type: obj.type, }); if (!score) throw new Error(`Score not founded. Check your params: ${JSON.stringify(obj)}`); const map = await (0, diff_1.default)(obj.id); if (!map) throw new Error(`Beatmap not founded. Check your beatmap id: ${obj.id}`); const format = (0, replays_1.default)(data, map, score, obj.id, obj.mods, _file); return format; }; exports.default = name; //# sourceMappingURL=replay.js.map