osu-api-extended
Version:
Advanced osu! api wrapper for v1 and v2, with extra stuff
124 lines (123 loc) • 5.4 kB
JavaScript
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.beatmaps_download = void 0;
const request_1 = require("../../utility/request");
const auth_1 = require("../../utility/auth");
const path_1 = __importDefault(require("path"));
const fs_1 = __importDefault(require("fs"));
const handleErrors_1 = require("../../utility/handleErrors");
const beatmaps_download = (params, addons) => __awaiter(void 0, void 0, void 0, function* () {
const { dir } = path_1.default.parse(params.file_path);
if (!fs_1.default.existsSync(dir))
fs_1.default.mkdirSync(dir, { recursive: true });
if (fs_1.default.existsSync(params.file_path) && params.overwrite != true) {
return { status: 'File already exists' };
}
;
const progress_track = (progress) => {
params.progress_track_fn(params.host, progress);
};
let url = '';
let headers = {
accept: 'application/octet-stream',
};
if (params.type == 'set') {
switch (params.host) {
// case 'chimu':
// url = `https://api.chimu.moe/v1/download/${params.id}`;
// break;
case 'beatconnect':
url = `https://beatconnect.io/b/${params.id}/`;
break;
case 'sayobot':
url = `https://dl.sayobot.cn/beatmaps/download/${params.no_video ? 'novideo' : 'full'}/${params.id}`;
break;
// DOESNT WORK FOR SOME REASON
case 'nerinyan':
url = `https://api.nerinyan.moe/d/${params.id}${params.no_video ? '?nv=1' : ''}`;
headers = {
Accept: 'application/x-osu-beatmap-archive'
};
break;
case 'osu_direct_mirror':
url = `https://api.osu.direct/d/${params.id}`;
break;
case 'gatari':
url = `https://osu.gatari.pw/d/${params.id}`;
headers['Referer'] = 'https://osu.gatari.pw/';
break;
case 'ripple':
url = `https://storage.ripple.moe/d/${params.id}`;
headers['Referer'] = 'https://ripple.moe/';
break;
// case 'akatsuki':
// url = `https://akatsuki.gg/d/${params.id}`;
// headers['Referer'] = 'https://akatsuki.gg/';
// break;
case 'catboy':
url = `https://catboy.best/d/${params.id}`;
headers['Referer'] = 'https://catboy.best/';
break;
case 'osu':
if ((addons.authKey || auth_1.cache.v2) == null) {
return (0, handleErrors_1.handleErrors)('osu is not authorized');
}
;
url = `https://osu.ppy.sh/api/v2/beatmapsets/${params.id}/download${params.no_video ? '?noVideo=1' : ''}`;
headers['Referer'] = 'https://osu.ppy.sh/';
break;
default:
return (0, handleErrors_1.handleErrors)(`Unsupported type: ${params.type}`);
}
;
const data = yield (0, request_1.download)(url, params.file_path, {
_callback: params.progress_track_fn != null,
headers,
addons: addons,
callback: progress_track,
});
if (data.error)
return (0, handleErrors_1.handleErrors)(data.error);
return data;
}
;
if (params.type == 'difficulty') {
switch (params.host) {
case 'osu_direct_mirror':
url = `https://api.osu.direct/osu/${params.id}?raw=true`;
break;
case 'catboy':
url = `https://catboy.best/osu/${params.id}`;
headers['Referer'] = 'https://catboy.best/';
break;
default:
url = `https://osu.ppy.sh/osu/${params.id}`;
break;
}
;
const data = yield (0, request_1.download)(url, params.file_path, {
_callback: params.progress_track_fn != null,
headers,
addons: addons,
callback: progress_track,
});
if (data.error)
return (0, handleErrors_1.handleErrors)(data.error);
return data;
}
;
return (0, handleErrors_1.handleErrors)(`Unsupported type: ${params.type}`);
});
exports.beatmaps_download = beatmaps_download;
;