import { Plugin } from "@typings/plugin"; import { FilterTypes, Filters } from "@libs/filterInputs"; import { fetchApi, fetchFile } from "@libs/fetch"; import { NovelStatus } from "@libs/novelStatus"; import { load as parseHTML } from "cheerio"; import dayjs from "dayjs"; class RNBH implements Plugin.PluginBase { id = "RNBH.org"; name = "RanobeHub"; version = "1.0.0"; site = "https://ranobehub.org"; icon = "src/ru/ranobehub/icon.png"; async popularNovels( pageNo: number, { showLatestNovels, filters }: Plugin.PopularNovelsOptions, ): Promise { let url = this.site + "/api/search?page=" + pageNo + "&sort="; url += showLatestNovels ? "last_chapter_at" : filters?.sort?.value || "computed_rating"; url += "&status=" + (filters?.status?.value ? filters?.status?.value : "0"); if (filters) { if (filters.country?.value?.length) { url += "&country=" + filters.country.value.join(","); } const includeTags = [ filters.tags?.value?.include, filters.events?.value?.include, ].flat().filter((t) => t); if (includeTags.length) { url += "&tags:positive=" + includeTags.join(","); } const excludeTags = [ filters.tags?.value?.exclude, filters.events?.value?.exclude, ].flat().filter((t) => t); if (excludeTags.length) { url += "&tags:negative=" + excludeTags.join(","); } } url += "&take=40"; const result = await fetchApi(url); const body = (await result.json()) as { resource: responseNovels[] }; const novels: Plugin.NovelItem[] = []; body.resource.forEach((novel) => novels.push({ name: novel.names.rus || novel.names.eng || novel.names.original, cover: novel.poster.medium, url: novel.url, }), ); return novels; } async parseNovelAndChapters(novelUrl: string): Promise { const novelId = novelUrl .substring("https://ranobehub.org/ranobe/".length) .split("-")[0]; const result = await fetchApi(this.site + "/api/ranobe/" + novelId); const json = (await result.json()) as { data: responseNovel }; const novel: Plugin.SourceNovel = { url: novelUrl, name: json.data.names?.rus || json.data.names.eng, cover: json.data.posters.medium, summary: json.data.description, author: json.data?.authors?.[0]?.name_eng || "", status: json.data.status.title.includes("процессе") ? NovelStatus.Ongoing : NovelStatus.Completed, }; const tags = [json.data.tags.events, json.data.tags.genres] .flat() .map((tags) => tags?.names?.rus || tags?.names?.eng || tags?.title) .filter((tags) => tags); if (tags.length) { novel.genres = tags.join(", "); } const chapters: Plugin.ChapterItem[] = []; const chaptersRaw = await fetchApi(`${this.site}/api/ranobe/${novelId}/contents`); const chaptersJSON = (await chaptersRaw.json()) as { volumes: VolumesEntity[]; }; chaptersJSON.volumes.forEach((volume) => volume.chapters?.forEach((chapter) => { chapters.push({ name: chapter.name, url: chapter.url, releaseTime: dayjs(parseInt(chapter.changed_at, 10) * 1000).format("LLL"), chapterNumber: chapters.length + 1, }); }), ); novel.chapters = chapters; return novel; } async parseChapter(chapterUrl: string): Promise { const result = await fetchApi(chapterUrl); const body = await result.text(); const loadedCheerio = parseHTML(body); loadedCheerio(".chapter-hoticons").remove(); loadedCheerio("div.text:nth-child(1) img").each((index, element) => { if (!loadedCheerio(element).attr("src")?.startsWith("http")) { const dataMediaId = loadedCheerio(element).attr("data-media-id"); loadedCheerio(element).attr("src", this.site + "/api/media/" + dataMediaId); } }); let chapterText = loadedCheerio("div.text:nth-child(1)").html() || ""; // Remove script tags chapterText = chapterText?.replace( /<\s*script[^>]*>[\s\S]*?<\/script>/gim, "", ); return chapterText; } async searchNovels( searchTerm: string, //pageNo: number | undefined = 1, ): Promise { const url = `${this.site}/api/fulltext/global?query=${searchTerm}&take=10`; const result = await fetchApi(url); const data = (await result.json()) as responseSearch[]; const novels: Plugin.NovelItem[] = []; data ?.find((item) => item?.meta?.key === "ranobe") ?.data?.forEach((novel) => novels.push({ name: novel?.names?.rus || novel?.names?.eng || novel.name || novel?.names?.original || "", url: "https://ranobehub.org/ranobe/" + novel?.url?.match( /https:\/\/ranobehub\.org\/ranobe\/(.*?)\?utm_source=search_name&utm_medium=search&utm_campaign=search_using/, )?.[1], cover: novel?.image?.replace("/small", "/medium"), }), ); return novels; } fetchImage = fetchFile; filters = { sort: { label: "Сортировка", value: "computed_rating", options: [ { label: "по рейтингу", value: "computed_rating" }, { label: "по дате обновления", value: "last_chapter_at" }, { label: "по дате добавления", value: "created_at" }, { label: "по названию", value: "name_rus" }, { label: "по просмотрам", value: "views" }, { label: "по количеству глав", value: "count_chapters" }, { label: "по объему перевода", value: "count_of_symbols" }, ], type: FilterTypes.Picker, }, status: { label: "Статус перевода", value: "", options: [ { label: "Любой", value: "" }, { label: "В процессе", value: "1" }, { label: "Завершено", value: "2" }, { label: "Заморожено", value: "3" }, { label: "Неизвестно", value: "4" }, ], type: FilterTypes.Picker, }, country: { label: "Тип", value: [], options: [ { label: "Китай", value: "2" }, { label: "Корея", value: "3" }, { label: "США", value: "4" }, { label: "Япония", value: "1" }, ], type: FilterTypes.CheckboxGroup, }, events: { label: "События", value: { include: [], exclude: [] }, options: [ { label: "[Награжденная работа]", value: "611" }, { label: "18+", value: "338" }, { label: "Авантюристы", value: "353" }, { label: "Автоматоны", value: "538" }, { label: "Агрессивные персонажи", value: "434" }, { label: "Ад", value: "509" }, { label: "Адаптация в радиопостановку", value: "522" }, { label: "Академия", value: "25" }, { label: "Актеры озвучки", value: "578" }, { label: "Активный главный герой", value: "132" }, { label: "Алхимия", value: "116" }, { label: "Альтернативный мир", value: "28" }, { label: "Амнезия/Потеря памяти", value: "247" }, { label: "Анабиоз", value: "657" }, { label: "Ангелы", value: "218" }, { label: "Андрогинные персонажи", value: "217" }, { label: "Андроиды", value: "82" }, { label: "Анти-магия", value: "471" }, { label: "Антигерой", value: "346" }, { label: "Антикварный магазин", value: "572" }, { label: "Антисоциальный главный герой", value: "562" }, { label: "Антиутопия", value: "663" }, { label: "Апатичный протагонист", value: "29" }, { label: "Апокалипсис", value: "314" }, { label: "Аранжированный брак", value: "285" }, { label: "Армия", value: "598" }, { label: "Артефакты", value: "117" }, { label: "Артисты", value: "460" }, { label: "Банды", value: "581" }, { label: "БДСМ", value: "676" }, { label: "Бедный главный герой", value: "309" }, { label: "Безжалостный главный герой", value: "144" }, { label: "Беззаботный главный герой", value: "355" }, { label: "Безусловная любовь", value: "650" }, { label: "Беременность", value: "131" }, { label: "Бесполый главный герой", value: "222" }, { label: "Бессмертные", value: "275" }, { label: "Бесстрашный протагонист", value: "619" }, { label: "Бесстыдный главный герой", value: "256" }, { label: "Бесчестный главный герой", value: "699" }, { label: "Библиотека", value: "342" }, { label: "Бизнесмен ", value: "813" }, { label: "Биочип", value: "120" }, { label: "Бисексуальный главный герой", value: "822" }, { label: "Близнецы", value: "148" }, { label: "Боги", value: "211" }, { label: "Богини", value: "356" }, { label: "Боевая академия", value: "369" }, { label: "Боевые духи", value: "347" }, { label: "Боевые соревнования", value: "422" }, { label: "Божественная защита", value: "336" }, { label: "Божественные силы", value: "224" }, { label: "Большая разница в возрасте между героем и его любовным интересом", value: "348" }, { label: "Борьба за власть", value: "544" }, { label: "Брак", value: "363" }, { label: "Брак по расчету", value: "65" }, { label: "Братский комплекс", value: "31" }, { label: "Братство", value: "413" }, { label: "Братья и сестры", value: "518" }, { label: "Буддизм", value: "742" }, { label: "Быстрая культивация", value: "273" }, { label: "Быстрообучаемый", value: "221" }, { label: "Валькирии", value: "667" }, { label: "Вампиры", value: "266" }, { label: "Ваншот", value: "679" }, { label: "Ведьмы", value: "169" }, { label: "Вежливый главный герой", value: "289" }, { label: "Верные подчиненные", value: "225" }, { label: "Взрослый главный герой", value: "183" }, { label: "Видит то, чего не видят другие", value: "636" }, { label: "Виртуальная реальность", value: "313" }, { label: "Владелец магазина", value: "653" }, { label: "Внезапная сила", value: "376" }, { label: "Внезапное богатство", value: "802" }, { label: "Внешний вид отличается от фактического возраста", value: "334" }, { label: "Военные Летописи", value: "740" }, { label: "Возвращение из другого мира", value: "673" }, { label: "Войны", value: "58" }, { label: "Вокалоид", value: "678" }, { label: "Волшебники/Волшебницы", value: "477" }, { label: "Волшебные звери", value: "201" }, { label: "Воображаемый друг", value: "614" }, { label: "Воры", value: "326" }, { label: "Воскрешение", value: "78" }, { label: "Враги становятся возлюбленными", value: "428" }, { label: "Враги становятся союзниками", value: "502" }, { label: "Врата в другой мир", value: "558" }, { label: "Врачи", value: "286" }, { label: "Временной парадокс", value: "163" }, { label: "Всемогущий главный герой", value: "42" }, { label: "Вторжение на землю", value: "77" }, { label: "Второй шанс", value: "112" }, { label: "Вуайеризм", value: "851" }, { label: "Выживание", value: "290" }, { label: "Высокомерные персонажи", value: "268" }, { label: "Гадание", value: "540" }, { label: "Гарем рабов", value: "828" }, { label: "Геймеры", value: "302" }, { label: "Генералы", value: "223" }, { label: "Генетические модификации", value: "620" }, { label: "Гениальный главный герой", value: "566" }, { label: "Герои", value: "173" }, { label: "Героиня — сорванец", value: "525" }, { label: "Герой влюбляется первым", value: "64" }, { label: "Гетерохромия", value: "510" }, { label: "Гильдии", value: "323" }, { label: "Гипнотизм", value: "768" }, { label: "Главный герой — бог", value: "486" }, { label: "Главный герой — гуманоид", value: "595" }, { label: "Главный герой — женщина", value: "63" }, { label: "Главный герой — мужчина", value: "39" }, { label: "Главный герой — наполовину человек", value: "362" }, { label: "Главный герой — отец", value: "859" }, { label: "Главный герой — раб", value: "832" }, { label: "Главный герой — ребенок", value: "415" }, { label: "Главный герой — рубака", value: "400" }, { label: "Главный герой — собиратель гарема", value: "439" }, { label: "Главный герой влюбляется первым", value: "655" }, { label: "Главный герой играет роль", value: "396" }, { label: "Главный герой носит очки", value: "637" }, { label: "Главный герой пацифист", value: "675" }, { label: "Главный герой с несколькими телами", value: "628" }, { label: "Главный герой силен с самого начала", value: "45" }, { label: "Гладиаторы", value: "549" }, { label: "Глуповатый главный герой", value: "295" }, { label: "Гоблины", value: "529" }, { label: "Големы", value: "569" }, { label: "Гомункул", value: "850" }, { label: "Горничные", value: "380" }, { label: "Госпиталь", value: "1043" }, { label: "Готовка", value: "193" }, { label: "Гриндинг", value: "303" }, { label: "Дао Компаньон", value: "384" }, { label: "Даосизм", value: "792" }, { label: "Дарк", value: "151" }, { label: "Дварфы", value: "220" }, { label: "Двойная личность", value: "601" }, { label: "Двойник", value: "547" }, { label: "Дворецкий", value: "623" }, { label: "Дворяне", value: "41" }, { label: "Дворянство/Аристократия", value: "354" }, { label: "Девушки-монстры", value: "634" }, { label: "Демоническая техника культивации", value: "706" }, { label: "Демоны", value: "6" }, { label: "Денежный долг", value: "841" }, { label: "Депрессия", value: "494" }, { label: "Детективы", value: "561" }, { label: "Дискриминация", value: "34" }, { label: "Добыча денег одно из основных стремлений главного героя", value: "307" }, { label: "Долгая разлука", value: "200" }, { label: "Домашние дела", value: "178" }, { label: "Домогательство", value: "394" }, { label: "Драконы", value: "195" }, { label: "Драконьи всадники", value: "555" }, { label: "Древние времена", value: "102" }, { label: "Древний Китай", value: "284" }, { label: "Дружба", value: "97" }, { label: "Друзья детства", value: "170" }, { label: "Друзья становятся врагами", value: "507" }, { label: "Друиды", value: "427" }, { label: "Дух лисы", value: "842" }, { label: "Духи/Призраки", value: "46" }, { label: "Духовный советник", value: "351" }, { label: "Душевность", value: "587" }, { label: "Души", value: "136" }, { label: "Европейская атмосфера", value: "457" }, { label: "Ёкаи", value: "516" }, { label: "Есть аниме-адаптация", value: "26" }, { label: "Есть видеоигра по мотивам", value: "491" }, { label: "Есть манга-адаптация", value: "27" }, { label: "Есть манхва-адаптация", value: "453" }, { label: "Есть маньхуа-адаптация", value: "298" }, { label: "Есть сериал-адаптация", value: "421" }, { label: "Есть фильм по мотивам", value: "47" }, { label: "Женища-наставник", value: "438" }, { label: "Жертва изнасилования влюбляется в насильника", value: "414" }, { label: "Жесткая, двуличная личность", value: "249" }, { label: "Жестокие персонажи", value: "436" }, { label: "Жестокое обращение с ребенком", value: "617" }, { label: "Жестокость", value: "127" }, { label: "Животноводство", value: "765" }, { label: "Животные черты", value: "466" }, { label: "Жизнь в квартире", value: "554" }, { label: "Жрицы", value: "564" }, { label: "Заботливый главный герой", value: "176" }, { label: "Забывчивый главный герой", value: "579" }, { label: "Заговоры", value: "177" }, { label: "Закалка тела", value: "269" }, { label: "Законники", value: "769" }, { label: "Замкнутый главный герой", value: "533" }, { label: "Запечатанная сила", value: "344" }, { label: "Застенчивые персонажи", value: "443" }, { label: "Звери", value: "119" }, { label: "Звери-компаньоны", value: "192" }, { label: "Злой протагонист", value: "125" }, { label: "Злые боги", value: "437" }, { label: "Злые организации", value: "503" }, { label: "Злые религии", value: "725" }, { label: "Знаменитости", value: "397" }, { label: "Знаменитый главный герой", value: "469" }, { label: "Знания современного мира", value: "185" }, { label: "Зомби", value: "321" }, { label: "Игра на выживание", value: "162" }, { label: "Игривый протагонист", value: "700" }, { label: "Игровая система рейтинга", value: "301" }, { label: "Игровые элементы", value: "152" }, { label: "Игрушки (18+)", value: "644" }, { label: "Из грязи в князи", value: "330" }, { label: "Из женщины в мужчину ", value: "688" }, { label: "Из мужчины в женщину", value: "698" }, { label: "Из полного в худого", value: "809" }, { label: "Из слабого в сильного", value: "81" }, { label: "Из страшно(го/й) в красиво(го/ю)", value: "810" }, { label: "Извращенный главный герой", value: "349" }, { label: "Изгои", value: "472" }, { label: "Изменение расы", value: "627" }, { label: "Изменения внешнего вида", value: "191" }, { label: "Изменения личности", value: "99" }, { label: "Изнасилование", value: "110" }, { label: "Изображения жестокости", value: "260" }, { label: "Империи", value: "749" }, { label: "Инвалидность", value: "656" }, { label: "Индустриализация", value: "180" }, { label: "Инженер", value: "35" }, { label: "Инцест", value: "463" }, { label: "Искусственный интеллект", value: "118" }, { label: "Исследования", value: "635" }, { label: "Каннибализм", value: "377" }, { label: "Карточные игры", value: "654" }, { label: "Киберспорт", value: "658" }, { label: "Кланы", value: "950" }, { label: "Класс безработного [Игровой класс в игре]", value: "727" }, { label: "Клоны", value: "365" }, { label: "Клубы", value: "96" }, { label: "Книги", value: "341" }, { label: "Книги навыков", value: "312" }, { label: "Книжный червь", value: "455" }, { label: "Коварство", value: "111" }, { label: "Коллеги", value: "683" }, { label: "Колледж/Университет", value: "712" }, { label: "Кома", value: "826" }, { label: "Командная работа", value: "426" }, { label: "Комедийный оттенок", value: "523" }, { label: "Комплекс неполноценности", value: "489" }, { label: "Комплекс семейных отношений", value: "104" }, { label: "Конкуренция", value: "746" }, { label: "Контракты", value: "483" }, { label: "Контроль разума/сознания", value: "262" }, { label: "Копейщик", value: "339" }, { label: "Королевская битва", value: "1025" }, { label: "Королевская власть", value: "53" }, { label: "Королевства", value: "141" }, { label: "Коррупция", value: "378" }, { label: "Космические войны", value: "674" }, { label: "Красивый герой", value: "107" }, { label: "Крафт", value: "287" }, { label: "Кризис личности", value: "599" }, { label: "Кругосветное путешествие", value: "257" }, { label: "Кудере", value: "440" }, { label: "Кузены", value: "701" }, { label: "Кузнец", value: "454" }, { label: "Кукловоды", value: "431" }, { label: "Куклы/марионетки", value: "573" }, { label: "Культивация", value: "123" }, { label: "Куннилингус", value: "632" }, { label: "Легенды", value: "430" }, { label: "Легкая жизнь", value: "604" }, { label: "Ленивый главный герой", value: "570" }, { label: "Лидерство", value: "424" }, { label: "Лоли", value: "92" }, { label: "Лотерея", value: "401" }, { label: "Любовный интерес влюбляется первым", value: "647" }, { label: "Любовный интерес главного героя носит очки", value: "576" }, { label: "Любовный треугольник", value: "98" }, { label: "Любовь детства", value: "500" }, { label: "Любовь с первого взгляда", value: "730" }, { label: "Магические надписи", value: "373" }, { label: "Магические печати", value: "277" }, { label: "Магические технологии", value: "357" }, { label: "Магическое пространство/измерение, доступное не всем персонажам", value: "244" }, { label: "Магия", value: "38" }, { label: "Магия призыва", value: "333" }, { label: "Мазохистские персонажи", value: "660" }, { label: "Манипулятивные персонажи", value: "130" }, { label: "Мания", value: "91" }, { label: "Мастер на все руки", value: "390" }, { label: "Мастурбация", value: "846" }, { label: "Махо-сёдзё", value: "496" }, { label: "Медицинские знания", value: "441" }, { label: "Медленная романтическая линия", value: "113" }, { label: "Медленное развитие на старте ", value: "670" }, { label: "Межпространственные путешествия", value: "316" }, { label: "Менеджмент", value: "182" }, { label: "Мертвый главный герой", value: "794" }, { label: "Месть", value: "88" }, { label: "Метаморфы", value: "234" }, { label: "Меч и магия", value: "55" }, { label: "Мечник", value: "607" }, { label: "Мечты", value: "733" }, { label: "Милая история", value: "709" }, { label: "Милое дитя", value: "596" }, { label: "Милый главный герой", value: "697" }, { label: "Мировое дерево", value: "385" }, { label: "Мистический ореол вокруг семьи", value: "409" }, { label: "Мифические звери", value: "418" }, { label: "Мифология", value: "468" }, { label: "Младшие братья", value: "843" }, { label: "Младшие сестры", value: "465" }, { label: "ММОРПГ (ЛитРПГ)", value: "306" }, { label: "Множество перемещенных людей", value: "488" }, { label: "Множество реальностей", value: "278" }, { label: "Множество реинкарнированных людей", value: "227" }, { label: "Модели", value: "649" }, { label: "Молчаливый персонаж", value: "705" }, { label: "Монстры", value: "69" }, { label: "Мужская гей-пара", value: "685" }, { label: "Мужчина-яндере", value: "155" }, { label: "Музыка", value: "589" }, { label: "Музыкальные группы", value: "588" }, { label: "Мутации", value: "668" }, { label: "Мутированные существа", value: "317" }, { label: "Навык кражи", value: "626" }, { label: "Навязчивая любовь", value: "85" }, { label: "Наемники", value: "324" }, { label: "Назойливый возлюбленный", value: "501" }, { label: "Наивный главный герой", value: "66" }, { label: "Наркотики", value: "661" }, { label: "Нарциссический главный герой", value: "470" }, { label: "Насилие сексуального характера", value: "824" }, { label: "Наследование", value: "372" }, { label: "Национализм", value: "318" }, { label: "Не блещущий внешне главный герой", value: "328" }, { label: "Не родные братья и сестры", value: "464" }, { label: "Небеса", value: "508" }, { label: "Небесное испытание", value: "274" }, { label: "Негуманоидный главный герой", value: "622" }, { label: "Недоверчивый главный герой", value: "485" }, { label: "Недооцененный главный герой", value: "140" }, { label: "Недоразумения", value: "202" }, { label: "Неизлечимая болезнь", value: "75" }, { label: "Некромант", value: "308" }, { label: "Нелинейная история", value: "157" }, { label: "Ненавистный главный герой", value: "487" }, { label: "Ненадежный рассказчик", value: "165" }, { label: "Нерезиденты", value: "821" }, { label: "Нерешительный главный герой", value: "741" }, { label: "Несерьезный главный герой", value: "294" }, { label: "Несколько временных линий", value: "517" }, { label: "Несколько главных героев", value: "475" }, { label: "Несколько идентичностей", value: "615" }, { label: "Несколько личностей", value: "474" }, { label: "Нетораре", value: "721" }, { label: "Нетори", value: "450" }, { label: "Неудачливый главный герой", value: "567" }, { label: "Ниндзя", value: "358" }, { label: "Обещание из детства", value: "738" }, { label: "Обманщик", value: "411" }, { label: "Обмен телами", value: "94" }, { label: "Обнаженка", value: "417" }, { label: "Обольщение", value: "718" }, { label: "Оборотни", value: "624" }, { label: "Обратный гарем", value: "255" }, { label: "Общество монстров", value: "226" }, { label: "Обязательство", value: "548" }, { label: "Огнестрельное оружие", value: "179" }, { label: "Ограниченная продолжительность жизни", value: "73" }, { label: "Одержимость", value: "447" }, { label: "Одинокий главный герой", value: "304" }, { label: "Одиночество", value: "199" }, { label: "Одиночное проживание", value: "207" }, { label: "Околосмертные переживания", value: "773" }, { label: "Оммёдзи", value: "542" }, { label: "Омоложение", value: "237" }, { label: "Организованная преступность", value: "478" }, { label: "Оргия", value: "825" }, { label: "Орки", value: "228" }, { label: "Освоение навыков", value: "235" }, { label: "Основано на аниме", value: "553" }, { label: "Основано на видео игре", value: "704" }, { label: "Основано на визуальной новелле ", value: "861" }, { label: "Основано на песне", value: "677" }, { label: "Основано на фильме", value: "552" }, { label: "Осторожный главный герой", value: "122" }, { label: "Отаку", value: "512" }, { label: "Открытый космос", value: "150" }, { label: "Отношения в сети", value: "713" }, { label: "Отношения между богом и человеком", value: "603" }, { label: "Отношения между людьми и нелюдьми", value: "205" }, { label: "Отношения на расстоянии", value: "852" }, { label: "Отношения начальник-подчиненный", value: "590" }, { label: "Отношения Сенпай-Коухай", value: "513" }, { label: "Отношения ученика и учителя", value: "451" }, { label: "Отношения учитель-ученик", value: "343" }, { label: "Отношения хозяин-слуга", value: "206" }, { label: "Отомэ игра", value: "723" }, { label: "Отсутствие здравого смысла", value: "605" }, { label: "Отсутствие родителей", value: "575" }, { label: "Офисный роман", value: "686" }, { label: "Официанты", value: "681" }, { label: "Охотники", value: "288" }, { label: "Очаровательный главный герой", value: "659" }, { label: "Падшее дворянство", value: "618" }, { label: "Падшие ангелы", value: "505" }, { label: "Пайзури", value: "630" }, { label: "Паразиты", value: "535" }, { label: "Параллельные миры", value: "86" }, { label: "Парк развлечений", value: "586" }, { label: "Пародия", value: "319" }, { label: "Певцы/Певицы", value: "734" }, { label: "Первая любовь", value: "716" }, { label: "Первоисточник новеллы — манга", value: "560" }, { label: "Первый раз", value: "845" }, { label: "Перемещение в другой мир, имея при себе современные достижения", value: "732" }, { label: "Перемещение в игровой мир", value: "532" }, { label: "Перемещение в иной мир", value: "754" }, { label: "Перерождение в ином мире", value: "755" }, { label: "Переселение души/Трансмиграция", value: "139" }, { label: "Персонаж использует щит", value: "631" }, { label: "Петля времени", value: "79" }, { label: "Пираты", value: "817" }, { label: "Писатели", value: "408" }, { label: "Питомцы", value: "253" }, { label: "Племенное общество", value: "291" }, { label: "Повелитель демонов", value: "171" }, { label: "Повествование от нескольких лиц/Несколько точек зрения", value: "156" }, { label: "Подземелья", value: "219" }, { label: "Пожелания", value: "166" }, { label: "Познание Дао", value: "360" }, { label: "Покинутое дитя", value: "534" }, { label: "Полигамия", value: "296" }, { label: "Политика", value: "43" }, { label: "Полиция", value: "801" }, { label: "Полулюди", value: "335" }, { label: "Пользователь уникального оружия", value: "432" }, { label: "Популярный любовный интерес", value: "241" }, { label: "Постапокалиптика", value: "60" }, { label: "Потерянные цивилизации", value: "751" }, { label: "Похищения людей", value: "707" }, { label: "Поэзия", value: "404" }, { label: "Правонарушители", value: "694" }, { label: "Прагматичный главный герой", value: "536" }, { label: "Преданный любовный интерес", value: "106" }, { label: "Предательство", value: "103" }, { label: "Предвидение", value: "52" }, { label: "Прекрасная героиня", value: "30" }, { label: "Преступники", value: "728" }, { label: "Преступность", value: "83" }, { label: "Призванный герой", value: "147" }, { label: "Призраки", value: "51" }, { label: "Принуждение к отношениям", value: "602" }, { label: "Принцессы", value: "933" }, { label: "Притворная пара", value: "600" }, { label: "Причудливые персонажи", value: "297" }, { label: "Пришельцы/Инопланетяне", value: "76" }, { label: "Программист", value: "666" }, { label: "Проклятия", value: "48" }, { label: "Промывание мозгов", value: "519" }, { label: "Пропуск времени", value: "138" }, { label: "Пророчества", value: "429" }, { label: "Проститутки", value: "844" }, { label: "Пространственное манипулирование", value: "375" }, { label: "Прошлое играет большую роль", value: "215" }, { label: "Прыжки между мирами", value: "737" }, { label: "Психические силы", value: "265" }, { label: "Психопаты", value: "158" }, { label: "Путешествие во времени", value: "80" }, { label: "Пытка", value: "168" }, { label: "Рабы", value: "829" }, { label: "Развод", value: "771" }, { label: "Разумные предметы", value: "174" }, { label: "Расизм", value: "320" }, { label: "Рассказ", value: "61" }, { label: "Расторжения помолвки", value: "243" }, { label: "Расы зооморфов", value: "209" }, { label: "Ревность", value: "717" }, { label: "Редакторы", value: "684" }, { label: "Реинкарнация", value: "281" }, { label: "Реинкарнация в монстра", value: "204" }, { label: "Реинкарнация в объект", value: "692" }, { label: "Религии", value: "565" }, { label: "Репортеры", value: "837" }, { label: "Ресторан", value: "652" }, { label: "Решительный главный герой", value: "124" }, { label: "Робкий главный герой", value: "800" }, { label: "Родитель одиночка", value: "687" }, { label: "Родительский комплекс", value: "531" }, { label: "Родословная", value: "121" }, { label: "Романтический подсюжет ", value: "159" }, { label: "Рост персонажа", value: "95" }, { label: "Рыцари", value: "142" }, { label: "Садистские персонажи", value: "642" }, { label: "Самоотверженный главный герой", value: "748" }, { label: "Самоубийства", value: "616" }, { label: "Самурай", value: "646" }, { label: "Сборник коротких историй", value: "456" }, { label: "Связанные сюжетные линии", value: "473" }, { label: "Святые", value: "761" }, { label: "Священники", value: "325" }, { label: "Сдержанный главный герой", value: "799" }, { label: "Секретные организации", value: "331" }, { label: "Секреты", value: "577" }, { label: "Секс рабы", value: "830" }, { label: "Семейный конфликт", value: "770" }, { label: "Семь добродетелей", value: "233" }, { label: "Семь смертных грехов", value: "134" }, { label: "Семья", value: "251" }, { label: "Сёнэн-ай подсюжет ", value: "664" }, { label: "Серийные убийцы", value: "497" }, { label: "Сестринский комплекс", value: "498" }, { label: "Сила духа", value: "282" }, { label: "Сила, требующая платы за пользование", value: "520" }, { label: "Сильная пара", value: "109" }, { label: "Сильный в сильнейшего", value: "359" }, { label: "Сильный любовный интерес", value: "161" }, { label: "Синдром восьмиклассника", value: "90" }, { label: "Сироты", value: "214" }, { label: "Система уровней", value: "198" }, { label: "Системный администратор", value: "476" }, { label: "Скрытие истинной личности", value: "371" }, { label: "Скрытие истинных способностей", value: "252" }, { label: "Скрытный главный герой", value: "133" }, { label: "Скрытые способности", value: "128" }, { label: "Скульпторы", value: "366" }, { label: "Слабо выраженная романтическая линия", value: "213" }, { label: "Слабый главный герой", value: "188" }, { label: "Слепой главный герой", value: "864" }, { label: "Слуги", value: "232" }, { label: "Смерть", value: "49" }, { label: "Смерть близких", value: "361" }, { label: "Собственнические персонажи", value: "108" }, { label: "Современность", value: "40" }, { label: "Сожительство", value: "482" }, { label: "Создание армии", value: "175" }, { label: "Создание артефактов", value: "292" }, { label: "Создание клана", value: "448" }, { label: "Создание королевства", value: "181" }, { label: "Создание навыков", value: "236" }, { label: "Создание секты", value: "393" }, { label: "Солдаты/Военные", value: "71" }, { label: "Сон", value: "571" }, { label: "Состоятельные персонажи", value: "67" }, { label: "Социальная иерархия на основе силы", value: "137" }, { label: "Социальные изгои", value: "480" }, { label: "Спасение мира", value: "597" }, { label: "Специальные способности", value: "54" }, { label: "Спокойный главный герой", value: "32" }, { label: "Справедливый главный герой", value: "702" }, { label: "Средневековье", value: "184" }, { label: "Ссорящаяся пара", value: "293" }, { label: "Сталкеры", value: "689" }, { label: "Старение", value: "190" }, { label: "Стоические персонажи", value: "444" }, { label: "Стокгольмский синдром", value: "643" }, { label: "Стратег", value: "425" }, { label: "Стратегические битвы", value: "160" }, { label: "Стратегия", value: "1038" }, { label: "Стрелки", value: "458" }, { label: "Стрельба из лука", value: "383" }, { label: "Студенческий совет", value: "490" }, { label: "Судьба", value: "271" }, { label: "Суккубы", value: "484" }, { label: "Супер герои", value: "1039" }, { label: "Суровая подготовка", value: "261" }, { label: "Таинственная болезнь", value: "74" }, { label: "Таинственное прошлое", value: "263" }, { label: "Тайная личность", value: "310" }, { label: "Тайные отношения", value: "812" }, { label: "Танцоры", value: "840" }, { label: "Телохранители", value: "452" }, { label: "Тентакли", value: "693" }, { label: "Террористы", value: "515" }, { label: "Технологический разрыв", value: "621" }, { label: "Тихие персонажи", value: "546" }, { label: "Толстый главный герой", value: "299" }, { label: "Торговцы", value: "416" }, { label: "Травля/Буллинг", value: "89" }, { label: "Травник", value: "708" }, { label: "Трагическое прошлое", value: "164" }, { label: "Трансплантация воспоминаний", value: "367" }, { label: "Трап (Путаница с гендером персонажа)", value: "582" }, { label: "Трудолюбивый главный герой", value: "37" }, { label: "Тюрьма", value: "479" }, { label: "Убийства", value: "84" }, { label: "Убийцы", value: "248" }, { label: "Убийцы драконов", value: "606" }, { label: "Уверенный главный герой", value: "270" }, { label: "Удачливый главный герой", value: "402" }, { label: "Укротитель монстров", value: "337" }, { label: "Умения из прошлой жизни", value: "280" }, { label: "Умная пара", value: "493" }, { label: "Умный главный герой", value: "33" }, { label: "Уникальная техника Культивации", value: "254" }, { label: "Уникальное оружие", value: "340" }, { label: "Управление бизнесом", value: "315" }, { label: "Управление временем", value: "167" }, { label: "Управление кровью", value: "764" }, { label: "Упрямый главный герой", value: "672" }, { label: "Уродливый главный герой", value: "803" }, { label: "Ускоренный рост", value: "300" }, { label: "Усыновленные дети", value: "481" }, { label: "Усыновленный главный герой", value: "412" }, { label: "Уход за детьми", value: "398" }, { label: "Учителя", value: "345" }, { label: "Фамильяры", value: "541" }, { label: "Фанатизм", value: "613" }, { label: "Фантастические существа", value: "322" }, { label: "Фанфикшн", value: "388" }, { label: "Фармацевт", value: "715" }, { label: "Фарминг", value: "379" }, { label: "Феи", value: "210" }, { label: "Фелляция", value: "584" }, { label: "Фениксы", value: "374" }, { label: "Фетиш груди", value: "499" }, { label: "Философия", value: "87" }, { label: "Фильмы", value: "403" }, { label: "Флэшбэки", value: "528" }, { label: "Фобии", value: "100" }, { label: "Фольклор", value: "467" }, { label: "Футанари", value: "568" }, { label: "Футуристический сеттинг", value: "382" }, { label: "Фэнтези мир", value: "126" }, { label: "Хакеры", value: "399" }, { label: "Харизматический герой", value: "391" }, { label: "Хикикомори/Затворники", value: "462" }, { label: "Хитроумный главный герой", value: "105" }, { label: "Хозяин подземелий", value: "557" }, { label: "Холодный главный герой", value: "259" }, { label: "Хорошие отношения с семьей", value: "506" }, { label: "Хранители могил", value: "68" }, { label: "Целители", value: "389" }, { label: "Цзянши", value: "735" }, { label: "Цундэрэ", value: "445" }, { label: "Чаты", value: "580" }, { label: "Человеческое оружие", value: "521" }, { label: "Честный главный герой", value: "240" }, { label: "Читы", value: "238" }, { label: "Шантаж", value: "526" }, { label: "Шеф-повар", value: "239" }, { label: "Шикигами", value: "543" }, { label: "Школа только для девочек", value: "633" }, { label: "Шота", value: "514" }, { label: "Шоу-бизнес", value: "407" }, { label: "Шпионы", value: "563" }, { label: "Эволюция", value: "196" }, { label: "Эгоистичный главный герой", value: "539" }, { label: "Эйдетическая память", value: "392" }, { label: "Экзорсизм", value: "504" }, { label: "Экономика", value: "492" }, { label: "Эксгибиционизм", value: "639" }, { label: "Эксперименты с людьми", value: "129" }, { label: "Элементальная магия", value: "395" }, { label: "Эльфы", value: "172" }, { label: "Эмоционально слабый главный герой", value: "816" }, { label: "Эпизодический", value: "612" }, { label: "Юный любовный интерес", value: "446" }, { label: "Яды", value: "410" }, { label: "Языкастые персонажи", value: "406" }, { label: "Языковой барьер", value: "59" }, { label: "Яндере", value: "208" }, { label: "Японские силы самообороны", value: "559" }, { label: "Ярко выраженная романтическая линия", value: "272" }, { label: "Abusive Characters", value: "625" }, { label: "Adapted to Visual Novel", value: "1046" }, { label: "Adopted-lead", value: "886" }, { label: "Adultery", value: "866" }, { label: "Affair", value: "645" }, { label: "Age-gap", value: "923" }, { label: "Almost-human-lead", value: "975" }, { label: "An*l", value: "780" }, { label: "Androgynous-male-lead", value: "1002" }, { label: "Anti-hero-lead", value: "976" }, { label: "Apathetic-lead", value: "967" }, { label: "Arms Dealers", value: "839" }, { label: "Army-commander", value: "1003" }, { label: "Artifact-refining", value: "924" }, { label: "Autism", value: "855" }, { label: "Awkward Protagonist", value: "669" }, { label: "Awkward-lead", value: "892" }, { label: "Bestiality", value: "796" }, { label: "Big-breasts", value: "908" }, { label: "Birth-of-a-nation", value: "1004" }, { label: "Bisexual-lead", value: "1027" }, { label: "Body-refining", value: "947" }, { label: "Body-swap/s", value: "1036" }, { label: "Boss-subordinate-relationship", value: "876" }, { label: "Bride-kidnapping", value: "948" }, { label: "Caring-lead", value: "879" }, { label: "Cautious-lead", value: "1032" }, { label: "Changed-man", value: "925" }, { label: "Charismatic-lead", value: "1005" }, { label: "Child-lead", value: "936" }, { label: "Clever-lead", value: "880" }, { label: "Clumsy Love Interests", value: "815" }, { label: "Cold Love Interests", value: "651" }, { label: "Coming of Age", value: "860" }, { label: "Confident-lead", value: "894" }, { label: "Confident-male-lead", value: "951" }, { label: "Confinement", value: "767" }, { label: "Conflicting Loyalties", value: "793" }, { label: "Couple Growth", value: "690" }, { label: "Court Official", value: "863" }, { label: "Cowardly Protagonist", value: "703" }, { label: "Cowardly-lead", value: "1000" }, { label: "Cross-dressing", value: "250" }, { label: "Cunnilingus", value: "867" }, { label: "Cunning-lead", value: "952" }, { label: "Cunning-male-lead", value: "953" }, { label: "Curious Protagonist", value: "849" }, { label: "Cute-lead", value: "887" }, { label: "Dense-lead", value: "868" }, { label: "Determined-lead", value: "972" }, { label: "Developing-technology", value: "1006" }, { label: "Devil/s", value: "1007" }, { label: "Different Social Status", value: "758" }, { label: "Disfigurement", value: "838" }, { label: "Doting Love Interests", value: "665" }, { label: "Doting Older Siblings", value: "609" }, { label: "Doting Parents", value: "530" }, { label: "Dungeon/s-exploring", value: "990" }, { label: "Elderly Protagonist", value: "774" }, { label: "Enlightenment", value: "729" }, { label: "Eunuch", value: "1047" }, { label: "Eye Powers", value: "386" }, { label: "Family Business", value: "785" }, { label: "Famous Parents", value: "790" }, { label: "Famous-lead", value: "897" }, { label: "Fanfic", value: "942" }, { label: "Fated Lovers", value: "797" }, { label: "Fellatio", value: "870" }, { label: "Female-lead", value: "888" }, { label: "First-time-intercourse", value: "871" }, { label: "Fleet Battles", value: "836" }, { label: "Forced Living Arrangements", value: "808" }, { label: "Forced Marriage", value: "835" }, { label: "Former Hero", value: "752" }, { label: "Fujoshi", value: "1045" }, { label: "Galge", value: "848" }, { label: "Gambling", value: "1031" }, { label: "Gamelit", value: "994" }, { label: "Genderless-lead", value: "1008" }, { label: "Glasses-wearing-lead", value: "995" }, { label: "Guardian Relationship", value: "197" }, { label: "H*ndjob", value: "629" }, { label: "Half-human-lead", value: "956" }, { label: "Hard-working-lead", value: "957" }, { label: "Hard-working-male-lead", value: "958" }, { label: "Hard-working-protagonist/s", value: "1030" }, { label: "Harem-seeking-lead", value: "929" }, { label: "Harem-subtext", value: "909" }, { label: "Helpful Protagonist", value: "760" }, { label: "Helpful-lead", value: "882" }, { label: "Hidden-gem", value: "998" }, { label: "High-fantasy", value: "991" }, { label: "Human-becomes-demon/monster", value: "1009" }, { label: "Human-nonhuman-relationship", value: "914" }, { label: "Humanoid-lead", value: "915" }, { label: "Imperial Harem", value: "805" }, { label: "Incubus", value: "1049" }, { label: "Insects", value: "831" }, { label: "Interspatial-storage", value: "959" }, { label: "Kind Love Interests", value: "757" }, { label: "Large-number-of-skills", value: "1010" }, { label: "Legendary-hero", value: "1011" }, { label: "Litrpg", value: "977" }, { label: "Love Rivals", value: "788" }, { label: "Lovers Reunited", value: "853" }, { label: "Low-fantasy", value: "1037" }, { label: "Master-disciple-relationship", value: "899" }, { label: "Matriarchy", value: "807" }, { label: "Mature-lead", value: "900" }, { label: "Mind Break", value: "862" }, { label: "Mismatched Couple", value: "695" }, { label: "Mob Protagonist", value: "648" }, { label: "Mob-lead", value: "902" }, { label: "Modern", value: "988" }, { label: "Monster-pov", value: "1012" }, { label: "Mpreg", value: "856" }, { label: "Multiple-povs", value: "1013" }, { label: "Mystery Solving", value: "710" }, { label: "Naive-lead", value: "1014" }, { label: "Near-death-experience", value: "996" }, { label: "Neet", value: "495" }, { label: "Nightmares", value: "833" }, { label: "Nobility", value: "1015" }, { label: "Non-human-lead", value: "978" }, { label: "Non-humanoid-lead", value: "1016" }, { label: "Not-so-secret-identity", value: "979" }, { label: "Omegaverse", value: "857" }, { label: "Online-game", value: "910" }, { label: "Online-gaming", value: "911" }, { label: "Outdoor Interc**rse", value: "847" }, { label: "Outdoor-intercourse", value: "903" }, { label: "Overprotective Siblings", value: "610" }, { label: "Part-Time Job", value: "865" }, { label: "Past Trauma", value: "726" }, { label: "Past-memories", value: "1017" }, { label: "Persistent Love Interests", value: "714" }, { label: "Perverted-lead", value: "932" }, { label: "Photography", value: "798" }, { label: "Pill Based Cultivation", value: "279" }, { label: "Pill Concocting", value: "245" }, { label: "Pilots", value: "820" }, { label: "Playboys", value: "795" }, { label: "Playful-lead", value: "989" }, { label: "Polyandry", value: "811" }, { label: "Portal-fantasy-/-isekai", value: "992" }, { label: "Pragmatic-lead", value: "884" }, { label: "Profanity", value: "980" }, { label: "Protagonist-loyal-to-love-interest", value: "905" }, { label: "R-15 (Японское возрастное ограничение)", value: "230" }, { label: "Rebellion", value: "834" }, { label: "Reincarnated in a Game World", value: "804" }, { label: "Reluctant Protagonist", value: "696" }, { label: "Reverse R*pe", value: "776" }, { label: "Reversible Couple", value: "854" }, { label: "Ruling-class", value: "943" }, { label: "S*x Friends", value: "750" }, { label: "S*xual Cultivation Technique", value: "823" }, { label: "Salaryman", value: "1035" }, { label: "Satire", value: "981" }, { label: "Schemes And Conspiracies", value: "745" }, { label: "Scientist/s", value: "997" }, { label: "Scientists", value: "1029" }, { label: "Secret Crush", value: "827" }, { label: "Seme Protagonist", value: "1034" }, { label: "Seme-lead", value: "1028" }, { label: "Sentimental Protagonist", value: "1048" }, { label: "Seven-heavenly-virtues", value: "1018" }, { label: "Sexual Cultivation Technique", value: "350" }, { label: "Sexual-content", value: "982" }, { label: "Sexuality", value: "983" }, { label: "Sharing A Body", value: "814" }, { label: "Shotacon", value: "858" }, { label: "Shoujo-Ai Subplot", value: "777" }, { label: "Sibling Rivalry", value: "766" }, { label: "Sibling's Care", value: "1042" }, { label: "Sickly Characters", value: "787" }, { label: "Skills", value: "1019" }, { label: "Slave-harem", value: "1001" }, { label: "Slime", value: "1020" }, { label: "Smart-male-lead", value: "963" }, { label: "Spirit Users", value: "739" }, { label: "Straight Seme", value: "819" }, { label: "Straight Uke", value: "818" }, { label: "Strength-based-social-hierarchy", value: "974" }, { label: "Strong-lead", value: "944" }, { label: "Strong-male-lead", value: "964" }, { label: "Student-teacher-relationship", value: "1026" }, { label: "Suspense", value: "987" }, { label: "Sword-and-sorcery", value: "875" }, { label: "Threesome", value: "574" }, { label: "Transformation Ability", value: "736" }, { label: "Traumatising-content", value: "1040" }, { label: "Underestimated-lead", value: "919" }, { label: "Underestimated-male-lead", value: "966" }, { label: "Unique-abilities", value: "1021" }, { label: "Unique-skill", value: "1022" }, { label: "Unique-skills", value: "1023" }, { label: "Unlimited Flow", value: "1044" }, { label: "Unrequited Love", value: "806" }, { label: "Urban-fantasy", value: "1041" }, { label: "Villainess Noble Girls", value: "719" }, { label: "Weak-lead", value: "885" }, { label: "Web-novel", value: "1024" }, ], type: FilterTypes.ExcludableCheckboxGroup, }, tags: { label: "Жанры", value: { include: [], exclude: [] }, options: [ { label: "Боевые искусства", value: "22" }, { label: "Гарем", value: "114" }, { label: "Гендер бендер", value: "246" }, { label: "Дзёсэй", value: "216" }, { label: "Для взрослых", value: "115" }, { label: "Для взрослых", value: "258" }, { label: "Драма", value: "7" }, { label: "Исторический", value: "101" }, { label: "Комедия", value: "17" }, { label: "Лоликон", value: "638" }, { label: "Магический реализм", value: "922" }, { label: "Меха", value: "24" }, { label: "Милитари", value: "12" }, { label: "Мистика", value: "2" }, { label: "Научная фантастика", value: "13" }, { label: "Непристойность", value: "747" }, { label: "Повседневность", value: "93" }, { label: "Приключение", value: "11" }, { label: "Психология", value: "18" }, { label: "Романтика", value: "9" }, { label: "Сверхъестественное", value: "20" }, { label: "Сёдзё", value: "15" }, { label: "Сёдзё-ай", value: "23" }, { label: "Сёнэн", value: "189" }, { label: "Сёнэн-ай", value: "680" }, { label: "Спорт", value: "420" }, { label: "Сэйнэн", value: "5" }, { label: "Сюаньхуа", value: "242" }, { label: "Сянься", value: "364" }, { label: "Трагедия", value: "19" }, { label: "Триллер", value: "3" }, { label: "Ужасы", value: "1" }, { label: "Уся", value: "720" }, { label: "Фэнтези", value: "8" }, { label: "Школьная жизнь", value: "21" }, { label: "Экшн", value: "14" }, { label: "Эччи", value: "327" }, { label: "Юри", value: "691" }, { label: "Яой", value: "682" }, { label: "Eastern fantasy", value: "907" }, { label: "Isekai", value: "999" }, { label: "Video games", value: "993" }, ], type: FilterTypes.ExcludableCheckboxGroup, }, } satisfies Filters; } export default new RNBH(); interface responseNovels { id: number; names: Names; rating: number; synopsis: string; url: string; poster: Poster; created_at: number; status: string; user?: User; counts: Counts; } interface Names { eng?: string; rus?: string; original: string; } interface Poster { medium: string; small: string; color: string; } interface User { status?: null; liked: boolean; } interface Counts { volumes: string; chapters: string; } interface responseNovel { id: number; names: Names; rating: number; year: number; synopsis: string; url: string; posters: Posters; isSpecial: boolean; liked: boolean; authors?: AuthorsEntity[] | null; translators?: TranslatorsEntity[] | null; description: string; status: Status; start_reading_url: string; html: string; tags: Tags; } interface Posters { big: string; medium: string; small: string; tiny: string; color: string; } interface AuthorsEntity { name_eng: string; pivot: Pivot; } interface Pivot { ranobe_id: number; author_id?: number; translator_id?: number; } interface TranslatorsEntity { name: string; pivot: Pivot; } interface Status { id: number; title: string; } interface Tags { events?: GenresOrEntity[] | null; genres?: GenresOrEntity[] | null; } interface GenresOrEntity { id: number; names: Names; url: string; title: string; description?: string | null; } interface responseChapters { marked_chapters_ids?: null[] | null; volumes?: VolumesEntity[] | null; } interface VolumesEntity { id: number; num: number; name: string; status: Status; chapters?: ChaptersEntity[] | null; } interface Status { id: number; name: string; } interface ChaptersEntity { id: number; name: string; num: number; url: string; is_new: boolean; has_images: boolean; changed_at: string; comments_count: string; } interface responseSearch { meta: Meta; collections?: DataEntity[] | null; data?: DataEntity[] | null; } interface Meta { key: string; title: string; } interface DataEntity { id: number; names?: Names | null; description?: string | null; url: string; image?: string | null; name?: string | null; level?: number | null; evolution_scheme?: null; roles?: null[] | null; avatar?: Avatar | null; has_plus?: boolean | null; } interface Avatar { big: string; color: string; thumb: string; is_default: boolean; }