ayaka
Version:
Вспомогательный Node.js модуль для упрощения жизни в разработке discord.js ботов.
136 lines (135 loc) • 6.22 kB
JavaScript
;
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
__setModuleDefault(result, mod);
return result;
};
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.name_fetch_movie = exports.id_fetch_movie = exports.fetchManga = exports.shortenString = void 0;
const axios_1 = __importDefault(require("axios"));
const cheerio = __importStar(require("cheerio"));
const html_entities_1 = require("html-entities");
/**
* Возвращает сокращенную строку.
* @param value - Исходная строка, которую нужно сократить.
* @param limit - Максимальное количество символов в сокращенной строке.
* @returns Сокращенная строка, содержащая первые `limit` символов исходной строки и добавленное троеточие ("..."), если длина исходной строки превышает `limit`. В противном случае, возвращает исходную строку без изменений.
*/
function shortenString(value, limit) {
if (value.length > limit) {
return value.slice(0, limit) + "...";
}
else {
return value;
}
}
exports.shortenString = shortenString;
/**
* Функция для получения информации о манге по её названию.
* @param name - Название манги.
* @returns Массив объектов с информацией о манге.
*/
function fetchManga(name) {
return __awaiter(this, void 0, void 0, function* () {
const url = `https://shikimori.one/mangas/autocomplete/v2?search=${name.replace(/\s+/g, "-")}`;
try {
const { data } = yield axios_1.default.get(url);
const $ = cheerio.load(data);
return $(".b-db_entry-variant-list_item")
.map((_, element) => {
const id = $(element).attr("data-id") || "";
const mangaUrl = $(element).attr("data-url") || "";
const year = $(element)
.find('.value .b-tag[data-href*="season"]')
.text()
.trim();
const name = (0, html_entities_1.decode)($(element).find(".name a").text())
.split("/")[0]
.trim();
return {
id,
year,
name,
url: mangaUrl.startsWith("/")
? `https://shikimori.one${mangaUrl}`
: mangaUrl,
};
})
.get();
}
catch (error) {
console.error("Error fetching manga data:", error);
return [];
}
});
}
exports.fetchManga = fetchManga;
/**
* Функция для получения информации о фильме по его ID.
* @param movieID - ID фильма.
* @param kp_token - Токен для доступа к API Кинопоиска.
* @returns Объект с информацией о фильме.
*/
function id_fetch_movie(movieID, kp_token) {
return __awaiter(this, void 0, void 0, function* () {
let response = yield fetch(`https://api.kinopoisk.dev/v1.4/movie/${movieID}`, {
method: "GET",
headers: {
"X-API-KEY": kp_token,
"Content-Type": "application/json",
},
});
return (yield response.json());
});
}
exports.id_fetch_movie = id_fetch_movie;
/**
* Функция для получения информации о фильме по его названию.
* @param name - Название фильма.
* @param kp_token - Токен для доступа к API Кинопоиска.
* @returns Массив объектов с информацией о фильмах.
*/
function name_fetch_movie(name, kp_token) {
return __awaiter(this, void 0, void 0, function* () {
let response = yield fetch(`https://api.kinopoisk.dev/v1.4/movie/search?page=1&limit=25&query=${name}`, {
method: "GET",
headers: {
"X-API-KEY": kp_token,
"Content-Type": "application/json",
},
});
const jsonData = yield response.json();
return jsonData["docs"];
});
}
exports.name_fetch_movie = name_fetch_movie;