102 lines
3.2 KiB
JavaScript
Vendored
102 lines
3.2 KiB
JavaScript
Vendored
"use strict";
|
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
};
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
exports.makeWanikani = void 0;
|
|
const axios_1 = __importDefault(require("axios"));
|
|
const axios_rate_limit_1 = __importDefault(require("axios-rate-limit"));
|
|
function makeWanikani(apiKey = process.env['WANIKANI_API_KEY']) {
|
|
const wkApi = (0, axios_rate_limit_1.default)(axios_1.default.create({
|
|
baseURL: 'https://api.wanikani.com/v2/',
|
|
headers: {
|
|
Authorization: `Bearer ${apiKey}`,
|
|
},
|
|
validateStatus: function () {
|
|
return true;
|
|
},
|
|
}),
|
|
/**
|
|
* https://docs.api.wanikani.com/20170710/#rate-limit
|
|
* Requests per minute 60
|
|
*/
|
|
{
|
|
/**
|
|
* Per second
|
|
*/
|
|
maxRequests: 1,
|
|
perMilliseconds: 1000,
|
|
});
|
|
return Object.assign(wkApi, {
|
|
async getKanji() {
|
|
const allData = [];
|
|
let nextUrl = '/subjects';
|
|
while (true) {
|
|
const r = await wkApi.get(nextUrl, {
|
|
params: {
|
|
types: 'kanji',
|
|
},
|
|
});
|
|
allData.push(...r.data.data.map((d) => ({
|
|
id: d.id,
|
|
level: d.data.level,
|
|
characters: d.data.characters,
|
|
})));
|
|
console.error(r.data.url);
|
|
nextUrl = r.data.pages.next_url || '';
|
|
if (!nextUrl) {
|
|
break;
|
|
}
|
|
}
|
|
return allData;
|
|
},
|
|
async getVocab() {
|
|
const allData = [];
|
|
let nextUrl = '/subjects';
|
|
while (true) {
|
|
const r = await wkApi.get(nextUrl, {
|
|
params: {
|
|
types: 'vocabulary',
|
|
},
|
|
});
|
|
allData.push(...r.data.data.map((d) => ({
|
|
id: d.id,
|
|
level: d.data.level,
|
|
characters: d.data.characters,
|
|
sentences: d.data.context_sentences,
|
|
})));
|
|
console.error(r.data.url);
|
|
nextUrl = r.data.pages.next_url || '';
|
|
if (!nextUrl) {
|
|
break;
|
|
}
|
|
}
|
|
return allData;
|
|
},
|
|
async getLearnt() {
|
|
const allData = [];
|
|
let nextUrl = '/assignments';
|
|
while (true) {
|
|
const r = await wkApi.get(nextUrl, {
|
|
params: {
|
|
unlocked: 'true',
|
|
},
|
|
});
|
|
console.error(r.data.url);
|
|
r.data.data.map((d) => {
|
|
allData.push({
|
|
id: d.data.subject_id,
|
|
srsLevel: d.data.srs_stage,
|
|
});
|
|
});
|
|
nextUrl = r.data.pages.next_url || '';
|
|
if (!nextUrl) {
|
|
break;
|
|
}
|
|
}
|
|
return allData;
|
|
}
|
|
});
|
|
}
|
|
exports.makeWanikani = makeWanikani;
|
|
//# sourceMappingURL=index.js.map
|