make git npm installable
This commit is contained in:
1 parent
59e2fbeebb
commit
bf127a2d89
5 files changed
+148
-2
No files matched your search
Vendored
+102
@@ -0,0 +1,102 @@
|
||||
"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
|
||||
Reference in new issue
Block a user