osu-api-extended
Version:
Advanced osu! api wrapper for v1 and v2, with extra stuff
113 lines • 3.63 kB
JavaScript
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
;