e621-sdk
Version:
从E621抓取帖子。支持搜索、引用、随机。
52 lines (51 loc) • 2.18 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.formatArrayBuffer = exports.truncate = exports.query = exports.fromSearchTag = exports.toSearchTag = exports.useApi = exports.baseUrl = void 0;
const chalk_template_1 = __importDefault(require("chalk-template"));
const url_1 = require("url");
exports.baseUrl = "https://e621.net";
function useApi(url, client) {
if (client.useImage) {
if (url === "posts") {
return new url_1.URL("/api/search", client.imageUrls[client.useImage]).toString();
}
else if (url === "posts/random") {
return new url_1.URL("/api/random", client.imageUrls[client.useImage]).toString();
}
else {
return new url_1.URL(`/api/${url.replaceAll("posts", "post")}`, client.imageUrls[client.useImage]).toString();
}
}
else
return `${exports.baseUrl}/${url}.json`;
}
exports.useApi = useApi;
function toSearchTag(...names) {
return names
.flatMap(name => typeof name === "string" ? [name] : Object.values(name).flat())
.map(name => encodeURIComponent(name.toLowerCase().replaceAll(" ", "_")))
.join("+");
}
exports.toSearchTag = toSearchTag;
function fromSearchTag(tag) {
return (typeof tag === "string" ? tag : toSearchTag(tag)).split("+").map(name => decodeURIComponent(name).replaceAll("_", " "));
}
exports.fromSearchTag = fromSearchTag;
function query(data) {
return `?${Object.keys(data).map(key => data[key] === undefined ? undefined : `${key}=${data[key]}`).filter(x => x !== undefined).join("&")}`;
}
exports.query = query;
function truncate(str, maxLength) {
if (str.length <= maxLength) {
return str;
}
return str.slice(0, maxLength) + "...";
}
exports.truncate = truncate;
function formatArrayBuffer(ab, fn) {
return (0, chalk_template_1.default) `[{bold ${fn}}] {cyan ${(ab.byteLength / 1024).toFixed(1)}kb}`;
}
exports.formatArrayBuffer = formatArrayBuffer;