UNPKG

osu-api-extended

Version:

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

124 lines (123 loc) 5.4 kB
"use strict"; 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;