From be2dab5b5d8ffccecf7cec7ce8a8ded0a0a1d086 Mon Sep 17 00:00:00 2001 From: Rider21 <58046032+Rider21@users.noreply.github.com> Date: Thu, 30 Mar 2023 10:49:00 +0300 Subject: [PATCH] feat: Add New Sources (#583) * fix * Update ranobelib.js * fix * test * fix * fix path * test * added sources * added ALL sources on novel.tl * add tags * Update NovelTlScraper.js * fix --- src/hooks/useSourceStorage.ts | 4 +- .../multisrc/noveltl/NovelTlGenerator.js | 1111 +++ .../multisrc/noveltl/NovelTlScraper.js | 230 + .../multisrc/rulate/RulateGenerator.js | 6340 +++++++++++++++++ src/sources/multisrc/rulate/RulateScraper.js | 282 + src/sources/ru/jaomix.js | 4 +- src/sources/ru/ranobehub.js | 6 +- src/sources/ru/ranobelib.js | 28 +- src/sources/ru/ranoberf.js | 6 +- src/sources/ru/renovels.js | 6 +- src/sources/ru/rulate.js | 1482 ---- src/sources/sourceManager.ts | 36 +- src/sources/sources.json | 105 + src/utils/constants/languages.ts | 2 + 14 files changed, 8135 insertions(+), 1507 deletions(-) create mode 100644 src/sources/multisrc/noveltl/NovelTlGenerator.js create mode 100644 src/sources/multisrc/noveltl/NovelTlScraper.js create mode 100644 src/sources/multisrc/rulate/RulateGenerator.js create mode 100644 src/sources/multisrc/rulate/RulateScraper.js delete mode 100644 src/sources/ru/rulate.js diff --git a/src/hooks/useSourceStorage.ts b/src/hooks/useSourceStorage.ts index b359eacd..dc581f67 100644 --- a/src/hooks/useSourceStorage.ts +++ b/src/hooks/useSourceStorage.ts @@ -1,3 +1,4 @@ +import CookieManager from '@react-native-cookies/cookies'; import { useMMKVObject } from 'react-native-mmkv'; import { MMKVStorage } from '@utils/mmkv/mmkv'; import { showToast } from './showToast'; @@ -38,7 +39,8 @@ const useSourceStorage = ({ sourceId = -1 }: { sourceId?: number }) => { // }), // ); // } - + CookieManager.clearAll(); + CookieManager.clearAll(true); //clears cookies in webkit setValues({}); showToast('Cookies cleared'); }; diff --git a/src/sources/multisrc/noveltl/NovelTlGenerator.js b/src/sources/multisrc/noveltl/NovelTlGenerator.js new file mode 100644 index 00000000..6f0344ef --- /dev/null +++ b/src/sources/multisrc/noveltl/NovelTlGenerator.js @@ -0,0 +1,1111 @@ +import { FilterInputs } from '../../types/filterTypes'; +import MultiSrcScraper from './NovelTlScraper'; + +const RuRanobeScraper = new MultiSrcScraper( + 149, + 'https://ruranobe.ru', + 'РуРанобэ', + [ + { + key: 'tags', + label: 'Тэги', + values: [ + { + label: 'Автоматы', + value: 64, + }, + { + label: 'Агрессивные персонажи', + value: 26, + }, + { + label: 'Ад', + value: 338, + }, + { + label: 'Адаптация манги', + value: 8, + }, + { + label: 'Академия', + value: 5, + }, + { + label: 'Алхимия', + value: 27, + }, + { + label: 'Альтернативная реальность', + value: 30, + }, + { + label: 'Амнезия', + value: 31, + }, + { + label: 'Анабиоз', + value: 170, + }, + { + label: 'Ангелы', + value: 38, + }, + { + label: 'Андроиды', + value: 37, + }, + { + label: 'Антигерой', + value: 43, + }, + { + label: 'Антимагия', + value: 41, + }, + { + label: 'Апатичный главный герой', + value: 46, + }, + { + label: 'Апокалипсис', + value: 47, + }, + { + label: 'Аристократия', + value: 51, + }, + { + label: 'Артефакты', + value: 58, + }, + { + label: 'Асоциальный главный герой', + value: 42, + }, + { + label: 'R-15', + value: 570, + }, + { + label: 'R-18', + value: 571, + }, + ], + inputType: FilterInputs.Checkbox, + }, + ], +); + +const UkrRanobeScraper = new MultiSrcScraper( + 150, + 'https://ukr.novel.tl', + 'Переклади українською мовою', + [ + { + key: 'tags', + label: 'Тэги', + values: [ + { + label: 'Альтернативная реальность', + value: 30, + }, + { + label: 'Апатичный главный герой', + value: 46, + }, + { + label: 'Асоциальный главный герой', + value: 42, + }, + { + label: 'Владелец уникального оружия', + value: 736, + }, + { + label: 'Гарем рабов', + value: 656, + }, + { + label: 'Герои', + value: 341, + }, + { + label: 'Героиня красавица', + value: 81, + }, + { + label: 'Герой использует щит', + value: 636, + }, + { + label: 'Герой-трудяга', + value: 330, + }, + { + label: 'Главный герой — мужчина', + value: 419, + }, + { + label: 'Глухой к любви герой', + value: 194, + }, + { + label: 'Демоны', + value: 193, + }, + { + label: 'Друзья детства', + value: 128, + }, + { + label: 'Есть аниме-адаптация', + value: 10, + }, + { + label: 'Есть манга-адаптация', + value: 14, + }, + { + label: 'Есть CD дорама-адаптация', + value: 12, + }, + { + label: 'Зверолюди', + value: 39, + }, + { + label: 'Магия', + value: 412, + }, + { + label: 'Магия призыва', + value: 694, + }, + { + label: 'От слабого к сильному', + value: 752, + }, + ], + inputType: FilterInputs.Checkbox, + }, + ], +); + +const NightnovelScraper = new MultiSrcScraper( + 151, + 'https://nightnovel.online', + 'Nightnovel', + [ + { + key: 'tags', + label: 'Тэги', + values: [ + { + label: 'Альтернативная реальность', + value: 30, + }, + { + label: 'Амнезия', + value: 31, + }, + { + label: 'Анал', + value: 33, + }, + { + label: 'Ангелы', + value: 38, + }, + { + label: 'Аристократия', + value: 51, + }, + { + label: 'Артефакты', + value: 58, + }, + { + label: 'Ассасины', + value: 61, + }, + { + label: 'Банды', + value: 302, + }, + { + label: 'БДСМ', + value: 77, + }, + { + label: 'Беременность', + value: 551, + }, + { + label: 'Боги', + value: 318, + }, + { + label: 'Богини', + value: 316, + }, + { + label: 'Боевая академия', + value: 75, + }, + { + label: 'Божественная сила', + value: 317, + }, + { + label: 'Влияние прошлого', + value: 517, + }, + { + label: 'Враги становятся союзниками', + value: 238, + }, + { + label: 'Вынужденные условия проживания', + value: 287, + }, + { + label: 'Герои', + value: 341, + }, + { + label: 'Героиня красавица', + value: 81, + }, + { + label: 'R-18', + value: 571, + }, + ], + inputType: FilterInputs.Checkbox, + }, + ], +); + +const KgRanobeScraper = new MultiSrcScraper( + 152, + 'https://kg.novel.tl', + 'Карманная галактика', + [ + { + key: 'tags', + label: 'Тэги', + values: [ + { + label: 'Алхимия', + value: 27, + }, + { + label: 'Андроиды', + value: 37, + }, + { + label: 'Анти-рост персонажа', + value: 25, + }, + { + label: 'Антигерой', + value: 43, + }, + { + label: 'Апатичный главный герой', + value: 46, + }, + { + label: 'Аристократия', + value: 51, + }, + { + label: 'Асоциальный главный герой', + value: 42, + }, + { + label: 'Ассасины', + value: 61, + }, + { + label: 'Беззаботный герой', + value: 115, + }, + { + label: 'Безработные', + value: 377, + }, + { + label: 'Бессмертные', + value: 359, + }, + { + label: 'Библиотека', + value: 393, + }, + { + label: 'Боги', + value: 318, + }, + { + label: 'Боевая академия', + value: 75, + }, + { + label: 'Бывший герой', + value: 290, + }, + { + label: 'Ведьмы', + value: 756, + }, + { + label: 'Везучий главный герой', + value: 411, + }, + { + label: 'Верные подданные', + value: 410, + }, + { + label: 'Взросление персонажа', + value: 24, + }, + { + label: 'R-15', + value: 570, + }, + ], + inputType: FilterInputs.Checkbox, + }, + ], +); + +const AxelScraper = new MultiSrcScraper( + 153, + 'https://axel.znovel.space', + 'Аксел', + [ + { + key: 'tags', + label: 'Тэги', + values: [ + { + label: 'Богини', + value: 316, + }, + { + label: 'Везучий главный герой', + value: 411, + }, + { + label: 'Виртуальная реальность', + value: 744, + }, + { + label: 'Высокомерный герой', + value: 56, + }, + { + label: 'Герой-извращенец', + value: 521, + }, + { + label: 'Главная героиня — женщина', + value: 277, + }, + { + label: 'Главный герой — мужчина', + value: 419, + }, + { + label: 'Дворяне', + value: 487, + }, + { + label: 'Девочки-волшебницы', + value: 415, + }, + { + label: 'Демоны', + value: 193, + }, + { + label: 'Дружба', + value: 293, + }, + { + label: 'Есть аниме-адаптация', + value: 10, + }, + { + label: 'Есть видеоигра', + value: 13, + }, + { + label: 'Есть манга-адаптация', + value: 14, + }, + { + label: 'Игра на выживание', + value: 696, + }, + { + label: 'Из грязи в князи', + value: 542, + }, + { + label: 'Королевская особа', + value: 596, + }, + { + label: 'Ленивый главный герой', + value: 389, + }, + { + label: 'Маги', + value: 757, + }, + { + label: 'Магические технологии', + value: 417, + }, + ], + inputType: FilterInputs.Checkbox, + }, + ], +); + +const SferdrakonScraper = new MultiSrcScraper( + 154, + 'https://sferdrakon.novel.tl', + 'Уголок дракона', + [ + { + key: 'tags', + label: 'Тэги', + values: [ + { + label: 'Главный герой — мужчина', + value: 419, + }, + { + label: 'Демоны', + value: 193, + }, + { + label: 'Драконы', + value: 218, + }, + { + label: 'Есть аниме-адаптация', + value: 10, + }, + { + label: 'Есть видеоигра', + value: 13, + }, + { + label: 'Есть манга-адаптация', + value: 14, + }, + { + label: 'Звероподобные', + value: 79, + }, + { + label: 'Изнасилование', + value: 574, + }, + { + label: 'Королевская особа', + value: 596, + }, + { + label: 'Магия', + value: 412, + }, + { + label: 'Магия призыва', + value: 694, + }, + { + label: 'Наездники на драконах', + value: 216, + }, + { + label: 'Рыцари', + value: 383, + }, + { + label: 'Цундере', + value: 728, + }, + { + label: 'Эльфы', + value: 235, + }, + ], + inputType: FilterInputs.Checkbox, + }, + ], +); + +const OriginalScraper = new MultiSrcScraper( + 155, + 'Авторские работы', + 'https://original.novel.tl', + [ + { + key: 'tags', + label: 'Тэги', + values: [ + { + label: 'Агрессивные персонажи', + value: 26, + }, + { + label: 'Академия', + value: 5, + }, + { + label: 'Андроиды', + value: 37, + }, + { + label: 'Антимагия', + value: 41, + }, + { + label: 'Аристократия', + value: 51, + }, + { + label: 'Артефакты', + value: 58, + }, + { + label: 'Брошенные дети', + value: 1, + }, + { + label: 'Вероломные герои/плетение интриг', + value: 424, + }, + { + label: 'Взросление персонажа', + value: 24, + }, + { + label: 'Владелец уникального оружия', + value: 736, + }, + { + label: 'Герой-извращенец', + value: 521, + }, + { + label: 'Главный герой не человек', + value: 488, + }, + { + label: 'Государственные интриги', + value: 212, + }, + { + label: 'Душещипательная история', + value: 335, + }, + { + label: 'Жестокие персонажи', + value: 4, + }, + { + label: 'Зверолюди', + value: 39, + }, + { + label: 'Знания из прошлой жизни', + value: 553, + }, + { + label: 'Искусственный интеллект', + value: 59, + }, + { + label: 'Конфликт в семье', + value: 261, + }, + { + label: 'Королевства', + value: 382, + }, + ], + inputType: FilterInputs.Checkbox, + }, + ], +); + +const SnailulitkaScraper = new MultiSrcScraper( + 156, + 'https://snailulitka.novel.tl', + 'Snailulitka', + [ + { + key: 'tags', + label: 'Тэги', + values: [ + { + label: 'Алхимия', + value: 27, + }, + { + label: 'Ассасины', + value: 61, + }, + { + label: 'Бедный главный герой', + value: 541, + }, + { + label: 'Богачи', + value: 753, + }, + { + label: 'Виртуальная реальность', + value: 744, + }, + { + label: 'Война', + value: 750, + }, + { + label: 'Геймеры', + value: 301, + }, + { + label: 'Героиня красавица', + value: 81, + }, + { + label: 'Герой красавец', + value: 329, + }, + { + label: 'Гильдии', + value: 324, + }, + { + label: 'Главный герой - гений', + value: 308, + }, + { + label: 'Главный герой — знаменитость', + value: 263, + }, + { + label: 'Главный герой — мужчина', + value: 419, + }, + { + label: 'Дворфы', + value: 224, + }, + { + label: 'Драконы', + value: 218, + }, + { + label: 'Есть маньхуа-адаптация', + value: 15, + }, + { + label: 'Игровая рейтинговая система', + value: 300, + }, + { + label: 'Книги навыков', + value: 654, + }, + { + label: 'Лекари', + value: 334, + }, + { + label: 'Месть', + value: 588, + }, + ], + inputType: FilterInputs.Checkbox, + }, + ], +); + +const TsundokuScraper = new MultiSrcScraper( + 157, + 'https://tsundoku.novel.tl', + 'TsundokuTrans', + [ + { + key: 'tags', + label: 'Тэги', + values: [ + { + label: 'Боги', + value: 318, + }, + { + label: 'Боевая академия', + value: 75, + }, + { + label: 'Вампиры', + value: 742, + }, + { + label: 'Влияние прошлого', + value: 517, + }, + { + label: 'Война', + value: 750, + }, + { + label: 'Главная героиня — женщина', + value: 277, + }, + { + label: 'Главный герой — мужчина', + value: 419, + }, + { + label: 'Демоны', + value: 193, + }, + { + label: 'Драконы', + value: 218, + }, + { + label: 'Королевская особа', + value: 596, + }, + { + label: 'Коррупция', + value: 157, + }, + { + label: 'Магия', + value: 412, + }, + { + label: 'Мастер подземелий', + value: 222, + }, + { + label: 'Мечи и магия', + value: 697, + }, + { + label: 'Мечники', + value: 698, + }, + { + label: 'Монстры', + value: 454, + }, + { + label: 'Недооцененный главный герой', + value: 734, + }, + { + label: 'От слабого к сильному', + value: 752, + }, + { + label: 'R-15', + value: 570, + }, + { + label: 'R-18', + value: 571, + }, + ], + inputType: FilterInputs.Checkbox, + }, + ], +); + +const JapitScraper = new MultiSrcScraper( + 158, + 'https://japit.novel.tl', + 'Japit Comics', + [ + { + key: 'tags', + label: 'Тэги', + values: [ + { + label: 'Академия', + value: 5, + }, + { + label: 'Андроиды', + value: 37, + }, + { + label: 'Беззаботный герой', + value: 115, + }, + { + label: 'Боги', + value: 318, + }, + { + label: 'Богини', + value: 316, + }, + { + label: 'Вампиры', + value: 742, + }, + { + label: 'Везучий главный герой', + value: 411, + }, + { + label: 'Влияние прошлого', + value: 517, + }, + { + label: 'Внезапное обогащение', + value: 691, + }, + { + label: 'Военные хроники', + value: 749, + }, + { + label: 'Война', + value: 750, + }, + { + label: 'Воспоминания прошлого', + value: 283, + }, + { + label: 'Герои', + value: 341, + }, + { + label: 'Героиня красавица', + value: 81, + }, + { + label: 'Герой влюбляется первым', + value: 561, + }, + { + label: 'Герой красавец', + value: 329, + }, + { + label: 'Герой-бесстыдник', + value: 632, + }, + { + label: 'Герой-извращенец', + value: 521, + }, + { + label: 'Герой-трудяга', + value: 330, + }, + { + label: 'R-15', + value: 570, + }, + ], + inputType: FilterInputs.Checkbox, + }, + ], +); + +const BelScraper = new MultiSrcScraper(159, 'https://bel.novel.tl', 'Белманга'); + +const RedScraper = new MultiSrcScraper( + 160, + 'https://red.novel.tl', + 'Север и Юг', + [ + { + key: 'tags', + label: 'Тэги', + values: [ + { + label: 'Героиня красавица', + value: 81, + }, + { + label: 'Герой влюбляется первым', + value: 561, + }, + { + label: 'Главный герой — мужчина', + value: 419, + }, + { + label: 'Дружба', + value: 293, + }, + { + label: 'Жизнь в одиночку', + value: 396, + }, + { + label: 'Сложные семейные отношения', + value: 149, + }, + ], + inputType: FilterInputs.Checkbox, + }, + ], +); + +const SiScraper = new MultiSrcScraper( + 161, + 'https://si.novel.tl', + 'Сказочные истории', + [ + { + key: 'tags', + label: 'Тэги', + values: [ + { + label: 'Аристократия', + value: 51, + }, + { + label: 'Война', + value: 750, + }, + { + label: 'Главная героиня — женщина', + value: 277, + }, + { + label: 'Драконы', + value: 218, + }, + { + label: 'Древний Китай', + value: 34, + }, + { + label: 'Жестокие персонажи', + value: 4, + }, + { + label: 'Злобные благородные девы', + value: 743, + }, + { + label: 'Комедийный подтекст', + value: 147, + }, + { + label: 'Культивация', + value: 171, + }, + { + label: 'Магия', + value: 412, + }, + { + label: 'Отомэ-игры', + value: 504, + }, + { + label: 'Перерождение в другом мире', + value: 580, + }, + { + label: 'Перерождение в другом мире', + value: 720, + }, + { + label: 'Повелитель демонов', + value: 191, + }, + { + label: 'Попаданец в другой мир', + value: 723, + }, + { + label: 'Смерть', + value: 185, + }, + { + label: 'Средневековье', + value: 436, + }, + { + label: 'Фэнтези', + value: 267, + }, + { + label: 'Харизматичный протагонист', + value: 120, + }, + { + label: 'Хитрый главный герой', + value: 173, + }, + ], + inputType: FilterInputs.Checkbox, + }, + ], +); + +const KodScraper = new MultiSrcScraper(162, 'https://kod.novel.tl', 'K.O.D.', [ + { + key: 'tags', + label: 'Тэги', + values: [ + { + label: 'Актёрское искусство', + value: 7, + }, + { + label: 'Забота о детях', + value: 127, + }, + { + label: 'Управление бизнесом', + value: 109, + }, + { + label: 'Шоу-бизнес', + value: 642, + }, + ], + inputType: FilterInputs.Checkbox, + }, +]); + +export { + RuRanobeScraper, + UkrRanobeScraper, + NightnovelScraper, + KgRanobeScraper, + AxelScraper, + SferdrakonScraper, + OriginalScraper, + SnailulitkaScraper, + TsundokuScraper, + JapitScraper, + BelScraper, + RedScraper, + SiScraper, + KodScraper, +}; diff --git a/src/sources/multisrc/noveltl/NovelTlScraper.js b/src/sources/multisrc/noveltl/NovelTlScraper.js new file mode 100644 index 00000000..4f664d27 --- /dev/null +++ b/src/sources/multisrc/noveltl/NovelTlScraper.js @@ -0,0 +1,230 @@ +import dayjs from 'dayjs'; +import * as cheerio from 'cheerio'; +import { htmlToText } from '../../helpers/htmlToText'; +import { Status, defaultCoverUri } from '../../helpers/constants'; + +class NovelTlScraper { + constructor(sourceId, baseUrl, sourceName, filter) { + this.sourceId = sourceId; + this.baseUrl = baseUrl; + this.domain = baseUrl.split('//')[1]; + this.sourceName = sourceName; + + this.filters = filter || null; + } + + async popularNovels(page, { filters }) { + const result = await fetch('https://api.novel.tl/api/site/v2/graphql', { + method: 'post', + headers: { + 'User-Agent': + 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/111.0', + 'Accept': 'application/json, text/plain, */*', + 'Accept-Language': 'ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3', + 'Content-Type': 'application/json', + 'Alt-Used': 'api.novel.tl', + 'Sec-Fetch-Dest': 'empty', + 'Sec-Fetch-Mode': 'cors', + 'Sec-Fetch-Site': 'cross-site', + }, + referrer: this.baseUrl, + body: JSON.stringify({ + operationName: 'Projects', + query: + 'query Projects($hostname:String! $filter:SearchFilter $page:Int $limit:Int){projects(section:{fullUrl:$hostname}filter:$filter page:{pageSize:$limit,pageNumber:$page}){content{title url covers{url}}}}', + variables: { + filter: filters?.tags?.length > 0 ? { tags: filters.tags } : {}, + hostname: this.domain, + limit: 40, + page, + }, + }), + }); + + const json = await result.json(); + let novels = json?.data?.projects?.content?.map(novel => ({ + novelName: novel.title, + novelUrl: novel.url, + sourceId: this.sourceId, + novelCover: novel.covers[0]?.url + ? this.baseUrl + novel.covers[0].url + : defaultCoverUri, + })); + + return { novels }; + } + + async parseNovelAndChapters(novelUrl) { + const result = await fetch('https://api.novel.tl/api/site/v2/graphql', { + method: 'post', + headers: { + 'User-Agent': + 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/111.0', + 'Accept': 'application/json, text/plain, */*', + 'Accept-Language': 'ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3', + 'Content-Type': 'application/json', + 'Alt-Used': 'api.novel.tl', + 'Sec-Fetch-Dest': 'empty', + 'Sec-Fetch-Mode': 'cors', + 'Sec-Fetch-Site': 'cross-site', + }, + referrer: this.baseUrl, + body: JSON.stringify({ + operationName: 'Book', + query: + 'query Book($url:String){project(project:{fullUrl:$url}){title translationStatus url covers{url}persons(langs:["ru","en","*"]roles:["author","illustrator","original_story","original_design"]){role name{firstName lastName}}genres{nameRu nameEng}tags{nameRu nameEng}annotation{text}subprojects{content{title volumes{content{url shortName chapters{title publishDate url published}}}}}}}', + variables: { + hostname: this.domain, + project: novelUrl, + url: this.domain + '/r/' + novelUrl, + }, + }), + }); + const json = await result.json(); + + let novel = { + sourceId: this.sourceId, + sourceName: this.sourceName, + url: this.baseUrl + '/r/' + novelUrl, + novelUrl, + novelName: json.data.project.title, + novelCover: json.data.project.covers[0]?.url + ? this.baseUrl + json.data.project.covers[0].url + : defaultCoverUri, + summary: htmlToText(json.data.project.annotation?.text), + author: + json.data.project.persons[0].name.firstName + + ' ' + + json.data.project.persons[0].name.lastName, + status: + json.data.project.translationStatus === 'active' + ? Status.ONGOING + : Status.COMPLETED, + }; + + let genres = [] + .concat(json.data.project.tags, json.data.project.genres) + .map(item => item?.nameRu || item?.nameEng) + .filter(item => item); + + if (genres.length > 0) { + novel.genre = genres.join(','); + } + + let novelChapters = []; + json.data.project.subprojects.content.forEach(work => + work.volumes.content.forEach(volume => + volume.chapters.forEach( + chapter => + chapter?.published && + novelChapters.push({ + chapterName: volume.shortName + ' ' + chapter.title, + chapterUrl: volume.url + '/' + chapter.url, + releaseDate: dayjs(chapter.publishDate).format('LLL'), + }), + ), + ), + ); + + novel.chapters = novelChapters; + return novel; + } + + async parseChapter(novelUrl, chapterUrl) { + const baseUrl = this.baseUrl; + const sourceId = this.sourceId; + const result = await fetch('https://api.novel.tl/api/site/v2/graphql', { + method: 'post', + headers: { + 'User-Agent': + 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/111.0', + 'Accept': 'application/json, text/plain, */*', + 'Accept-Language': 'ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3', + 'Content-Type': 'application/json', + 'Alt-Used': 'api.novel.tl', + 'Sec-Fetch-Dest': 'empty', + 'Sec-Fetch-Mode': 'cors', + 'Sec-Fetch-Site': 'cross-site', + }, + referrer: baseUrl, + body: JSON.stringify({ + operationName: 'EReaderData', + query: + 'query EReaderData($url:String!,$chapterSelector:Selector!){project(project:{fullUrl:$url}){title url}chapter(chapter:$chapterSelector){title text{text}}}', + variables: { + chapterSelector: { + fullUrl: this.domain + '/r/' + novelUrl + '/' + chapterUrl, + }, + url: this.domain + '/r/' + novelUrl + '/' + chapterUrl, + }, + }), + }); + const json = await result.json(); + + const loadedCheerio = cheerio.load(json.data.chapter.text.text); + loadedCheerio('img').each(function () { + if (!loadedCheerio(this).attr('src')?.startsWith('http')) { + let src = loadedCheerio(this).attr('src'); + loadedCheerio(this).attr('src', baseUrl + src); + } + }); + + const chapter = { + sourceId, + novelUrl, + chapterUrl, + chapterName: json.data.chapter.title, + chapterText: loadedCheerio.html(), + }; + + return chapter; + } + + async searchNovels(searchTerm) { + const result = await fetch('https://api.novel.tl/api/site/v2/graphql', { + method: 'post', + headers: { + 'User-Agent': + 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/111.0', + 'Accept': 'application/json, text/plain, */*', + 'Accept-Language': 'ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3', + 'Content-Type': 'application/json', + 'Alt-Used': 'api.novel.tl', + 'Sec-Fetch-Dest': 'empty', + 'Sec-Fetch-Mode': 'cors', + 'Sec-Fetch-Site': 'cross-site', + }, + referrer: this.baseUrl, + body: JSON.stringify({ + operationName: 'Projects', + query: + 'query Projects($hostname:String! $filter:SearchFilter $page:Int $limit:Int){projects(section:{fullUrl:$hostname}filter:$filter page:{pageSize:$limit,pageNumber:$page}){content{title url covers{url}}}}', + variables: { + filter: { + query: searchTerm, + }, + hostname: this.domain, + limit: 40, + page: 1, + }, + }), + }); + const json = await result.json(); + + let novels = []; + json?.data?.projects?.content?.forEach(novel => + novels.push({ + novelName: novel.title, + novelUrl: novel.url, + sourceId: this.sourceId, + novelCover: novel.covers[0]?.url + ? this.baseUrl + novel.covers[0].url + : defaultCoverUri, + }), + ); + + return novels; + } +} + +export default NovelTlScraper; diff --git a/src/sources/multisrc/rulate/RulateGenerator.js b/src/sources/multisrc/rulate/RulateGenerator.js new file mode 100644 index 00000000..6c44562e --- /dev/null +++ b/src/sources/multisrc/rulate/RulateGenerator.js @@ -0,0 +1,6340 @@ +import { FilterInputs } from '../../types/filterTypes'; +import MultiSrcScraper from './RulateScraper'; + +const RulateScraper = new MultiSrcScraper( + 118, + 'https://tl.rulate.ru', + 'Rulate', + [ + { + key: 'genres', + label: 'Жанры', + values: [ + { + 'label': 'Арт', + 'value': '1', + }, + { + 'label': 'Боевик', + 'value': '2', + }, + { + 'label': 'Боевые искусства', + 'value': '3', + }, + { + 'label': 'Гарем', + 'value': '5', + }, + { + 'label': 'Героическое фэнтези', + 'value': '7', + }, + { + 'label': 'Детектив', + 'value': '8', + }, + { + 'label': 'Дзёсэй', + 'value': '9', + }, + { + 'label': 'Додзинси', + 'value': '10', + }, + { + 'label': 'Драма', + 'value': '11', + }, + { + 'label': 'История', + 'value': '13', + }, + { + 'label': 'Киберпанк', + 'value': '46', + }, + { + 'label': 'Кодомо', + 'value': '14', + }, + { + 'label': 'Комедия', + 'value': '15', + }, + { + 'label': 'Литрпг', + 'value': '48', + }, + { + 'label': 'Махо-сёдзё', + 'value': '16', + }, + { + 'label': 'Мелодрама', + 'value': '49', + }, + { + 'label': 'Меха', + 'value': '17', + }, + { + 'label': 'Мистика', + 'value': '18', + }, + { + 'label': 'Научная фантастика', + 'value': '19', + }, + { + 'label': 'Повседневность', + 'value': '20', + }, + { + 'label': 'Постапокалиптика', + 'value': '21', + }, + { + 'label': 'Приключения', + 'value': '22', + }, + { + 'label': 'Психология', + 'value': '23', + }, + { + 'label': 'Романтика', + 'value': '24', + }, + { + 'label': 'Самурайский боевик', + 'value': '25', + }, + { + 'label': 'Сверхъестественное', + 'value': '26', + }, + { + 'label': 'Сёдзё', + 'value': '27', + }, + { + 'label': 'Сёнэн', + 'value': '29', + }, + { + 'label': 'Смат', + 'value': '45', + }, + { + 'label': 'Спорт', + 'value': '31', + }, + { + 'label': 'Сэйнэн', + 'value': '32', + }, + { + 'label': 'Сюаньхуа', + 'value': '44', + }, + { + 'label': 'Сюаньхуань', + 'value': '47', + }, + { + 'label': 'Сянься (XianXia)', + 'value': '42', + }, + { + 'label': 'Трагедия', + 'value': '33', + }, + { + 'label': 'Триллер', + 'value': '34', + }, + { + 'label': 'Ужасы', + 'value': '35', + }, + { + 'label': 'Уся (wuxia)', + 'value': '41', + }, + { + 'label': 'Фантастика', + 'value': '36', + }, + { + 'label': 'Фанфик', + 'value': '50', + }, + { + 'label': 'Фэнтези', + 'value': '37', + }, + { + 'label': 'Школа', + 'value': '38', + }, + { + 'label': 'Этти', + 'value': '39', + }, + { + 'label': 'Bl', + 'value': '43', + }, + { + 'label': 'Gl', + 'value': '40', + }, + { + 'label': '18+', + 'value': '52', + }, + ], + inputType: FilterInputs.Checkbox, + }, + { + key: 'tags', + label: 'Тэги', + values: [ + { + 'label': 'Абсурд', + 'value': '7973', + }, + { + 'label': 'Авантюристы', + 'value': '222', + }, + { + 'label': 'Автомат', + 'value': '5272', + }, + { + 'label': 'Авторский мир', + 'value': '1062', + }, + { + 'label': 'Агрессивные персонажи', + 'value': '3249', + }, + { + 'label': 'Ад', + 'value': '2623', + }, + { + 'label': 'Ад и рай', + 'value': '817', + }, + { + 'label': 'Адам дженсен', + 'value': '1649', + }, + { + 'label': 'Адаптация произведения', + 'value': '192', + }, + { + 'label': 'Адвокат', + 'value': '6340', + }, + { + 'label': 'Адекватные главные герои', + 'value': '1953', + }, + { + 'label': 'Азартные игры', + 'value': '5301', + }, + { + 'label': 'Азгард', + 'value': '3494', + }, + { + 'label': 'Азула', + 'value': '5550', + }, + { + 'label': 'Аид', + 'value': '7641', + }, + { + 'label': 'Айдолы', + 'value': '4081', + }, + { + 'label': 'Академия', + 'value': '316', + }, + { + 'label': 'Акамэ', + 'value': '5059', + }, + { + 'label': 'Аквакинез', + 'value': '5952', + }, + { + 'label': 'Акира', + 'value': '2639', + }, + { + 'label': 'Акнология', + 'value': '4634', + }, + { + 'label': 'Актерское мастерство', + 'value': '4798', + }, + { + 'label': 'Актёры', + 'value': '7506', + }, + { + 'label': 'Активные герои', + 'value': '6376', + }, + { + 'label': 'Акутагава рюноске', + 'value': '4113', + }, + { + 'label': 'Аладдин', + 'value': '6489', + }, + { + 'label': 'Алая ведьма', + 'value': '4767', + }, + { + 'label': 'Алиса', + 'value': '4761', + }, + { + 'label': 'Алкоголь', + 'value': '5508', + }, + { + 'label': 'Аллегория', + 'value': '271', + }, + { + 'label': 'Алукард', + 'value': '4914', + }, + { + 'label': 'Алхимики', + 'value': '1164', + }, + { + 'label': 'Алхимия', + 'value': '1473', + }, + { + 'label': 'Алчность', + 'value': '6897', + }, + { + 'label': 'Альбус дамблдор', + 'value': '5784', + }, + { + 'label': 'Альтернативное развитие событий', + 'value': '5330', + }, + { + 'label': 'Альянсы', + 'value': '328', + }, + { + 'label': 'Амбициозный главный герой', + 'value': '3751', + }, + { + 'label': 'Америка', + 'value': '4082', + }, + { + 'label': 'Амнезия', + 'value': '2207', + }, + { + 'label': 'Аморальный герой', + 'value': '18', + }, + { + 'label': 'Анальный секс', + 'value': '1942', + }, + { + 'label': 'Анбу', + 'value': '8129', + }, + { + 'label': 'Ангелы', + 'value': '857', + }, + { + 'label': 'Ангелы и демоны', + 'value': '1327', + }, + { + 'label': 'Ангст', + 'value': '4638', + }, + { + 'label': 'Андроиды', + 'value': '1993', + }, + { + 'label': 'Анимализм', + 'value': '5249', + }, + { + 'label': 'Аниме', + 'value': '1294', + }, + { + 'label': 'Анко митараши', + 'value': '5768', + }, + { + 'label': 'Антагонист', + 'value': '2144', + }, + { + 'label': 'Антигерой', + 'value': '7725', + }, + { + 'label': 'Антиквариат', + 'value': '3552', + }, + { + 'label': 'Антимаг', + 'value': '1348', + }, + { + 'label': 'Антиутопия', + 'value': '662', + }, + { + 'label': 'Апокалипсис', + 'value': '1498', + }, + { + 'label': 'Аристократия', + 'value': '371', + }, + { + 'label': 'Аристократы', + 'value': '7338', + }, + { + 'label': 'Армия', + 'value': '1723', + }, + { + 'label': 'Артас', + 'value': '6700', + }, + { + 'label': 'Артефакты', + 'value': '2296', + }, + { + 'label': 'Археология', + 'value': '6523', + }, + { + 'label': 'Асгард', + 'value': '3635', + }, + { + 'label': 'Ассасин', + 'value': '1415', + }, + { + 'label': 'Асуна', + 'value': '5044', + }, + { + 'label': 'Аугментации', + 'value': '7751', + }, + { + 'label': 'Ацуши накаджима', + 'value': '4109', + }, + { + 'label': 'Аянокоджи киетака', + 'value': '6862', + }, + { + 'label': 'Бандиты', + 'value': '2188', + }, + { + 'label': 'Басейн', + 'value': '6847', + }, + { + 'label': 'Баскетбол', + 'value': '7933', + }, + { + 'label': 'Бастарды', + 'value': '76', + }, + { + 'label': 'Бдсм', + 'value': '444', + }, + { + 'label': 'Бедность', + 'value': '1207', + }, + { + 'label': 'Без культивации', + 'value': '668', + }, + { + 'label': 'Без любовной линий', + 'value': '2225', + }, + { + 'label': 'Без перерождений', + 'value': '262', + }, + { + 'label': 'Без попаданца', + 'value': '8065', + }, + { + 'label': 'Без системы', + 'value': '747', + }, + { + 'label': 'Без цензуры', + 'value': '7525', + }, + { + 'label': 'Без юмора', + 'value': '763', + }, + { + 'label': 'Бездна', + 'value': '1026', + }, + { + 'label': 'Безжалостное домашнее животное', + 'value': '1245', + }, + { + 'label': 'Безжалостные персонажи', + 'value': '2986', + }, + { + 'label': 'Беззаботные персонажи ', + 'value': '3123', + }, + { + 'label': 'Безответная любовь', + 'value': '7815', + }, + { + 'label': 'Безработный', + 'value': '2202', + }, + { + 'label': 'Безумие', + 'value': '37', + }, + { + 'label': 'Безумные персонажи', + 'value': '2049', + }, + { + 'label': 'Бейсбол', + 'value': '7623', + }, + { + 'label': 'Беременность', + 'value': '2122', + }, + { + 'label': 'Бесконечный поток', + 'value': '7556', + }, + { + 'label': 'Беспечные персонажи', + 'value': '742', + }, + { + 'label': 'Бесплатно', + 'value': '8403', + }, + { + 'label': 'Бессмертные персонажи', + 'value': '566', + }, + { + 'label': 'Бесстрашные персонажи', + 'value': '6921', + }, + { + 'label': 'Бесстыдные персонажи', + 'value': '1257', + }, + { + 'label': 'Бесстыдный главный герой', + 'value': '8190', + }, + { + 'label': 'Библиотека', + 'value': '4210', + }, + { + 'label': 'Библия', + 'value': '488', + }, + { + 'label': 'Бизнес', + 'value': '704', + }, + { + 'label': 'Биология', + 'value': '2220', + }, + { + 'label': 'Биомехи', + 'value': '1968', + }, + { + 'label': 'Биседзе', + 'value': '777', + }, + { + 'label': 'Битва за веру', + 'value': '721', + }, + { + 'label': 'Битва за трон', + 'value': '7211', + }, + { + 'label': 'Битва королевств', + 'value': '1151', + }, + { + 'label': 'Битва рас', + 'value': '6989', + }, + { + 'label': 'Битвы', + 'value': '1740', + }, + { + 'label': 'Благородные персонажи', + 'value': '2201', + }, + { + 'label': 'Близнецы', + 'value': '2931', + }, + { + 'label': 'Богатство', + 'value': '6522', + }, + { + 'label': 'Богатые персонажи', + 'value': '520', + }, + { + 'label': 'Боги', + 'value': '173', + }, + { + 'label': 'Богини', + 'value': '30', + }, + { + 'label': 'Богиня', + 'value': '8324', + }, + { + 'label': 'Богоубийца', + 'value': '1253', + }, + { + 'label': 'Богохульство', + 'value': '95', + }, + { + 'label': 'Боевая академия', + 'value': '2108', + }, + { + 'label': 'Боевик', + 'value': '529', + }, + { + 'label': 'Боевые искусства', + 'value': '2090', + }, + { + 'label': 'Большая грудь', + 'value': '4717', + }, + { + 'label': 'Большой член', + 'value': '5299', + }, + { + 'label': 'Борос', + 'value': '6533', + }, + { + 'label': 'Борьба', + 'value': '1925', + }, + { + 'label': 'Борьба за власть', + 'value': '8072', + }, + { + 'label': 'Босс и подчиненный', + 'value': '7157', + }, + { + 'label': 'Бояръ', + 'value': '2307', + }, + { + 'label': 'Брак', + 'value': '1558', + }, + { + 'label': 'Брак по расчету', + 'value': '1389', + }, + { + 'label': 'Брат и сестра', + 'value': '615', + }, + { + 'label': 'Братский комплекс', + 'value': '2321', + }, + { + 'label': 'Броманс', + 'value': '1103', + }, + { + 'label': 'Брошенные дети', + 'value': '2846', + }, + { + 'label': 'Буддизм', + 'value': '1871', + }, + { + 'label': 'Будущее', + 'value': '1820', + }, + { + 'label': 'Бывший муж', + 'value': '8080', + }, + { + 'label': 'Быстрое развитие', + 'value': '1443', + }, + { + 'label': 'Бэтгерл', + 'value': '2584', + }, + { + 'label': 'Бэтмен', + 'value': '4668', + }, + { + 'label': 'В первый раз', + 'value': '6212', + }, + { + 'label': 'В этот же мир', + 'value': '49', + }, + { + 'label': 'Вагинальный секс', + 'value': '4742', + }, + { + 'label': 'Ваканда', + 'value': '8331', + }, + { + 'label': 'Валькирии', + 'value': '4047', + }, + { + 'label': 'Вампиры', + 'value': '2206', + }, + { + 'label': 'Веб камера', + 'value': '5664', + }, + { + 'label': 'Веб новелла', + 'value': '2349', + }, + { + 'label': 'Ведьмак', + 'value': '843', + }, + { + 'label': 'Ведьмы', + 'value': '643', + }, + { + 'label': 'Везучие персонажи', + 'value': '1879', + }, + { + 'label': 'Веном', + 'value': '3994', + }, + { + 'label': 'Вестерн', + 'value': '2131', + }, + { + 'label': 'Вестерос', + 'value': '8171', + }, + { + 'label': 'Взросление', + 'value': '624', + }, + { + 'label': 'Взрослый главный герой', + 'value': '2416', + }, + { + 'label': 'Видео игры', + 'value': '2630', + }, + { + 'label': 'Викинги', + 'value': '267', + }, + { + 'label': 'Вино', + 'value': '6972', + }, + { + 'label': 'Вирт', + 'value': '6213', + }, + { + 'label': 'Виртуальная реальность', + 'value': '325', + }, + { + 'label': 'Вирусы', + 'value': '3327', + }, + { + 'label': 'Владыка демонов', + 'value': '555', + }, + { + 'label': 'Власть', + 'value': '756', + }, + { + 'label': 'Влюбленность', + 'value': '6132', + }, + { + 'label': 'Внешний вид отличается от личности', + 'value': '1938', + }, + { + 'label': 'Внучка', + 'value': '8399', + }, + { + 'label': 'Военные', + 'value': '1096', + }, + { + 'label': 'Возрождение', + 'value': '1160', + }, + { + 'label': 'Воины', + 'value': '287', + }, + { + 'label': 'Война', + 'value': '443', + }, + { + 'label': 'Войны', + 'value': '2431', + }, + { + 'label': 'Воландеморт', + 'value': '4278', + }, + { + 'label': 'Волейбол', + 'value': '6415', + }, + { + 'label': 'Волки', + 'value': '1166', + }, + { + 'label': 'Волшебники', + 'value': '122', + }, + { + 'label': 'Волшебные существа', + 'value': '1689', + }, + { + 'label': 'Волшебство', + 'value': '719', + }, + { + 'label': 'Вор', + 'value': '1399', + }, + { + 'label': 'Воровка', + 'value': '6948', + }, + { + 'label': 'Ворон', + 'value': '848', + }, + { + 'label': 'Воскрешение', + 'value': '6915', + }, + { + 'label': 'Воспоминания из другого мира', + 'value': '1366', + }, + { + 'label': 'Воспоминания из прошлого', + 'value': '1372', + }, + { + 'label': 'Воссоединие семьи', + 'value': '8130', + }, + { + 'label': 'Восхождение', + 'value': '380', + }, + { + 'label': 'Враги становятся любовниками', + 'value': '978', + }, + { + 'label': 'Врата', + 'value': '40', + }, + { + 'label': 'Врата в другой мир', + 'value': '1957', + }, + { + 'label': 'Врач', + 'value': '1243', + }, + { + 'label': 'Временная петля', + 'value': '2852', + }, + { + 'label': 'Врмморпг', + 'value': '2043', + }, + { + 'label': 'Все дозволено', + 'value': '96', + }, + { + 'label': 'Всемогущий главный герой', + 'value': '1414', + }, + { + 'label': 'Второй шанс', + 'value': '2372', + }, + { + 'label': 'Вуайеризм', + 'value': '2498', + }, + { + 'label': 'Выживание', + 'value': '501', + }, + { + 'label': 'Вымышленные существа', + 'value': '3466', + }, + { + 'label': 'Вынужденный брак', + 'value': '7705', + }, + { + 'label': 'Высокие технологии', + 'value': '653', + }, + { + 'label': 'Высокомерные персонажи', + 'value': '3250', + }, + { + 'label': 'Галустян', + 'value': '5199', + }, + { + 'label': 'Гангстеры', + 'value': '7704', + }, + { + 'label': 'Гарем', + 'value': '440', + }, + { + 'label': 'Гарри поттер', + 'value': '226', + }, + { + 'label': 'Геймеры', + 'value': '2130', + }, + { + 'label': 'Генетические модификации', + 'value': '1750', + }, + { + 'label': 'Гениальный главный герой', + 'value': '1500', + }, + { + 'label': 'Гений', + 'value': '1650', + }, + { + 'label': 'Гермиона грейнджер', + 'value': '4280', + }, + { + 'label': 'Герои', + 'value': '185', + }, + { + 'label': 'Героическое фэнтези', + 'value': '1148', + }, + { + 'label': 'Гигаполис', + 'value': '8393', + }, + { + 'label': 'Гильгамеш', + 'value': '6031', + }, + { + 'label': 'Гильдии', + 'value': '900', + }, + { + 'label': 'Гильдия авантюристов', + 'value': '1858', + }, + { + 'label': 'Гинтама', + 'value': '4544', + }, + { + 'label': 'Гипноз', + 'value': '358', + }, + { + 'label': 'Главная героиня влюбляется первой', + 'value': '973', + }, + { + 'label': 'Главный герой бог', + 'value': '164', + }, + { + 'label': 'Главный герой влюбляется первым', + 'value': '3629', + }, + { + 'label': 'Главный герой выживальщик', + 'value': '120', + }, + { + 'label': 'Главный герой гонг', + 'value': '7877', + }, + { + 'label': 'Главный герой девушка', + 'value': '257', + }, + { + 'label': 'Главный герой демон', + 'value': '136', + }, + { + 'label': 'Главный герой женщина', + 'value': '7329', + }, + { + 'label': 'Главный герой жестокий', + 'value': '1553', + }, + { + 'label': 'Главный герой извращенец', + 'value': '94', + }, + { + 'label': 'Главный герой имба', + 'value': '2421', + }, + { + 'label': 'Главный герой киборг', + 'value': '7780', + }, + { + 'label': 'Главный герой монстр', + 'value': '869', + }, + { + 'label': 'Главный герой мужчина', + 'value': '1997', + }, + { + 'label': 'Главный герой на стороне сил зла', + 'value': '1514', + }, + { + 'label': 'Главный герой не адекватный', + 'value': '5', + }, + { + 'label': 'Главный герой не психопат', + 'value': '7804', + }, + { + 'label': 'Главный герой не человек', + 'value': '2172', + }, + { + 'label': 'Главный герой не эмоционален', + 'value': '1150', + }, + { + 'label': 'Главный герой подросток', + 'value': '2215', + }, + { + 'label': 'Главный герой позитивный', + 'value': '7787', + }, + { + 'label': 'Главный герой психопат', + 'value': '7803', + }, + { + 'label': 'Главный герой ребенок', + 'value': '2347', + }, + { + 'label': 'Главный герой русский', + 'value': '2417', + }, + { + 'label': 'Главный герой сильный с самого начала', + 'value': '88', + }, + { + 'label': 'Главный герой скрывает свою силу', + 'value': '1059', + }, + { + 'label': 'Главный герой эгоист', + 'value': '8326', + }, + { + 'label': 'Глотание спермы', + 'value': '4491', + }, + { + 'label': 'Гномы', + 'value': '1870', + }, + { + 'label': 'Гоблины', + 'value': '2029', + }, + { + 'label': 'Годзилла', + 'value': '6990', + }, + { + 'label': 'Големы', + 'value': '1690', + }, + { + 'label': 'Голливуд', + 'value': '7754', + }, + { + 'label': 'Головоломка', + 'value': '1697', + }, + { + 'label': 'Горничные', + 'value': '8091', + }, + { + 'label': 'Гробница', + 'value': '388', + }, + { + 'label': 'Групповой секс', + 'value': '1314', + }, + { + 'label': 'Дазай осаму', + 'value': '4112', + }, + { + 'label': 'Даньмэй', + 'value': '3411', + }, + { + 'label': 'Даосизм', + 'value': '258', + }, + { + 'label': 'Дарк соулс', + 'value': '6057', + }, + { + 'label': 'Дарт вейдер', + 'value': '6826', + }, + { + 'label': 'Дафна гринграсс', + 'value': '5192', + }, + { + 'label': 'Дворяне', + 'value': '7204', + }, + { + 'label': 'Девушки', + 'value': '7668', + }, + { + 'label': 'Девушки монстры', + 'value': '2231', + }, + { + 'label': 'Дедушка и внучка', + 'value': '8400', + }, + { + 'label': 'Дейви джонс', + 'value': '8061', + }, + { + 'label': 'Действие', + 'value': '1425', + }, + { + 'label': 'Демон лорд', + 'value': '153', + }, + { + 'label': 'Демонология', + 'value': '2024', + }, + { + 'label': 'Демоны', + 'value': '1406', + }, + { + 'label': 'Детектив', + 'value': '1265', + }, + { + 'label': 'Дети', + 'value': '580', + }, + { + 'label': 'Джарвис', + 'value': '933', + }, + { + 'label': 'Джедай', + 'value': '4442', + }, + { + 'label': 'Джин', + 'value': '4024', + }, + { + 'label': 'Джокер', + 'value': '3351', + }, + { + 'label': 'Джон сноу', + 'value': '7412', + }, + { + 'label': 'Джоффри баратеон', + 'value': '3936', + }, + { + 'label': 'Дзесэй', + 'value': '678', + }, + { + 'label': 'Дин винчестер', + 'value': '6953', + }, + { + 'label': 'Династии', + 'value': '2982', + }, + { + 'label': 'Динозавры', + 'value': '3666', + }, + { + 'label': 'Директор', + 'value': '1417', + }, + { + 'label': 'Для девушек', + 'value': '1441', + }, + { + 'label': 'Дневник', + 'value': '298', + }, + { + 'label': 'Добби', + 'value': '6762', + }, + { + 'label': 'Добрый мир', + 'value': '1685', + }, + { + 'label': 'Договоры с богами', + 'value': '2152', + }, + { + 'label': 'Договоры с демонами', + 'value': '1922', + }, + { + 'label': 'Доктор', + 'value': '1991', + }, + { + 'label': 'Доктор стрэндж', + 'value': '7634', + }, + { + 'label': 'Доминирование', + 'value': '2054', + }, + { + 'label': 'Дота', + 'value': '6965', + }, + { + 'label': 'Доудзюцу', + 'value': '7133', + }, + { + 'label': 'Дочь', + 'value': '3291', + }, + { + 'label': 'Драко малфой', + 'value': '46', + }, + { + 'label': 'Драконы', + 'value': '282', + }, + { + 'label': 'Драконы оборотни', + 'value': '8082', + }, + { + 'label': 'Драма', + 'value': '611', + }, + { + 'label': 'Древние времена', + 'value': '7781', + }, + { + 'label': 'Древний египет', + 'value': '7614', + }, + { + 'label': 'Древний китай', + 'value': '473', + }, + { + 'label': 'Древний мир', + 'value': '4', + }, + { + 'label': 'Дрочка', + 'value': '4565', + }, + { + 'label': 'Другая вселенная', + 'value': '39', + }, + { + 'label': 'Другие планеты', + 'value': '2371', + }, + { + 'label': 'Другой мир', + 'value': '2248', + }, + { + 'label': 'Дружба', + 'value': '1903', + }, + { + 'label': 'Друзья детства', + 'value': '1153', + }, + { + 'label': 'Духи', + 'value': '114', + }, + { + 'label': 'Духовные силы', + 'value': '1955', + }, + { + 'label': 'Души', + 'value': '1212', + }, + { + 'label': 'Дьявол', + 'value': '1094', + }, + { + 'label': 'Дьявольские фрукты', + 'value': '1564', + }, + { + 'label': 'Дэдпул', + 'value': '4399', + }, + { + 'label': 'Евнух', + 'value': '6293', + }, + { + 'label': 'Европейская атмосфера', + 'value': '5837', + }, + { + 'label': 'Египет', + 'value': '528', + }, + { + 'label': 'Еда', + 'value': '2056', + }, + { + 'label': 'Единороги', + 'value': '437', + }, + { + 'label': 'Екаи', + 'value': '655', + }, + { + 'label': 'Жалкий главный герой', + 'value': '97', + }, + { + 'label': 'Жена', + 'value': '5729', + }, + { + 'label': 'Женское доминирование', + 'value': '4622', + }, + { + 'label': 'Женщина в теле мужчины', + 'value': '2748', + }, + { + 'label': 'Женщина кошка', + 'value': '7513', + }, + { + 'label': 'Жесткий секс', + 'value': '2238', + }, + { + 'label': 'Жестокие персонажи ', + 'value': '3153', + }, + { + 'label': 'Жестокий мир', + 'value': '1532', + }, + { + 'label': 'Жестокое обращение с детьми', + 'value': '84', + }, + { + 'label': 'Жестокость', + 'value': '7880', + }, + { + 'label': 'Животные', + 'value': '7488', + }, + { + 'label': 'Животные компаньоны', + 'value': '2061', + }, + { + 'label': 'Жизнь и смерть', + 'value': '2014', + }, + { + 'label': 'Жнец', + 'value': '6288', + }, + { + 'label': 'Жойен рид', + 'value': '3926', + }, + { + 'label': 'Заботливый главный герой', + 'value': '338', + }, + { + 'label': 'Закалка тела', + 'value': '148', + }, + { + 'label': 'Заклинания', + 'value': '558', + }, + { + 'label': 'Заключенные', + 'value': '3052', + }, + { + 'label': 'Занпакто', + 'value': '1102', + }, + { + 'label': 'Запретная любовь', + 'value': '8033', + }, + { + 'label': 'Запутанный сюжет', + 'value': '1041', + }, + { + 'label': 'Захват мира', + 'value': '315', + }, + { + 'label': 'Зачарованные', + 'value': '4169', + }, + { + 'label': 'Звери', + 'value': '1638', + }, + { + 'label': 'Зверодевочки', + 'value': '2006', + }, + { + 'label': 'Зверолюди', + 'value': '1018', + }, + { + 'label': 'Земля', + 'value': '82', + }, + { + 'label': 'Злая организация', + 'value': '7768', + }, + { + 'label': 'Зло', + 'value': '1512', + }, + { + 'label': 'Злодей', + 'value': '1060', + }, + { + 'label': 'Злодейка', + 'value': '2376', + }, + { + 'label': 'Злой главный герой', + 'value': '616', + }, + { + 'label': 'Злые боги', + 'value': '7109', + }, + { + 'label': 'Злые персонажи', + 'value': '3243', + }, + { + 'label': 'Змей', + 'value': '5721', + }, + { + 'label': 'Знаменитости', + 'value': '1341', + }, + { + 'label': 'Знание медицины', + 'value': '1411', + }, + { + 'label': 'Золотой дождь', + 'value': '1828', + }, + { + 'label': 'Золушка', + 'value': '2980', + }, + { + 'label': 'Зомби', + 'value': '1743', + }, + { + 'label': 'Зомби апокалипсис', + 'value': '912', + }, + { + 'label': 'Зона 51', + 'value': '3051', + }, + { + 'label': 'Зооморфы', + 'value': '375', + }, + { + 'label': 'Зоофилия', + 'value': '1165', + }, + { + 'label': 'Зорро', + 'value': '6736', + }, + { + 'label': 'Зрелые женщины', + 'value': '1458', + }, + { + 'label': 'Игра', + 'value': '663', + }, + { + 'label': 'Игра на выживание', + 'value': '2182', + }, + { + 'label': 'Игровая система', + 'value': '384', + }, + { + 'label': 'Игровые элементы', + 'value': '720', + }, + { + 'label': 'Извращения', + 'value': '651', + }, + { + 'label': 'Измена', + 'value': '1874', + }, + { + 'label': 'Изменение характера', + 'value': '1113', + }, + { + 'label': 'Изменения внешности', + 'value': '259', + }, + { + 'label': 'Изменения личности', + 'value': '1080', + }, + { + 'label': 'Изнасилование', + 'value': '1283', + }, + { + 'label': 'Изобретения', + 'value': '126', + }, + { + 'label': 'Изуку мидория', + 'value': '6967', + }, + { + 'label': 'Император', + 'value': '867', + }, + { + 'label': 'Империи', + 'value': '712', + }, + { + 'label': 'Империя', + 'value': '1716', + }, + { + 'label': 'Инвалидность', + 'value': '2073', + }, + { + 'label': 'Инквизитор', + 'value': '143', + }, + { + 'label': 'Инкуб', + 'value': '3264', + }, + { + 'label': 'Инопланетное вторжение', + 'value': '209', + }, + { + 'label': 'Инопланетяне', + 'value': '866', + }, + { + 'label': 'Интерактив с читателями', + 'value': '472', + }, + { + 'label': 'Интересный сюжет', + 'value': '7374', + }, + { + 'label': 'Интернет', + 'value': '739', + }, + { + 'label': 'Интимные сцены', + 'value': '3450', + }, + { + 'label': 'Интрига', + 'value': '317', + }, + { + 'label': 'Интриги и заговоры', + 'value': '1009', + }, + { + 'label': 'Инцест', + 'value': '1934', + }, + { + 'label': 'Иные миры', + 'value': '35', + }, + { + 'label': 'Исекай', + 'value': '2979', + }, + { + 'label': 'Искусственный интеллект', + 'value': '1900', + }, + { + 'label': 'Исследование', + 'value': '1626', + }, + { + 'label': 'Исторический роман', + 'value': '573', + }, + { + 'label': 'Итачи учиха', + 'value': '4556', + }, + { + 'label': 'Ичиго', + 'value': '7254', + }, + { + 'label': 'Йода', + 'value': '6829', + }, + { + 'label': 'Йоруичи', + 'value': '6755', + }, + { + 'label': 'Калипсо', + 'value': '8062', + }, + { + 'label': 'Каннибализм', + 'value': '2249', + }, + { + 'label': 'Капитан америка', + 'value': '6301', + }, + { + 'label': 'Каракура', + 'value': '7473', + }, + { + 'label': 'Карточная игра', + 'value': '1557', + }, + { + 'label': 'Кастиэль', + 'value': '6954', + }, + { + 'label': 'Кафе', + 'value': '3934', + }, + { + 'label': 'Кацуки бакуго', + 'value': '7696', + }, + { + 'label': 'Квесты', + 'value': '1707', + }, + { + 'label': 'Киберпанк', + 'value': '1614', + }, + { + 'label': 'Киберспорт', + 'value': '1984', + }, + { + 'label': 'Кино', + 'value': '7126', + }, + { + 'label': 'Китай', + 'value': '3762', + }, + { + 'label': 'Кицунэ', + 'value': '241', + }, + { + 'label': 'Кланы', + 'value': '834', + }, + { + 'label': 'Клоны', + 'value': '1624', + }, + { + 'label': 'Книги', + 'value': '1068', + }, + { + 'label': 'Книжный червь', + 'value': '521', + }, + { + 'label': 'Колдовство', + 'value': '2681', + }, + { + 'label': 'Коллекционер', + 'value': '2588', + }, + { + 'label': 'Кольцо', + 'value': '1628', + }, + { + 'label': 'Комедия', + 'value': '1430', + }, + { + 'label': 'Коммунисты', + 'value': '1042', + }, + { + 'label': 'Коноха', + 'value': '2827', + }, + { + 'label': 'Контракт', + 'value': '4304', + }, + { + 'label': 'Контроль разума', + 'value': '485', + }, + { + 'label': 'Конфеты', + 'value': '341', + }, + { + 'label': 'Кончил внутрь', + 'value': '4589', + }, + { + 'label': 'Копрофилия', + 'value': '2568', + }, + { + 'label': 'Корейцы', + 'value': '6535', + }, + { + 'label': 'Корея', + 'value': '2443', + }, + { + 'label': 'Королевская власть', + 'value': '55', + }, + { + 'label': 'Королевская семья', + 'value': '276', + }, + { + 'label': 'Королевство', + 'value': '1695', + }, + { + 'label': 'Короткий рассказ', + 'value': '239', + }, + { + 'label': 'Коррупция', + 'value': '831', + }, + { + 'label': 'Космическая опера', + 'value': '2245', + }, + { + 'label': 'Космические рейнджеры', + 'value': '5860', + }, + { + 'label': 'Космос', + 'value': '329', + }, + { + 'label': 'Кот', + 'value': '5171', + }, + { + 'label': 'Кража навыков', + 'value': '1159', + }, + { + 'label': 'Красивая главная героиня', + 'value': '186', + }, + { + 'label': 'Красивые женщины', + 'value': '66', + }, + { + 'label': 'Красивые персонажи ', + 'value': '5787', + }, + { + 'label': 'Красивый главный герой', + 'value': '895', + }, + { + 'label': 'Крафт', + 'value': '1599', + }, + { + 'label': 'Кровь и расчлененка', + 'value': '7752', + }, + { + 'label': 'Кроссовер', + 'value': '75', + }, + { + 'label': 'Ксенофилия', + 'value': '2265', + }, + { + 'label': 'Ктулху', + 'value': '920', + }, + { + 'label': 'Кузнец', + 'value': '853', + }, + { + 'label': 'Кукла', + 'value': '3085', + }, + { + 'label': 'Кулинария', + 'value': '2230', + }, + { + 'label': 'Культивация', + 'value': '1901', + }, + { + 'label': 'Культивирование', + 'value': '1860', + }, + { + 'label': 'Кунилингус', + 'value': '4651', + }, + { + 'label': 'Курама', + 'value': '5709', + }, + { + 'label': 'Курилин', + 'value': '6134', + }, + { + 'label': 'Кушина узумаки', + 'value': '5222', + }, + { + 'label': 'Лавкрафт', + 'value': '6063', + }, + { + 'label': 'Лара крофт', + 'value': '6435', + }, + { + 'label': 'Легенда о зельде', + 'value': '5707', + }, + { + 'label': 'Ленивый главный герой', + 'value': '1516', + }, + { + 'label': 'Леон золдик', + 'value': '7469', + }, + { + 'label': 'Лес', + 'value': '6645', + }, + { + 'label': 'Лечебная магия', + 'value': '562', + }, + { + 'label': 'Литрпг', + 'value': '505', + }, + { + 'label': 'Локи', + 'value': '1725', + }, + { + 'label': 'Лоли', + 'value': '1576', + }, + { + 'label': 'Лопата', + 'value': '4989', + }, + { + 'label': 'Лорд', + 'value': '8404', + }, + { + 'label': 'Лориен', + 'value': '7397', + }, + { + 'label': 'Лошади', + 'value': '6110', + }, + { + 'label': 'Лунатизм', + 'value': '3520', + }, + { + 'label': 'Луффи', + 'value': '274', + }, + { + 'label': 'Лучник', + 'value': '1038', + }, + { + 'label': 'Любовный интерес влюбляется первым', + 'value': '7753', + }, + { + 'label': 'Любовный треугольник', + 'value': '2109', + }, + { + 'label': 'Любовь', + 'value': '2297', + }, + { + 'label': 'Любовь с первого взгляда', + 'value': '7748', + }, + { + 'label': 'Любящие родители', + 'value': '2699', + }, + { + 'label': 'Люди', + 'value': '3572', + }, + { + 'label': 'Люцифер', + 'value': '5883', + }, + { + 'label': 'Маг', + 'value': '780', + }, + { + 'label': 'Магазин', + 'value': '4762', + }, + { + 'label': 'Маги', + 'value': '58', + }, + { + 'label': 'Магическая академия', + 'value': '6788', + }, + { + 'label': 'Магические звери', + 'value': '684', + }, + { + 'label': 'Магические предметы', + 'value': '1648', + }, + { + 'label': 'Магический мир', + 'value': '578', + }, + { + 'label': 'Магия', + 'value': '150', + }, + { + 'label': 'Магия воды', + 'value': '6450', + }, + { + 'label': 'Магия воздуха', + 'value': '7627', + }, + { + 'label': 'Магия земли', + 'value': '7626', + }, + { + 'label': 'Магия и технология', + 'value': '107', + }, + { + 'label': 'Магия крови', + 'value': '7976', + }, + { + 'label': 'Магия льда', + 'value': '1379', + }, + { + 'label': 'Магия огня', + 'value': '7625', + }, + { + 'label': 'Магия призыва', + 'value': '885', + }, + { + 'label': 'Магия природы', + 'value': '6226', + }, + { + 'label': 'Магия стихий', + 'value': '7673', + }, + { + 'label': 'Магия тьмы', + 'value': '3596', + }, + { + 'label': 'Мадара', + 'value': '2929', + }, + { + 'label': 'Мазохизм', + 'value': '1961', + }, + { + 'label': 'Мама', + 'value': '12', + }, + { + 'label': 'Мама и дочь', + 'value': '7894', + }, + { + 'label': 'Мама и сын', + 'value': '7895', + }, + { + 'label': 'Манга', + 'value': '2464', + }, + { + 'label': 'Манипуляция временем', + 'value': '932', + }, + { + 'label': 'Маньяк', + 'value': '2026', + }, + { + 'label': 'Маргери тирелл', + 'value': '3935', + }, + { + 'label': 'Марионетки', + 'value': '3175', + }, + { + 'label': 'Марс', + 'value': '4013', + }, + { + 'label': 'Марти стью', + 'value': '594', + }, + { + 'label': 'Мастер на все руки', + 'value': '3189', + }, + { + 'label': 'Мастурбация', + 'value': '3078', + }, + { + 'label': 'Матриархат', + 'value': '7197', + }, + { + 'label': 'Мать и сестры', + 'value': '7946', + }, + { + 'label': 'Мафия', + 'value': '353', + }, + { + 'label': 'Мачеха', + 'value': '4664', + }, + { + 'label': 'Мегаполис', + 'value': '3322', + }, + { + 'label': 'Медицина', + 'value': '441', + }, + { + 'label': 'Медленная романтика', + 'value': '8383', + }, + { + 'label': 'Медленное развитие истории', + 'value': '7462', + }, + { + 'label': 'Межрасовый секс', + 'value': '3489', + }, + { + 'label': 'Мелиодас', + 'value': '7224', + }, + { + 'label': 'Мелодрама', + 'value': '1507', + }, + { + 'label': 'Менеджмент', + 'value': '368', + }, + { + 'label': 'Мерлин', + 'value': '3977', + }, + { + 'label': 'Месть', + 'value': '1218', + }, + { + 'label': 'Меха', + 'value': '2303', + }, + { + 'label': 'Меч', + 'value': '48', + }, + { + 'label': 'Мечники', + 'value': '969', + }, + { + 'label': 'Мечта', + 'value': '527', + }, + { + 'label': 'Мизуки', + 'value': '4269', + }, + { + 'label': 'Микото', + 'value': '3862', + }, + { + 'label': 'Милая главная героиня', + 'value': '134', + }, + { + 'label': 'Милф', + 'value': '1987', + }, + { + 'label': 'Милый главный герой', + 'value': '2678', + }, + { + 'label': 'Мимик', + 'value': '5706', + }, + { + 'label': 'Мина ашидо', + 'value': '7695', + }, + { + 'label': 'Минато намикадзе', + 'value': '5223', + }, + { + 'label': 'Минет', + 'value': '3289', + }, + { + 'label': 'Мир будущего', + 'value': '1770', + }, + { + 'label': 'Мир земли', + 'value': '8394', + }, + { + 'label': 'Мир меча и магии', + 'value': '1271', + }, + { + 'label': 'Мистер пропер', + 'value': '565', + }, + { + 'label': 'Мистика', + 'value': '510', + }, + { + 'label': 'Мифические существа', + 'value': '1878', + }, + { + 'label': 'Мифы и легенды', + 'value': '4463', + }, + { + 'label': 'Младшая сестра', + 'value': '1523', + }, + { + 'label': 'Мморпг', + 'value': '620', + }, + { + 'label': 'Много главных героев', + 'value': '1191', + }, + { + 'label': 'Много крови', + 'value': '5318', + }, + { + 'label': 'Много персонажей', + 'value': '1539', + }, + { + 'label': 'Множество королевств', + 'value': '32', + }, + { + 'label': 'Модерн', + 'value': '5457', + }, + { + 'label': 'Мокутон', + 'value': '4438', + }, + { + 'label': 'Молоко', + 'value': '5469', + }, + { + 'label': 'Монархия', + 'value': '3590', + }, + { + 'label': 'Монстры', + 'value': '307', + }, + { + 'label': 'Море', + 'value': '922', + }, + { + 'label': 'Моритика ринносукэ', + 'value': '1142', + }, + { + 'label': 'Мортал комбат', + 'value': '5861', + }, + { + 'label': 'Мошенник', + 'value': '959', + }, + { + 'label': 'Мрачный мир', + 'value': '1', + }, + { + 'label': 'Мужчина протагонист', + 'value': '31', + }, + { + 'label': 'Музыка', + 'value': '1183', + }, + { + 'label': 'Мультивселенная', + 'value': '7410', + }, + { + 'label': 'Мурим', + 'value': '7342', + }, + { + 'label': 'Мутанты', + 'value': '2392', + }, + { + 'label': 'Мутация', + 'value': '29', + }, + { + 'label': 'Мясо', + 'value': '1503', + }, + { + 'label': 'На реальных событиях', + 'value': '26', + }, + { + 'label': 'Навыки', + 'value': '415', + }, + { + 'label': 'Нагато узумаки', + 'value': '5221', + }, + { + 'label': 'Наемники', + 'value': '1668', + }, + { + 'label': 'Назарик', + 'value': '5369', + }, + { + 'label': 'Наивный главный герой', + 'value': '159', + }, + { + 'label': 'Наложница', + 'value': '4867', + }, + { + 'label': 'Наноботы', + 'value': '2332', + }, + { + 'label': 'Наркотики', + 'value': '1436', + }, + { + 'label': 'Наруто', + 'value': '7177', + }, + { + 'label': 'Наруто и хината', + 'value': '5766', + }, + { + 'label': 'Насилие и жестокость', + 'value': '1440', + }, + { + 'label': 'Наука', + 'value': '2150', + }, + { + 'label': 'Научная фантастика', + 'value': '2244', + }, + { + 'label': 'Национализм', + 'value': '5556', + }, + { + 'label': 'Нацу', + 'value': '5826', + }, + { + 'label': 'Нацуки субару', + 'value': '6656', + }, + { + 'label': 'Начальная школа', + 'value': '3920', + }, + { + 'label': 'Наши дни', + 'value': '1814', + }, + { + 'label': 'Не всесильный главный герой', + 'value': '42', + }, + { + 'label': 'Не по канону', + 'value': '1611', + }, + { + 'label': 'Неверность', + 'value': '5735', + }, + { + 'label': 'Невеста', + 'value': '6011', + }, + { + 'label': 'Неджи хьюга', + 'value': '3099', + }, + { + 'label': 'Недооценённый главный герой', + 'value': '43', + }, + { + 'label': 'Нежить', + 'value': '1949', + }, + { + 'label': 'Некромаг', + 'value': '7441', + }, + { + 'label': 'Некромант', + 'value': '1914', + }, + { + 'label': 'Некромантия', + 'value': '754', + }, + { + 'label': 'Некрофилия', + 'value': '1285', + }, + { + 'label': 'Ненормативная лексика', + 'value': '160', + }, + { + 'label': 'Необычные герои', + 'value': '67', + }, + { + 'label': 'Нет людей', + 'value': '7486', + }, + { + 'label': 'Нетораре', + 'value': '403', + }, + { + 'label': 'Нетори', + 'value': '5393', + }, + { + 'label': 'Нефилимы', + 'value': '7764', + }, + { + 'label': 'Нецензурная лексика', + 'value': '4912', + }, + { + 'label': 'Нечисть', + 'value': '4559', + }, + { + 'label': 'Ник фьюри', + 'value': '6304', + }, + { + 'label': 'Ниндзюцу', + 'value': '2354', + }, + { + 'label': 'Ниндзя', + 'value': '1330', + }, + { + 'label': 'Новелла', + 'value': '2105', + }, + { + 'label': 'Нудизм', + 'value': '2233', + }, + { + 'label': 'Нэко', + 'value': '147', + }, + { + 'label': 'Оби ван кеноби', + 'value': '6830', + }, + { + 'label': 'Обито учиха', + 'value': '2814', + }, + { + 'label': 'Оборотни', + 'value': '53', + }, + { + 'label': 'Обратный гарем', + 'value': '3303', + }, + { + 'label': 'Овощ', + 'value': '6098', + }, + { + 'label': 'Огнестрельное оружие', + 'value': '3155', + }, + { + 'label': 'Одержимость', + 'value': '708', + }, + { + 'label': 'Один в поле воин', + 'value': '6498', + }, + { + 'label': 'Онлайн игра', + 'value': '1565', + }, + { + 'label': 'Ооками теппей', + 'value': '849', + }, + { + 'label': 'Оральный секс', + 'value': '605', + }, + { + 'label': 'Оргия', + 'value': '974', + }, + { + 'label': 'Оригинальные персонажи', + 'value': '7741', + }, + { + 'label': 'Орки', + 'value': '1597', + }, + { + 'label': 'Оружие', + 'value': '125', + }, + { + 'label': 'Основано на видео игре', + 'value': '602', + }, + { + 'label': 'Особые способности', + 'value': '2904', + }, + { + 'label': 'От бедности к богатству', + 'value': '901', + }, + { + 'label': 'От слабого до сильного', + 'value': '118', + }, + { + 'label': 'Отель', + 'value': '2879', + }, + { + 'label': 'Отец', + 'value': '3290', + }, + { + 'label': 'Отношения', + 'value': '398', + }, + { + 'label': 'Отношения человек/нечеловек', + 'value': '7406', + }, + { + 'label': 'Офис', + 'value': '3460', + }, + { + 'label': 'Охотники', + 'value': '2263', + }, + { + 'label': 'Оцуцуки', + 'value': '5101', + }, + { + 'label': 'Ошейник', + 'value': '2362', + }, + { + 'label': 'Ояш', + 'value': '8048', + }, + { + 'label': 'Падчерица', + 'value': '7023', + }, + { + 'label': 'Падший ангел', + 'value': '184', + }, + { + 'label': 'Пайзури', + 'value': '3560', + }, + { + 'label': 'Палач', + 'value': '852', + }, + { + 'label': 'Палочка', + 'value': '2682', + }, + { + 'label': 'Пандорум', + 'value': '4360', + }, + { + 'label': 'Папа и дочь', + 'value': '7647', + }, + { + 'label': 'Паразит', + 'value': '1213', + }, + { + 'label': 'Параллельный мир', + 'value': '2092', + }, + { + 'label': 'Парень', + 'value': '619', + }, + { + 'label': 'Паркур', + 'value': '3391', + }, + { + 'label': 'Пародия', + 'value': '898', + }, + { + 'label': 'Пасхалки', + 'value': '455', + }, + { + 'label': 'Паук', + 'value': '2209', + }, + { + 'label': 'Пекарь', + 'value': '5073', + }, + { + 'label': 'Первая книга', + 'value': '269', + }, + { + 'label': 'Первая любовь', + 'value': '640', + }, + { + 'label': 'Первый раз', + 'value': '1465', + }, + { + 'label': 'Переводы', + 'value': '24', + }, + { + 'label': 'Перевоплощение', + 'value': '1596', + }, + { + 'label': 'Перевоплощение в игровом мире', + 'value': '92', + }, + { + 'label': 'Перемещение в другой мир', + 'value': '1288', + }, + { + 'label': 'Перемещение во времени', + 'value': '146', + }, + { + 'label': 'Перерождение', + 'value': '894', + }, + { + 'label': 'Перерождение в демона', + 'value': '1111', + }, + { + 'label': 'Перерождение в дракона', + 'value': '6867', + }, + { + 'label': 'Перерождение в злодейку', + 'value': '5619', + }, + { + 'label': 'Перерождение в злодея', + 'value': '749', + }, + { + 'label': 'Перерождение в ином мире', + 'value': '109', + }, + { + 'label': 'Перерождение в монстра', + 'value': '917', + }, + { + 'label': 'Перерождений', + 'value': '335', + }, + { + 'label': 'Переселение', + 'value': '813', + }, + { + 'label': 'Переселение души', + 'value': '1864', + }, + { + 'label': 'Перси джексон', + 'value': '6329', + }, + { + 'label': 'Пилот', + 'value': '5521', + }, + { + 'label': 'Пилюли', + 'value': '1531', + }, + { + 'label': 'Пират', + 'value': '1579', + }, + { + 'label': 'Пирог', + 'value': '80', + }, + { + 'label': 'Писатель', + 'value': '734', + }, + { + 'label': 'Пистолеты', + 'value': '4916', + }, + { + 'label': 'Письмо', + 'value': '840', + }, + { + 'label': 'Питомцы', + 'value': '3122', + }, + { + 'label': 'Планомерное развитие событий', + 'value': '62', + }, + { + 'label': 'Племянник', + 'value': '8303', + }, + { + 'label': 'Пленница', + 'value': '4897', + }, + { + 'label': 'Плети', + 'value': '4839', + }, + { + 'label': 'Пляж', + 'value': '4243', + }, + { + 'label': 'Повар', + 'value': '658', + }, + { + 'label': 'Повествование от первого лица', + 'value': '1054', + }, + { + 'label': 'Повествование от разных лиц', + 'value': '600', + }, + { + 'label': 'Повествование от третьего лица', + 'value': '2116', + }, + { + 'label': 'Повседневность', + 'value': '802', + }, + { + 'label': 'Подавитель', + 'value': '497', + }, + { + 'label': 'Подземелье', + 'value': '798', + }, + { + 'label': 'Подростки', + 'value': '636', + }, + { + 'label': 'Подруга', + 'value': '5804', + }, + { + 'label': 'Подчинение', + 'value': '8343', + }, + { + 'label': 'Подчинение и унижение', + 'value': '4500', + }, + { + 'label': 'Покемоны', + 'value': '2840', + }, + { + 'label': 'Полиамория', + 'value': '1300', + }, + { + 'label': 'Полигамия', + 'value': '1336', + }, + { + 'label': 'Политика', + 'value': '1313', + }, + { + 'label': 'Полицейский', + 'value': '1907', + }, + { + 'label': 'Полубог', + 'value': '7170', + }, + { + 'label': 'Полукровка', + 'value': '999', + }, + { + 'label': 'Полулюди', + 'value': '2273', + }, + { + 'label': 'Поношенные трусики', + 'value': '1204', + }, + { + 'label': 'Попаданец', + 'value': '2396', + }, + { + 'label': 'Попаданец в другой мир', + 'value': '685', + }, + { + 'label': 'Попаданец в игру', + 'value': '6466', + }, + { + 'label': 'Попадание в книгу', + 'value': '6957', + }, + { + 'label': 'Порно', + 'value': '4023', + }, + { + 'label': 'Постапокалипсис', + 'value': '1079', + }, + { + 'label': 'Потеря девственности', + 'value': '5879', + }, + { + 'label': 'Похищение', + 'value': '7452', + }, + { + 'label': 'Поэзия', + 'value': '1120', + }, + { + 'label': 'Правитель', + 'value': '2261', + }, + { + 'label': 'Превращения в животных', + 'value': '3410', + }, + { + 'label': 'Преданный любовный интерес', + 'value': '2055', + }, + { + 'label': 'Предательство', + 'value': '70', + }, + { + 'label': 'Президент', + 'value': '4334', + }, + { + 'label': 'Преступник', + 'value': '4049', + }, + { + 'label': 'Преступный мир', + 'value': '965', + }, + { + 'label': 'Призрак', + 'value': '511', + }, + { + 'label': 'Призыв', + 'value': '332', + }, + { + 'label': 'Призыв в другой мир', + 'value': '781', + }, + { + 'label': 'Призыв существ', + 'value': '412', + }, + { + 'label': 'Приключения', + 'value': '964', + }, + { + 'label': 'Приложение на телефоне', + 'value': '5345', + }, + { + 'label': 'Принудительный брак', + 'value': '2954', + }, + { + 'label': 'Принуждение', + 'value': '1442', + }, + { + 'label': 'Принц', + 'value': '362', + }, + { + 'label': 'Принцесса', + 'value': '2403', + }, + { + 'label': 'Приручение мостров', + 'value': '2338', + }, + { + 'label': 'Прислуга', + 'value': '5185', + }, + { + 'label': 'Пришельцы', + 'value': '273', + }, + { + 'label': 'Проза', + 'value': '2012', + }, + { + 'label': 'Прокачка', + 'value': '1070', + }, + { + 'label': 'Проклятия', + 'value': '1347', + }, + { + 'label': 'Проработанный мир', + 'value': '1711', + }, + { + 'label': 'Пророчество', + 'value': '7762', + }, + { + 'label': 'Псайкеры', + 'value': '3659', + }, + { + 'label': 'Псионика', + 'value': '5216', + }, + { + 'label': 'Психбольница', + 'value': '6969', + }, + { + 'label': 'Психические расстройства', + 'value': '2445', + }, + { + 'label': 'Психологические травмы', + 'value': '3418', + }, + { + 'label': 'Психология', + 'value': '17', + }, + { + 'label': 'Публичный дом', + 'value': '7860', + }, + { + 'label': 'Публичный секс', + 'value': '6647', + }, + { + 'label': 'Путешествие в другой мир', + 'value': '10', + }, + { + 'label': 'Пух', + 'value': '4286', + }, + { + 'label': 'Пушечное мясо', + 'value': '7234', + }, + { + 'label': 'Пытки', + 'value': '1756', + }, + { + 'label': 'Пьяный мастер', + 'value': '1655', + }, + { + 'label': 'Пэнси паркинсон', + 'value': '7411', + }, + { + 'label': 'Раб', + 'value': '977', + }, + { + 'label': 'Рабы', + 'value': '1240', + }, + { + 'label': 'Разведение животных', + 'value': '3990', + }, + { + 'label': 'Развитие', + 'value': '208', + }, + { + 'label': 'Развитие персонажа', + 'value': '1780', + }, + { + 'label': 'Развитие поселения', + 'value': '7203', + }, + { + 'label': 'Развитие технологий', + 'value': '1875', + }, + { + 'label': 'Разврат', + 'value': '1924', + }, + { + 'label': 'Раздвоение личности', + 'value': '2062', + }, + { + 'label': 'Разные расы', + 'value': '1188', + }, + { + 'label': 'Разорванная помолвка', + 'value': '2057', + }, + { + 'label': 'Разработчик', + 'value': '2333', + }, + { + 'label': 'Ранги', + 'value': '1568', + }, + { + 'label': 'Ранобэ', + 'value': '1764', + }, + { + 'label': 'Расизм', + 'value': '3554', + }, + { + 'label': 'Растение', + 'value': '407', + }, + { + 'label': 'Расчленение', + 'value': '7125', + }, + { + 'label': 'Реализм', + 'value': '1180', + }, + { + 'label': 'Ребенок', + 'value': '2881', + }, + { + 'label': 'Ревность', + 'value': '293', + }, + { + 'label': 'Революция', + 'value': '3996', + }, + { + 'label': 'Реинкарнация', + 'value': '1302', + }, + { + 'label': 'Реинкарнация в другом мире', + 'value': '2180', + }, + { + 'label': 'Реинкарнация в игровой мир', + 'value': '304', + }, + { + 'label': 'Рейджер', + 'value': '5147', + }, + { + 'label': 'Религия', + 'value': '2184', + }, + { + 'label': 'Рем', + 'value': '6655', + }, + { + 'label': 'Ремесленник', + 'value': '1483', + }, + { + 'label': 'Ремонт', + 'value': '5703', + }, + { + 'label': 'Репликаторы', + 'value': '3495', + }, + { + 'label': 'Ресторан', + 'value': '7519', + }, + { + 'label': 'Риас гремори', + 'value': '6950', + }, + { + 'label': 'Рим', + 'value': '612', + }, + { + 'label': 'Риннеган', + 'value': '4230', + }, + { + 'label': 'Ритуал', + 'value': '1233', + }, + { + 'label': 'Робот', + 'value': '4011', + }, + { + 'label': 'Роботы', + 'value': '467', + }, + { + 'label': 'Рок ли', + 'value': '7002', + }, + { + 'label': 'Рокси', + 'value': '7380', + }, + { + 'label': 'Романтика', + 'value': '1025', + }, + { + 'label': 'Рон уизли', + 'value': '4279', + }, + { + 'label': 'Ророноа зоро', + 'value': '1590', + }, + { + 'label': 'Росомаха', + 'value': '1035', + }, + { + 'label': 'Российская империя', + 'value': '2146', + }, + { + 'label': 'Россия', + 'value': '4246', + }, + { + 'label': 'Рудеус', + 'value': '7379', + }, + { + 'label': 'Руны', + 'value': '2393', + }, + { + 'label': 'Русалки', + 'value': '3127', + }, + { + 'label': 'Русь', + 'value': '2016', + }, + { + 'label': 'Рыцари', + 'value': '1902', + }, + { + 'label': 'Рэо хатаке', + 'value': '2823', + }, + { + 'label': 'Сабли', + 'value': '6136', + }, + { + 'label': 'Сайян', + 'value': '6802', + }, + { + 'label': 'Сакура', + 'value': '2515', + }, + { + 'label': 'Самец', + 'value': '1592', + }, + { + 'label': 'Самоубийство', + 'value': '4312', + }, + { + 'label': 'Самураи', + 'value': '576', + }, + { + 'label': 'Санса старк', + 'value': '3925', + }, + { + 'label': 'Сарказм', + 'value': '4658', + }, + { + 'label': 'Саске', + 'value': '7237', + }, + { + 'label': 'Сатира', + 'value': '215', + }, + { + 'label': 'Сборник', + 'value': '7367', + }, + { + 'label': 'Свадьба', + 'value': '1524', + }, + { + 'label': 'Сверхсила', + 'value': '1055', + }, + { + 'label': 'Сверхъестественное', + 'value': '1074', + }, + { + 'label': 'Свингеры', + 'value': '514', + }, + { + 'label': 'Свинцовые книги', + 'value': '5322', + }, + { + 'label': 'Связывание', + 'value': '4506', + }, + { + 'label': 'Священик', + 'value': '61', + }, + { + 'label': 'Северус снейп', + 'value': '5783', + }, + { + 'label': 'Сёдзе', + 'value': '2219', + }, + { + 'label': 'Секс', + 'value': '2472', + }, + { + 'label': 'Секс без проникновения', + 'value': '151', + }, + { + 'label': 'Секс игрушки', + 'value': '1124', + }, + { + 'label': 'Секс по принуждению', + 'value': '8335', + }, + { + 'label': 'Секс по согласию', + 'value': '7307', + }, + { + 'label': 'Секс рабыня', + 'value': '7174', + }, + { + 'label': 'Секс с близнецами', + 'value': '7457', + }, + { + 'label': 'Секс с монстрами', + 'value': '6073', + }, + { + 'label': 'Секс с учителем', + 'value': '2570', + }, + { + 'label': 'Секса будет много', + 'value': '7265', + }, + { + 'label': 'Сексуальные и психологические отклонения', + 'value': '888', + }, + { + 'label': 'Секты', + 'value': '1234', + }, + { + 'label': 'Селфцест', + 'value': '7498', + }, + { + 'label': 'Сельское хозяйство', + 'value': '787', + }, + { + 'label': 'Семейный конфликт', + 'value': '935', + }, + { + 'label': 'Семья', + 'value': '728', + }, + { + 'label': 'Сенджу', + 'value': '6069', + }, + { + 'label': 'Сёнэн', + 'value': '2058', + }, + { + 'label': 'Серийный убийца', + 'value': '261', + }, + { + 'label': 'Сестра', + 'value': '2342', + }, + { + 'label': 'Сила глаза', + 'value': '1019', + }, + { + 'label': 'Сильная героиня', + 'value': '7292', + }, + { + 'label': 'Сильная главная героиня', + 'value': '1994', + }, + { + 'label': 'Сильный главный герой', + 'value': '570', + }, + { + 'label': 'Сильфиетта', + 'value': '7381', + }, + { + 'label': 'Симбиот', + 'value': '2648', + }, + { + 'label': 'Сириус блэк', + 'value': '7655', + }, + { + 'label': 'Сирота', + 'value': '297', + }, + { + 'label': 'Система', + 'value': '251', + }, + { + 'label': 'Система уровней', + 'value': '2174', + }, + { + 'label': 'Сиськи', + 'value': '16', + }, + { + 'label': 'Ситх', + 'value': '1618', + }, + { + 'label': 'Сказка', + 'value': '3570', + }, + { + 'label': 'Скайрим', + 'value': '4032', + }, + { + 'label': 'Скайуокер', + 'value': '6828', + }, + { + 'label': 'Сквиб', + 'value': '4101', + }, + { + 'label': 'Сквирт', + 'value': '4526', + }, + { + 'label': 'Скелет', + 'value': '1315', + }, + { + 'label': 'Скрытые способности', + 'value': '3417', + }, + { + 'label': 'Скульптор', + 'value': '1178', + }, + { + 'label': 'Слабая главная героиня', + 'value': '5805', + }, + { + 'label': 'Слабый главный герой', + 'value': '731', + }, + { + 'label': 'Славяне', + 'value': '2168', + }, + { + 'label': 'Слизерин', + 'value': '6979', + }, + { + 'label': 'Слизь', + 'value': '1095', + }, + { + 'label': 'Сломанная игрушка', + 'value': '8396', + }, + { + 'label': 'Служанка', + 'value': '3486', + }, + { + 'label': 'Смартфон', + 'value': '457', + }, + { + 'label': 'Смена сущности', + 'value': '8391', + }, + { + 'label': 'Смерть', + 'value': '1779', + }, + { + 'label': 'Смерть основного персонажа', + 'value': '1530', + }, + { + 'label': 'Собаки', + 'value': '6109', + }, + { + 'label': 'Соблазн', + 'value': '7994', + }, + { + 'label': 'Соблазнение', + 'value': '2290', + }, + { + 'label': 'Современность', + 'value': '568', + }, + { + 'label': 'Современные знания', + 'value': '988', + }, + { + 'label': 'Сожительство', + 'value': '3026', + }, + { + 'label': 'Создание армии', + 'value': '1992', + }, + { + 'label': 'Создание королевства', + 'value': '1497', + }, + { + 'label': 'Создание пилюль', + 'value': '816', + }, + { + 'label': 'Создатель', + 'value': '1045', + }, + { + 'label': 'Сокровища', + 'value': '6521', + }, + { + 'label': 'Сокрытие истинной личности', + 'value': '2894', + }, + { + 'label': 'Сома и эрина', + 'value': '5737', + }, + { + 'label': 'Соперничество', + 'value': '7699', + }, + { + 'label': 'Соседи', + 'value': '4075', + }, + { + 'label': 'Сотрудник', + 'value': '6339', + }, + { + 'label': 'Социология', + 'value': '7618', + }, + { + 'label': 'Спокойная главная героиня', + 'value': '236', + }, + { + 'label': 'Спокойный главный герой', + 'value': '1656', + }, + { + 'label': 'Спор', + 'value': '3484', + }, + { + 'label': 'Спорт', + 'value': '1387', + }, + { + 'label': 'Спортивное тело', + 'value': '8317', + }, + { + 'label': 'Способность кражи', + 'value': '7784', + }, + { + 'label': 'Сражения', + 'value': '23', + }, + { + 'label': 'Средневековье', + 'value': '1022', + }, + { + 'label': 'Сталкер', + 'value': '1932', + }, + { + 'label': 'Становление государства', + 'value': '111', + }, + { + 'label': 'Старшая школа', + 'value': '1658', + }, + { + 'label': 'Стёб', + 'value': '454', + }, + { + 'label': 'Стекло', + 'value': '7453', + }, + { + 'label': 'Стеснительный персонаж', + 'value': '152', + }, + { + 'label': 'Стимпанк', + 'value': '1894', + }, + { + 'label': 'Стихи', + 'value': '1309', + }, + { + 'label': 'Стратегия', + 'value': '569', + }, + { + 'label': 'Стриптиз', + 'value': '6914', + }, + { + 'label': 'Строительство', + 'value': '921', + }, + { + 'label': 'Студент', + 'value': '1464', + }, + { + 'label': 'Студентка', + 'value': '7518', + }, + { + 'label': 'Суккубы', + 'value': '2662', + }, + { + 'label': 'Супер зрение', + 'value': '6574', + }, + { + 'label': 'Супер удача', + 'value': '489', + }, + { + 'label': 'Супергерои', + 'value': '1481', + }, + { + 'label': 'Суперзлодеи', + 'value': '2125', + }, + { + 'label': 'Супермен', + 'value': '6997', + }, + { + 'label': 'Суперсилы', + 'value': '2276', + }, + { + 'label': 'Существа', + 'value': '6033', + }, + { + 'label': 'Сферы', + 'value': '1077', + }, + { + 'label': 'Схемы и заговоры', + 'value': '7116', + }, + { + 'label': 'Сценарий', + 'value': '7489', + }, + { + 'label': 'Счастливый конец', + 'value': '3293', + }, + { + 'label': 'Сын', + 'value': '3297', + }, + { + 'label': 'Сэйнэн', + 'value': '345', + }, + { + 'label': 'Сэм винчестер', + 'value': '7461', + }, + { + 'label': 'Сюаньхуа', + 'value': '2560', + }, + { + 'label': 'Сюжетные повороты', + 'value': '7202', + }, + { + 'label': 'Сянься', + 'value': '1126', + }, + { + 'label': 'Таблетки для развития', + 'value': '589', + }, + { + 'label': 'Таинственное прошлое', + 'value': '769', + }, + { + 'label': 'Тайная личность', + 'value': '8096', + }, + { + 'label': 'Тайная любовь', + 'value': '113', + }, + { + 'label': 'Тайны', + 'value': '7481', + }, + { + 'label': 'Тайные отношения', + 'value': '7450', + }, + { + 'label': 'Тайцы', + 'value': '6413', + }, + { + 'label': 'Танки', + 'value': '1787', + }, + { + 'label': 'Твинцест', + 'value': '2450', + }, + { + 'label': 'Творчество', + 'value': '20', + }, + { + 'label': 'Тейлор эберт', + 'value': '3526', + }, + { + 'label': 'Телекинез', + 'value': '2203', + }, + { + 'label': 'Телепортация', + 'value': '914', + }, + { + 'label': 'Телохранитель', + 'value': '723', + }, + { + 'label': 'Темари', + 'value': '4810', + }, + { + 'label': 'Темная магия', + 'value': '4788', + }, + { + 'label': 'Темное фэнтези', + 'value': '1675', + }, + { + 'label': 'Темные эльфы', + 'value': '7198', + }, + { + 'label': 'Тенсейган', + 'value': '4367', + }, + { + 'label': 'Тентакли', + 'value': '3236', + }, + { + 'label': 'Тетя', + 'value': '4194', + }, + { + 'label': 'Техномагия', + 'value': '508', + }, + { + 'label': 'Тиран', + 'value': '1174', + }, + { + 'label': 'Титаны', + 'value': '3308', + }, + { + 'label': 'Тодороки шото', + 'value': '5105', + }, + { + 'label': 'Токио', + 'value': '5791', + }, + { + 'label': 'Том реддл', + 'value': '6652', + }, + { + 'label': 'Тони старк', + 'value': '1338', + }, + { + 'label': 'Тор', + 'value': '1800', + }, + { + 'label': 'Тор и локи', + 'value': '2645', + }, + { + 'label': 'Торговля', + 'value': '1637', + }, + { + 'label': 'Травничество', + 'value': '221', + }, + { + 'label': 'Трагедия', + 'value': '470', + }, + { + 'label': 'Трагическое прошлое', + 'value': '644', + }, + { + 'label': 'Трактир', + 'value': '1918', + }, + { + 'label': 'Трансмиграция', + 'value': '1071', + }, + { + 'label': 'Трансформация', + 'value': '156', + }, + { + 'label': 'Трансформеры', + 'value': '4616', + }, + { + 'label': 'Тревор филипс', + 'value': '5427', + }, + { + 'label': 'Триллер', + 'value': '1676', + }, + { + 'label': 'Тройняшки', + 'value': '7169', + }, + { + 'label': 'Троли', + 'value': '4250', + }, + { + 'label': 'Трудолюбивый главный герой', + 'value': '248', + }, + { + 'label': 'Тупой главный герой', + 'value': '3710', + }, + { + 'label': 'Тьма', + 'value': '1919', + }, + { + 'label': 'Тюрьма', + 'value': '5597', + }, + { + 'label': 'Тяжёлое детство', + 'value': '2253', + }, + { + 'label': 'Убийства', + 'value': '378', + }, + { + 'label': 'Убийцы', + 'value': '1766', + }, + { + 'label': 'Убийцы драконов', + 'value': '1484', + }, + { + 'label': 'Увечья', + 'value': '3266', + }, + { + 'label': 'Удача', + 'value': '6575', + }, + { + 'label': 'Ужасы', + 'value': '1747', + }, + { + 'label': 'Узумаки', + 'value': '7579', + }, + { + 'label': 'Укротитель', + 'value': '367', + }, + { + 'label': 'Умения', + 'value': '531', + }, + { + 'label': 'Умная главная героиня', + 'value': '1381', + }, + { + 'label': 'Умные персонажи', + 'value': '2756', + }, + { + 'label': 'Умный главный герой', + 'value': '2093', + }, + { + 'label': 'Университет', + 'value': '2102', + }, + { + 'label': 'Унижение', + 'value': '8342', + }, + { + 'label': 'Уничтожение мира', + 'value': '81', + }, + { + 'label': 'Управление временем', + 'value': '5648', + }, + { + 'label': 'Уровни', + 'value': '8', + }, + { + 'label': 'Усиление', + 'value': '3549', + }, + { + 'label': 'Усопп', + 'value': '6737', + }, + { + 'label': 'Устроенный брак', + 'value': '2223', + }, + { + 'label': 'Усыновление', + 'value': '395', + }, + { + 'label': 'Уся', + 'value': '1172', + }, + { + 'label': 'Утопия', + 'value': '4677', + }, + { + 'label': 'Уход за детьми', + 'value': '7609', + }, + { + 'label': 'Учеба в университете', + 'value': '2797', + }, + { + 'label': 'Учебное заведение', + 'value': '1817', + }, + { + 'label': 'Ученые', + 'value': '1843', + }, + { + 'label': 'Учитель', + 'value': '845', + }, + { + 'label': 'Учиха', + 'value': '5348', + }, + { + 'label': 'Фамильяры', + 'value': '1471', + }, + { + 'label': 'Фанатичная любовь', + 'value': '6721', + }, + { + 'label': 'Фанаты', + 'value': '7739', + }, + { + 'label': 'Фантастика', + 'value': '286', + }, + { + 'label': 'Фантастический мир', + 'value': '2414', + }, + { + 'label': 'Фанфик', + 'value': '767', + }, + { + 'label': 'Фармацевт', + 'value': '1706', + }, + { + 'label': 'Фашисты', + 'value': '3118', + }, + { + 'label': 'Феи', + 'value': '7185', + }, + { + 'label': 'Фелляция', + 'value': '5880', + }, + { + 'label': 'Феминизм', + 'value': '6527', + }, + { + 'label': 'Феникс', + 'value': '2413', + }, + { + 'label': 'Фенрир', + 'value': '2740', + }, + { + 'label': 'Феодализм', + 'value': '280', + }, + { + 'label': 'Ферма', + 'value': '285', + }, + { + 'label': 'Фетиш', + 'value': '2398', + }, + { + 'label': 'Фехтовальщик', + 'value': '4685', + }, + { + 'label': 'Филиппины', + 'value': '128', + }, + { + 'label': 'Философия', + 'value': '1859', + }, + { + 'label': 'Фистинг', + 'value': '4206', + }, + { + 'label': 'Флафф', + 'value': '5048', + }, + { + 'label': 'Флер делакур', + 'value': '5191', + }, + { + 'label': 'Флэш', + 'value': '4667', + }, + { + 'label': 'Фокусник', + 'value': '7602', + }, + { + 'label': 'Фольклор', + 'value': '4086', + }, + { + 'label': 'Фугаку', + 'value': '6161', + }, + { + 'label': 'Фурри', + 'value': '6631', + }, + { + 'label': 'Футбол', + 'value': '1121', + }, + { + 'label': 'Фэнтези', + 'value': '174', + }, + { + 'label': 'Фэнтезийный мир', + 'value': '1556', + }, + { + 'label': 'Хакер', + 'value': '475', + }, + { + 'label': 'Халк', + 'value': '1196', + }, + { + 'label': 'Хан нуньен синг', + 'value': '4817', + }, + { + 'label': 'Ханма юджиро', + 'value': '4369', + }, + { + 'label': 'Хаос', + 'value': '3117', + }, + { + 'label': 'Харизматичный главный герой', + 'value': '2350', + }, + { + 'label': 'Хатаке какаши', + 'value': '2820', + }, + { + 'label': 'Хентай', + 'value': '1682', + }, + { + 'label': 'Хиддлстон', + 'value': '5903', + }, + { + 'label': 'Химавари', + 'value': '2583', + }, + { + 'label': 'Хината', + 'value': '2513', + }, + { + 'label': 'Хитрый главный герой', + 'value': '2036', + }, + { + 'label': 'Хоббит', + 'value': '6698', + }, + { + 'label': 'Хогвартс', + 'value': '5954', + }, + { + 'label': 'Холодная главная героиня', + 'value': '6507', + }, + { + 'label': 'Холодное оружие', + 'value': '4889', + }, + { + 'label': 'Холодный главный герой', + 'value': '2686', + }, + { + 'label': 'Храм', + 'value': '2135', + }, + { + 'label': 'Христианство', + 'value': '877', + }, + { + 'label': 'Художественная литература', + 'value': '2380', + }, + { + 'label': 'Художница', + 'value': '518', + }, + { + 'label': 'Хулиганы', + 'value': '854', + }, + { + 'label': 'Цветок', + 'value': '902', + }, + { + 'label': 'Цезарь', + 'value': '1705', + }, + { + 'label': 'Целители', + 'value': '4523', + }, + { + 'label': 'Церковь', + 'value': '1980', + }, + { + 'label': 'Цундере', + 'value': '1078', + }, + { + 'label': 'Чакра', + 'value': '1393', + }, + { + 'label': 'Черный юмор', + 'value': '2868', + }, + { + 'label': 'Честная главная героиня', + 'value': '5855', + }, + { + 'label': 'Честный главный герой', + 'value': '129', + }, + { + 'label': 'Читы', + 'value': '451', + }, + { + 'label': 'Шантаж', + 'value': '7175', + }, + { + 'label': 'Шаринган', + 'value': '5165', + }, + { + 'label': 'Шинигами', + 'value': '4661', + }, + { + 'label': 'Шиноби', + 'value': '1227', + }, + { + 'label': 'Школьная жизнь', + 'value': '284', + }, + { + 'label': 'Школьники', + 'value': '218', + }, + { + 'label': 'Школьницы', + 'value': '5946', + }, + { + 'label': 'Шлюха', + 'value': '5822', + }, + { + 'label': 'Шоу-бизнес', + 'value': '7119', + }, + { + 'label': 'Шпионы', + 'value': '4262', + }, + { + 'label': 'Эволюция', + 'value': '2040', + }, + { + 'label': 'Экзорцизм', + 'value': '676', + }, + { + 'label': 'Экономика', + 'value': '121', + }, + { + 'label': 'Эксгибиционизм', + 'value': '1643', + }, + { + 'label': 'Экспансия', + 'value': '110', + }, + { + 'label': 'Эксперименты над людьми', + 'value': '7408', + }, + { + 'label': 'Экшен', + 'value': '2859', + }, + { + 'label': 'Элементальная магия', + 'value': '1264', + }, + { + 'label': 'Элементы бдсм', + 'value': '1323', + }, + { + 'label': 'Эльфы', + 'value': '1362', + }, + { + 'label': 'Эротика', + 'value': '2053', + }, + { + 'label': 'Этти', + 'value': '1317', + }, + { + 'label': 'Юмор', + 'value': '7360', + }, + { + 'label': 'Яды', + 'value': '201', + }, + { + 'label': 'Якудза', + 'value': '4599', + }, + { + 'label': 'Яндере', + 'value': '7111', + }, + { + 'label': 'Bl', + 'value': '8282', + }, + { + 'label': 'Gl', + 'value': '8284', + }, + { + 'label': 'Rpg', + 'value': '90', + }, + { + 'label': 'Star wars', + 'value': '1985', + }, + { + 'label': 'Time skip', + 'value': '824', + }, + { + 'label': 'Warrior of light', + 'value': '5289', + }, + { + 'label': '12+', + 'value': '3316', + }, + { + 'label': '16+', + 'value': '83', + }, + { + 'label': '18+', + 'value': '1749', + }, + { + 'label': '21+', + 'value': '3191', + }, + ], + inputType: FilterInputs.Checkbox, + }, + ], +); + +const ErolateScraper = new MultiSrcScraper( + 148, + 'https://erolate.com', + 'Erolate', + [ + { + key: 'genres', + label: 'Жанры', + values: [ + { + 'label': 'Ahegao', + 'value': '1', + }, + { + 'label': 'Анал', + 'value': '2', + }, + { + 'label': 'Бдсм', + 'value': '3', + }, + { + 'label': 'Большая грудь', + 'value': '5', + }, + { + 'label': 'Большая попка', + 'value': '6', + }, + { + 'label': 'Большой член', + 'value': '7', + }, + { + 'label': 'Бондаж', + 'value': '8', + }, + { + 'label': 'В первый раз', + 'value': '9', + }, + { + 'label': 'В цвете', + 'value': '10', + }, + { + 'label': 'Гарем', + 'value': '11', + }, + { + 'label': 'Гендарная интрига', + 'value': '12', + }, + { + 'label': 'Групповой секс', + 'value': '13', + }, + { + 'label': 'Детектив', + 'value': '39', + }, + { + 'label': 'Драма', + 'value': '14', + }, + { + 'label': 'Зрелые женщины (milf)', + 'value': '15', + }, + { + 'label': 'Измена', + 'value': '16', + }, + { + 'label': 'Изнасилование', + 'value': '17', + }, + { + 'label': 'Инцест', + 'value': '18', + }, + { + 'label': 'Исторический', + 'value': '19', + }, + { + 'label': 'Комедия', + 'value': '20', + }, + { + 'label': 'Контроль над разумом', + 'value': '35', + }, + { + 'label': 'Маленькая грудь', + 'value': '21', + }, + { + 'label': 'Мистика', + 'value': '40', + }, + { + 'label': 'Научная фантастика', + 'value': '22', + }, + { + 'label': 'Нетораре', + 'value': '23', + }, + { + 'label': 'Оральный секс', + 'value': '24', + }, + { + 'label': 'Повседневность', + 'value': '41', + }, + { + 'label': 'Приключения', + 'value': '38', + }, + { + 'label': 'Публичный секс', + 'value': '33', + }, + { + 'label': 'Романтика', + 'value': '25', + }, + { + 'label': 'С изображениями', + 'value': '36', + }, + { + 'label': 'Сверхъестественное', + 'value': '34', + }, + { + 'label': 'Смат', + 'value': '37', + }, + { + 'label': 'Тентакли', + 'value': '26', + }, + { + 'label': 'Трагедия', + 'value': '27', + }, + { + 'label': 'Ужасы', + 'value': '28', + }, + { + 'label': 'Фантастика', + 'value': '32', + }, + { + 'label': 'Фэнтези', + 'value': '29', + }, + { + 'label': 'Чикан', + 'value': '30', + }, + { + 'label': 'Этти', + 'value': '31', + }, + ], + inputType: FilterInputs.Checkbox, + }, + { + key: 'tags', + label: 'Тэги', + values: [ + { + 'label': 'Адекватные главные герои', + 'value': '253', + }, + { + 'label': 'Азартные игры', + 'value': '210', + }, + { + 'label': 'Айдолы', + 'value': '364', + }, + { + 'label': 'Акула', + 'value': '53', + }, + { + 'label': 'Альтернативное развитие событий', + 'value': '338', + }, + { + 'label': 'Аморальный главный герой', + 'value': '219', + }, + { + 'label': 'Анал', + 'value': '7', + }, + { + 'label': 'Анальный секс', + 'value': '67', + }, + { + 'label': 'Ангелы', + 'value': '114', + }, + { + 'label': 'Антигерой', + 'value': '226', + }, + { + 'label': 'Аристократия', + 'value': '260', + }, + { + 'label': 'Артефакт', + 'value': '379', + }, + { + 'label': 'Афродизиак', + 'value': '276', + }, + { + 'label': 'Ахегао', + 'value': '240', + }, + { + 'label': 'Бабушка и внук', + 'value': '380', + }, + { + 'label': 'Бдсм', + 'value': '131', + }, + { + 'label': 'Беременность', + 'value': '148', + }, + { + 'label': 'Бесплатно', + 'value': '79', + }, + { + 'label': 'Бесстрашные персонажи', + 'value': '339', + }, + { + 'label': 'Библиотека', + 'value': '265', + }, + { + 'label': 'Близнецы', + 'value': '198', + }, + { + 'label': 'Блондинка', + 'value': '91', + }, + { + 'label': 'Богатые персонажи', + 'value': '248', + }, + { + 'label': 'Боги', + 'value': '115', + }, + { + 'label': 'Боевик', + 'value': '252', + }, + { + 'label': 'Большая грудь', + 'value': '33', + }, + { + 'label': 'Большая попка', + 'value': '328', + }, + { + 'label': 'Большой член', + 'value': '76', + }, + { + 'label': 'Босс и подчиненный', + 'value': '330', + }, + { + 'label': 'Брак', + 'value': '182', + }, + { + 'label': 'Брак по расчёту', + 'value': '346', + }, + { + 'label': 'Брат', + 'value': '29', + }, + { + 'label': 'Брат и сестра', + 'value': '30', + }, + { + 'label': 'Брюнетка', + 'value': '28', + }, + { + 'label': 'Бэтмен', + 'value': '369', + }, + { + 'label': 'Бэтмен', + 'value': '170', + }, + { + 'label': 'В первый раз', + 'value': '179', + }, + { + 'label': 'Вагинальный секс', + 'value': '57', + }, + { + 'label': 'Вагинальный секс', + 'value': '171', + }, + { + 'label': 'Вайурист', + 'value': '9', + }, + { + 'label': 'Вампиры', + 'value': '133', + }, + { + 'label': 'Ван-пис', + 'value': '335', + }, + { + 'label': 'Веб камера', + 'value': '289', + }, + { + 'label': 'Ведьмы', + 'value': '232', + }, + { + 'label': 'Викинги', + 'value': '307', + }, + { + 'label': 'Виртуальная реальность', + 'value': '382', + }, + { + 'label': 'Вирус', + 'value': '203', + }, + { + 'label': 'Внучка', + 'value': '189', + }, + { + 'label': 'Время', + 'value': '81', + }, + { + 'label': 'Второй шанс', + 'value': '244', + }, + { + 'label': 'Вуайеризм', + 'value': '62', + }, + { + 'label': 'Выживание', + 'value': '135', + }, + { + 'label': 'Гарем', + 'value': '107', + }, + { + 'label': 'Гарри поттер', + 'value': '97', + }, + { + 'label': 'Гг имба', + 'value': '87', + }, + { + 'label': 'Генетические модификации', + 'value': '314', + }, + { + 'label': 'Гипноз', + 'value': '143', + }, + { + 'label': 'Главная героиня девушка', + 'value': '147', + }, + { + 'label': 'Главный герой женщина', + 'value': '213', + }, + { + 'label': 'Главный герой извращенец', + 'value': '116', + }, + { + 'label': 'Главный герой мужчина', + 'value': '117', + }, + { + 'label': 'Глубокое горло', + 'value': '94', + }, + { + 'label': 'Гоблины', + 'value': '230', + }, + { + 'label': 'Город', + 'value': '139', + }, + { + 'label': 'Городское фэнтези', + 'value': '297', + }, + { + 'label': 'Грудное молоко', + 'value': '225', + }, + { + 'label': 'Групповой секс', + 'value': '72', + }, + { + 'label': 'Гэнг-бэнг', + 'value': '235', + }, + { + 'label': 'Гяру', + 'value': '222', + }, + { + 'label': 'Двойное проникновение', + 'value': '42', + }, + { + 'label': 'Двойной анал', + 'value': '47', + }, + { + 'label': 'Дворяне', + 'value': '246', + }, + { + 'label': 'Деамоны старший школы', + 'value': '291', + }, + { + 'label': 'Девственница', + 'value': '119', + }, + { + 'label': 'Девушки-монстры', + 'value': '223', + }, + { + 'label': 'Демоны', + 'value': '98', + }, + { + 'label': 'Детектив', + 'value': '249', + }, + { + 'label': 'Дзёсэй', + 'value': '259', + }, + { + 'label': 'Доктор', + 'value': '326', + }, + { + 'label': 'Дом', + 'value': '138', + }, + { + 'label': 'Доминирование', + 'value': '18', + }, + { + 'label': 'Дочь', + 'value': '153', + }, + { + 'label': 'Дочь беременна от отца', + 'value': '348', + }, + { + 'label': 'Древние времена', + 'value': '383', + }, + { + 'label': 'Древний китай', + 'value': '261', + }, + { + 'label': 'Другой мир', + 'value': '365', + }, + { + 'label': 'Дружба', + 'value': '325', + }, + { + 'label': 'Друзья детства', + 'value': '183', + }, + { + 'label': 'Дядя', + 'value': '160', + }, + { + 'label': 'Жена', + 'value': '70', + }, + { + 'label': 'Жена и муж', + 'value': '99', + }, + { + 'label': 'Жена шлюха', + 'value': '236', + }, + { + 'label': 'Женское доминирование', + 'value': '100', + }, + { + 'label': 'Жесткий секс', + 'value': '283', + }, + { + 'label': 'Жёсткий секс', + 'value': '101', + }, + { + 'label': 'Жестокие персонажи', + 'value': '254', + }, + { + 'label': 'Жестокий мир', + 'value': '336', + }, + { + 'label': 'Жестокость', + 'value': '123', + }, + { + 'label': 'Заботливый главный герой', + 'value': '340', + }, + { + 'label': 'Зависимость', + 'value': '370', + }, + { + 'label': 'Заключение', + 'value': '196', + }, + { + 'label': 'Заключённые', + 'value': '384', + }, + { + 'label': 'Замок', + 'value': '140', + }, + { + 'label': 'Запретная любовь', + 'value': '273', + }, + { + 'label': 'Заражение', + 'value': '206', + }, + { + 'label': 'Звёздные войны', + 'value': '120', + }, + { + 'label': 'Зверодевочки', + 'value': '158', + }, + { + 'label': 'Зло', + 'value': '343', + }, + { + 'label': 'Золовка', + 'value': '77', + }, + { + 'label': 'Золотой дождь', + 'value': '146', + }, + { + 'label': 'Зомби апокалипсис', + 'value': '241', + }, + { + 'label': 'Зоофилия', + 'value': '144', + }, + { + 'label': 'Игровые элементы', + 'value': '385', + }, + { + 'label': 'Извращения', + 'value': '192', + }, + { + 'label': 'Измена', + 'value': '71', + }, + { + 'label': 'Изменения внешности', + 'value': '315', + }, + { + 'label': 'Изменения личности', + 'value': '316', + }, + { + 'label': 'Изнасилование', + 'value': '275', + }, + { + 'label': 'Изуку мидория', + 'value': '337', + }, + { + 'label': 'Ино', + 'value': '127', + }, + { + 'label': 'Инопланетяне', + 'value': '304', + }, + { + 'label': 'Интересный сюжет', + 'value': '349', + }, + { + 'label': 'Интимные сцены', + 'value': '322', + }, + { + 'label': 'Интриги и заговоры', + 'value': '262', + }, + { + 'label': 'Интроверт', + 'value': '38', + }, + { + 'label': 'Инфекция', + 'value': '207', + }, + { + 'label': 'Инцест', + 'value': '35', + }, + { + 'label': 'Камера', + 'value': '92', + }, + { + 'label': 'Колледж', + 'value': '82', + }, + { + 'label': 'Комикс', + 'value': '286', + }, + { + 'label': 'Контроль', + 'value': '19', + }, + { + 'label': 'Контроль над разумом', + 'value': '181', + }, + { + 'label': 'Контроль разума', + 'value': '65', + }, + { + 'label': 'Кончил внутрь', + 'value': '221', + }, + { + 'label': 'Королевская семья', + 'value': '358', + }, + { + 'label': 'Коррупция', + 'value': '49', + }, + { + 'label': 'Космос', + 'value': '204', + }, + { + 'label': 'Красивая главная героиня', + 'value': '255', + }, + { + 'label': 'Красивые женщины', + 'value': '321', + }, + { + 'label': 'Красивый главный герой', + 'value': '266', + }, + { + 'label': 'Кулинария', + 'value': '362', + }, + { + 'label': 'Культвация', + 'value': '86', + }, + { + 'label': 'Кунилингус', + 'value': '152', + }, + { + 'label': 'Лактация', + 'value': '11', + }, + { + 'label': 'Лишение девственности', + 'value': '212', + }, + { + 'label': 'Лоли', + 'value': '218', + }, + { + 'label': 'Лунатизм', + 'value': '279', + }, + { + 'label': 'Любовь', + 'value': '89', + }, + { + 'label': 'Магический мир', + 'value': '357', + }, + { + 'label': 'Магия', + 'value': '80', + }, + { + 'label': 'Мама', + 'value': '3', + }, + { + 'label': 'Мама беременна от сына', + 'value': '274', + }, + { + 'label': 'Мама и дочь', + 'value': '163', + }, + { + 'label': 'Мама и сын', + 'value': '1', + }, + { + 'label': 'Мама супермена', + 'value': '39', + }, + { + 'label': 'Манипуляция временем', + 'value': '292', + }, + { + 'label': 'Марвел', + 'value': '290', + }, + { + 'label': 'Марвел', + 'value': '173', + }, + { + 'label': 'Марти стью', + 'value': '102', + }, + { + 'label': 'Массаж', + 'value': '224', + }, + { + 'label': 'Мастурбация', + 'value': '63', + }, + { + 'label': 'Мать', + 'value': '239', + }, + { + 'label': 'Мать и дочь', + 'value': '381', + }, + { + 'label': 'Мать и сын', + 'value': '237', + }, + { + 'label': 'Мафия', + 'value': '256', + }, + { + 'label': 'Мачеха', + 'value': '197', + }, + { + 'label': 'Медсестра', + 'value': '341', + }, + { + 'label': 'Межрассовый', + 'value': '54', + }, + { + 'label': 'Месть', + 'value': '306', + }, + { + 'label': 'Меха', + 'value': '268', + }, + { + 'label': 'Ми', + 'value': '243', + }, + { + 'label': 'Милф', + 'value': '34', + }, + { + 'label': 'Милф', + 'value': '180', + }, + { + 'label': 'Минет', + 'value': '52', + }, + { + 'label': 'Мистика', + 'value': '250', + }, + { + 'label': 'Младшая сестра', + 'value': '154', + }, + { + 'label': 'Модель', + 'value': '324', + }, + { + 'label': 'Монстры', + 'value': '333', + }, + { + 'label': 'Мошеничество', + 'value': '44', + }, + { + 'label': 'Мужская беременность', + 'value': '363', + }, + { + 'label': 'Мужчина протагонист', + 'value': '108', + }, + { + 'label': 'Музыка', + 'value': '331', + }, + { + 'label': 'Мэри съюха', + 'value': '309', + }, + { + 'label': 'Наруто', + 'value': '46', + }, + { + 'label': 'Насилие', + 'value': '128', + }, + { + 'label': 'Насилие и жестокость', + 'value': '193', + }, + { + 'label': 'Научный эксперимент', + 'value': '313', + }, + { + 'label': 'Нежить', + 'value': '373', + }, + { + 'label': 'Некромантия', + 'value': '298', + }, + { + 'label': 'Ненормативная лексика', + 'value': '124', + }, + { + 'label': 'Нетораре', + 'value': '69', + }, + { + 'label': 'Нетори', + 'value': '284', + }, + { + 'label': 'Ниндзя', + 'value': '296', + }, + { + 'label': 'Ношеные трусики', + 'value': '166', + }, + { + 'label': 'Нудизм', + 'value': '156', + }, + { + 'label': 'Няня', + 'value': '88', + }, + { + 'label': 'Обмен женами', + 'value': '78', + }, + { + 'label': 'Оборотни', + 'value': '136', + }, + { + 'label': 'Обратный гарем', + 'value': '214', + }, + { + 'label': 'Одержимость', + 'value': '345', + }, + { + 'label': 'Омегаверс', + 'value': '368', + }, + { + 'label': 'Оплодотворение', + 'value': '157', + }, + { + 'label': 'Оральный секс', + 'value': '10', + }, + { + 'label': 'Оргия', + 'value': '356', + }, + { + 'label': 'От слабого к сильному', + 'value': '351', + }, + { + 'label': 'Отец', + 'value': '2', + }, + { + 'label': 'Отец делится с сыном', + 'value': '6', + }, + { + 'label': 'Отец и дочь', + 'value': '205', + }, + { + 'label': 'Отец куколд', + 'value': '272', + }, + { + 'label': 'Офис', + 'value': '234', + }, + { + 'label': 'Падчерица', + 'value': '271', + }, + { + 'label': 'Пайзури', + 'value': '195', + }, + { + 'label': 'Папа и дочь', + 'value': '360', + }, + { + 'label': 'Паразиты', + 'value': '208', + }, + { + 'label': 'Параллельный мир', + 'value': '320', + }, + { + 'label': 'Пародия', + 'value': '371', + }, + { + 'label': 'Первый раз', + 'value': '159', + }, + { + 'label': 'Перемещение в другой мир', + 'value': '347', + }, + { + 'label': 'Перемещение во времени', + 'value': '245', + }, + { + 'label': 'Перерождение', + 'value': '109', + }, + { + 'label': 'Перерождение в злодея', + 'value': '202', + }, + { + 'label': 'Пирсинг', + 'value': '145', + }, + { + 'label': 'Писатель', + 'value': '267', + }, + { + 'label': 'Планомерное развитие событий', + 'value': '350', + }, + { + 'label': 'Повседневность', + 'value': '247', + }, + { + 'label': 'Подглядывание', + 'value': '280', + }, + { + 'label': 'Подчинение', + 'value': '106', + }, + { + 'label': 'Подчинение и унижение', + 'value': '211', + }, + { + 'label': 'Поедание киски', + 'value': '26', + }, + { + 'label': 'Покемоны', + 'value': '132', + }, + { + 'label': 'Покорная', + 'value': '8', + }, + { + 'label': 'Полигамия', + 'value': '352', + }, + { + 'label': 'Половое воспитание', + 'value': '37', + }, + { + 'label': 'Полулюди', + 'value': '231', + }, + { + 'label': 'Попаданец', + 'value': '103', + }, + { + 'label': 'Попадание в книгу', + 'value': '361', + }, + { + 'label': 'Порка', + 'value': '20', + }, + { + 'label': 'Порно', + 'value': '278', + }, + { + 'label': 'Постапокалипсис', + 'value': '332', + }, + { + 'label': 'Потеря девственности', + 'value': '142', + }, + { + 'label': 'Похищение', + 'value': '161', + }, + { + 'label': 'Приключения', + 'value': '134', + }, + { + 'label': 'Принуждение', + 'value': '66', + }, + { + 'label': 'Психология', + 'value': '238', + }, + { + 'label': 'Публично', + 'value': '85', + }, + { + 'label': 'Публичный секс', + 'value': '233', + }, + { + 'label': 'Раб', + 'value': '353', + }, + { + 'label': 'Рабы', + 'value': '308', + }, + { + 'label': 'Разват', + 'value': '58', + }, + { + 'label': 'Разврат', + 'value': '64', + }, + { + 'label': 'Райзен', + 'value': '95', + }, + { + 'label': 'Раса инопланетных космических лесбиянок', + 'value': '294', + }, + { + 'label': 'Рестленг', + 'value': '84', + }, + { + 'label': 'Романтика', + 'value': '178', + }, + { + 'label': 'Рыжий', + 'value': '90', + }, + { + 'label': 'Сакура', + 'value': '126', + }, + { + 'label': 'Самолет', + 'value': '93', + }, + { + 'label': 'Санса старк', + 'value': '277', + }, + { + 'label': 'Санта', + 'value': '372', + }, + { + 'label': 'Свадьба', + 'value': '73', + }, + { + 'label': 'Сверхсила', + 'value': '228', + }, + { + 'label': 'Сверхъестественное', + 'value': '319', + }, + { + 'label': 'Свингеры', + 'value': '201', + }, + { + 'label': 'Свободные отношения', + 'value': '186', + }, + { + 'label': 'Связывание', + 'value': '137', + }, + { + 'label': 'Сёдзе', + 'value': '264', + }, + { + 'label': 'Секс', + 'value': '21', + }, + { + 'label': 'Секс без проникновения', + 'value': '68', + }, + { + 'label': 'Секс втроем', + 'value': '43', + }, + { + 'label': 'Секс игрушки', + 'value': '59', + }, + { + 'label': 'Секс рабыня', + 'value': '55', + }, + { + 'label': 'Секс с монстрами', + 'value': '56', + }, + { + 'label': 'Секс с учителем', + 'value': '184', + }, + { + 'label': 'Секса будет много', + 'value': '151', + }, + { + 'label': 'Сексуальное желание', + 'value': '209', + }, + { + 'label': 'Семья', + 'value': '5', + }, + { + 'label': 'Сестра', + 'value': '31', + }, + { + 'label': 'Сестра беременна от брата', + 'value': '355', + }, + { + 'label': 'Сильный с самого начала', + 'value': '112', + }, + { + 'label': 'Симбиоз', + 'value': '50', + }, + { + 'label': 'Сирена', + 'value': '51', + }, + { + 'label': 'Система', + 'value': '104', + }, + { + 'label': 'Сиськи', + 'value': '285', + }, + { + 'label': 'Сквирт', + 'value': '164', + }, + { + 'label': 'Скрытый секс', + 'value': '287', + }, + { + 'label': 'Служанка', + 'value': '215', + }, + { + 'label': 'Соб', + 'value': '281', + }, + { + 'label': 'Соблазнение', + 'value': '162', + }, + { + 'label': 'Современность', + 'value': '217', + }, + { + 'label': 'Соколиный Глаз', + 'value': '176', + }, + { + 'label': 'Соперничество', + 'value': '216', + }, + { + 'label': 'Соседи', + 'value': '61', + }, + { + 'label': 'Соседка', + 'value': '312', + }, + { + 'label': 'Сперма', + 'value': '229', + }, + { + 'label': 'Сперма на лицо', + 'value': '199', + }, + { + 'label': 'Спящие', + 'value': '187', + }, + { + 'label': 'Старшая сестра', + 'value': '311', + }, + { + 'label': 'Стеб', + 'value': '111', + }, + { + 'label': 'Студенты', + 'value': '177', + }, + { + 'label': 'Супергерои', + 'value': '305', + }, + { + 'label': 'Суперспособности', + 'value': '300', + }, + { + 'label': 'Сын', + 'value': '4', + }, + { + 'label': 'Твинцест', + 'value': '188', + }, + { + 'label': 'Темное фэнтези', + 'value': '293', + }, + { + 'label': 'Тентакли', + 'value': '303', + }, + { + 'label': 'Тетя', + 'value': '113', + }, + { + 'label': 'Тетя беременна от племянника', + 'value': '376', + }, + { + 'label': 'Тетя и племянник', + 'value': '377', + }, + { + 'label': 'Техника', + 'value': '302', + }, + { + 'label': 'Технологии', + 'value': '301', + }, + { + 'label': 'Тёща', + 'value': '270', + }, + { + 'label': 'Тиран', + 'value': '310', + }, + { + 'label': 'Трагическое прошлое', + 'value': '251', + }, + { + 'label': 'Трансмиграция', + 'value': '269', + }, + { + 'label': 'Трансформация', + 'value': '317', + }, + { + 'label': 'Триллер', + 'value': '344', + }, + { + 'label': 'Трусики', + 'value': '165', + }, + { + 'label': 'Убийства', + 'value': '258', + }, + { + 'label': 'Удача', + 'value': '299', + }, + { + 'label': 'Ужасы', + 'value': '375', + }, + { + 'label': 'Улучшение тела', + 'value': '288', + }, + { + 'label': 'Умная главная героиня', + 'value': '242', + }, + { + 'label': 'Умные персонажи', + 'value': '257', + }, + { + 'label': 'Умный главный герой', + 'value': '354', + }, + { + 'label': 'Университет', + 'value': '323', + }, + { + 'label': 'Ученик', + 'value': '83', + }, + { + 'label': 'Ф', + 'value': '149', + }, + { + 'label': 'Фанатичная любовь', + 'value': '366', + }, + { + 'label': 'Фанаты', + 'value': '367', + }, + { + 'label': 'Фантастика', + 'value': '295', + }, + { + 'label': 'Фанфик', + 'value': '40', + }, + { + 'label': 'Фелляция', + 'value': '22', + }, + { + 'label': 'Ферма', + 'value': '191', + }, + { + 'label': 'Фетиш', + 'value': '60', + }, + { + 'label': 'Флэш', + 'value': '121', + }, + { + 'label': 'Футанария', + 'value': '150', + }, + { + 'label': 'Фэнтези', + 'value': '359', + }, + { + 'label': 'Хентай', + 'value': '75', + }, + { + 'label': 'Хината', + 'value': '110', + }, + { + 'label': 'Холодная главная героиня', + 'value': '263', + }, + { + 'label': 'Черная вдова', + 'value': '220', + }, + { + 'label': 'Черная Вдова', + 'value': '175', + }, + { + 'label': 'Черный юмор', + 'value': '374', + }, + { + 'label': 'Читерство', + 'value': '45', + }, + { + 'label': 'Чтение мыслей', + 'value': '227', + }, + { + 'label': 'Чудовища', + 'value': '378', + }, + { + 'label': 'Шантаж', + 'value': '129', + }, + { + 'label': 'Школа', + 'value': '118', + }, + { + 'label': 'Школьная жизнь', + 'value': '318', + }, + { + 'label': 'Шлюха', + 'value': '32', + }, + { + 'label': 'Шоу-бизнес', + 'value': '329', + }, + { + 'label': 'Шоу-бизнес', + 'value': '172', + }, + { + 'label': 'Эксгибиционизм', + 'value': '74', + }, + { + 'label': 'Элементы бдсм', + 'value': '185', + }, + { + 'label': 'Эмма уотсон', + 'value': '342', + }, + { + 'label': 'Эмма Уотсон', + 'value': '169', + }, + { + 'label': 'Эротика', + 'value': '36', + }, + { + 'label': 'Этти', + 'value': '327', + }, + { + 'label': 'Юмор', + 'value': '105', + }, + { + 'label': 'Яндере', + 'value': '155', + }, + { + 'label': 'Bl', + 'value': '125', + }, + { + 'label': 'Gl', + 'value': '96', + }, + { + 'label': 'Harry potter', + 'value': '190', + }, + { + 'label': 'Harry potter', + 'value': '168', + }, + { + 'label': 'Hentai', + 'value': '282', + }, + { + 'label': 'Marvel', + 'value': '194', + }, + { + 'label': 'Marvel', + 'value': '174', + }, + { + 'label': 'Milf', + 'value': '167', + }, + { + 'label': '+18', + 'value': '141', + }, + { + 'label': '18+', + 'value': '200', + }, + { + 'label': '21+', + 'value': '334', + }, + ], + inputType: FilterInputs.Checkbox, + }, + ], +); + +export { RulateScraper, ErolateScraper }; diff --git a/src/sources/multisrc/rulate/RulateScraper.js b/src/sources/multisrc/rulate/RulateScraper.js new file mode 100644 index 00000000..a70f6cd0 --- /dev/null +++ b/src/sources/multisrc/rulate/RulateScraper.js @@ -0,0 +1,282 @@ +import { FilterInputs } from '../../types/filterTypes'; +import { htmlToText } from '../../helpers/htmlToText'; +import { Status } from '../../helpers/constants'; +import * as cheerio from 'cheerio'; +import { defaultTo } from 'lodash-es'; + +class RulateScraper { + constructor(sourceId, baseUrl, sourceName, filter) { + this.sourceId = sourceId; + this.baseUrl = baseUrl; + this.sourceName = sourceName; + this.filters = [ + { + key: 'sort', + label: 'Сортировка', + values: [ + { label: 'По рейтингу', value: '6' }, + { label: 'По степени готовности', value: '0' }, + { label: 'По названию на языке оригинала', value: '1' }, + { label: 'По названию на языке перевода', value: '2' }, + { label: 'По дате создания', value: '3' }, + { label: 'По дате последней активности', value: '4' }, + { label: 'По просмотрам', value: '5' }, + { label: 'По кол-ву переведённых глав', value: '7' }, + { label: 'По кол-ву лайков', value: '8' }, + { label: 'По кол-ву страниц', value: '10' }, + { label: 'По кол-ву бесплатных глав', value: '11' }, + { label: 'По кол-ву рецензий', value: '12' }, + { label: 'По кол-ву в закладках', value: '13' }, + { label: 'По кол-ву в избранном', value: '14' }, + ], + inputType: FilterInputs.Picker, + }, + { + key: 'type', + label: 'Тип', + values: [ + { label: 'Неважно', value: '0' }, + { label: 'Только переводы', value: '1' }, + { label: 'Только авторские', value: '2' }, + ], + inputType: FilterInputs.Picker, + }, + { + key: 'atmosphere', + label: 'Атмосфера', + values: [ + { label: 'Неважно', value: '0' }, + { label: 'Позитивная', value: '1' }, + { label: 'Dark', value: '2' }, + ], + inputType: FilterInputs.Picker, + }, + { + key: 'trash', + label: 'Другое', + values: [ + { label: 'Готовые на 100%', value: 'ready' }, + { label: 'Доступные для перевода', value: 'tr' }, + { label: 'Доступные для скачивания', value: 'gen' }, + { label: 'Завершённые проекты', value: 'wealth' }, + { label: 'Распродажа', value: 'discount' }, + { label: 'Только онгоинги', value: 'ongoings' }, + { label: 'Убрать машинный', value: 'remove_machinelate' }, + ], + inputType: FilterInputs.Checkbox, + }, + ...filter, + { + key: 'adult', + label: 'Возрастные ограничения', + values: [ + { label: 'Все', value: '0' }, + { label: 'Убрать 18+', value: '1' }, + { label: 'Только 18+', value: '2' }, + ], + inputType: FilterInputs.Picker, + }, + ]; + } + + async popularNovels(page, { showLatestNovels, filters }) { + const baseUrl = this.baseUrl; + const sourceId = this.sourceId; + let url = baseUrl + '/search?t=&cat=2'; + url += '&sort=' + defaultTo(filters?.sort, showLatestNovels ? '4' : '6'); + url += '&type=' + defaultTo(filters?.type, '0'); + url += '&atmosphere=' + defaultTo(filters?.atmosphere, '0'); + url += '&adult=' + defaultTo(filters?.adult, '0'); + + if (filters?.genres?.length) { + url += filters.genres.map(i => `&genres[]=${i}`).join(''); + } + + if (filters?.tags?.length) { + url += filters.tags.map(i => `&tags[]=${i}`).join(''); + } + + if (filters?.trash?.length) { + url += filters.trash.map(i => `&${i}=1`); + } + + url += `&Book_page=${page}`; + + const result = await fetch(url); + const body = await result.text(); + const loadedCheerio = cheerio.load(body); + + let novels = []; + + loadedCheerio( + 'ul[class="search-results"] > li:not([class="ad_type_catalog"])', + ).each(function () { + novels.push({ + sourceId, + novelName: loadedCheerio(this).find('p > a').text(), + novelCover: baseUrl + loadedCheerio(this).find('img').attr('src'), + novelUrl: loadedCheerio(this).find('p > a').attr('href'), + }); + }); + + return { novels }; + } + + async parseNovelAndChapters(novelUrl) { + let result = await fetch(this.baseUrl + novelUrl); + if (result.url.includes('mature?path=')) { + const formData = new FormData(); + formData.append('path', novelUrl); + formData.append('ok', 'Да'); + + await fetch(result.url, { + method: 'POST', + body: formData, + }); + + result = await fetch(this.baseUrl + novelUrl); + } + const body = await result.text(); + const loadedCheerio = cheerio.load(body); + + let novel = { + sourceId: this.sourceId, + sourceName: this.sourceName, + url: this.baseUrl + novelUrl, + novelUrl, + }; + + novel.novelName = loadedCheerio('div[class="container"] > div > div > h1') + .text() + .trim(); + novel.novelCover = + this.baseUrl + loadedCheerio('div[class="images"] > div img').attr('src'); + novel.summary = loadedCheerio('#Info > div:nth-child(3)').html(); + let genre = []; + + if (novel?.summary) { + novel.summary = htmlToText(novel.summary); + } + + loadedCheerio('div[class="span5"] > p').each(function () { + switch (loadedCheerio(this).find('strong').text()) { + case 'Автор:': + novel.author = loadedCheerio(this).find('em > a').text().trim(); + break; + case 'Выпуск:': + novel.status = + loadedCheerio(this).find('em').text().trim() === 'продолжается' + ? Status.ONGOING + : Status.COMPLETED; + break; + case 'Тэги:': + loadedCheerio(this) + .find('em > a') + .each(function () { + genre.push(loadedCheerio(this).text()); + }); + break; + case 'Жанры:': + loadedCheerio(this) + .find('em > a') + .each(function () { + genre.push(loadedCheerio(this).text()); + }); + break; + } + }); + + if (genre.length > 0) { + novel.genre = genre.reverse().join(','); + } + + let chapters = []; + loadedCheerio('table > tbody > tr.chapter_row').each(function () { + const chapterName = loadedCheerio(this) + .find('td[class="t"] > a') + .text() + .trim(); + const releaseDate = loadedCheerio(this) + .find('td > span') + .attr('title') + ?.trim(); + const chapterUrl = loadedCheerio(this) + .find('td[class="t"] > a') + .attr('href'); + + if ( + loadedCheerio(this).find('td > span[class="disabled"]').length < 1 && + releaseDate + ) { + chapters.push({ chapterName, releaseDate, chapterUrl }); + } + }); + + novel.chapters = chapters; + return novel; + } + + async parseChapter(novelUrl, chapterUrl) { + const baseUrl = this.baseUrl; + const sourceId = this.sourceId; + let result = await fetch(baseUrl + chapterUrl); + if (result.url.includes('mature?path=')) { + const formData = new FormData(); + formData.append('path', novelUrl); + formData.append('ok', 'Да'); + + await fetch(result.url, { + method: 'POST', + body: formData, + }); + + result = await fetch(baseUrl + chapterUrl); + } + const body = await result.text(); + const loadedCheerio = cheerio.load(body); + + loadedCheerio('.content-text img').each(function () { + if (!loadedCheerio(this).attr('src')?.startsWith('http')) { + let src = loadedCheerio(this).attr('src'); + loadedCheerio(this).attr('src', baseUrl + src); + } + }); + + const chapterName = loadedCheerio( + '.chapter_select > select > option[selected]', + ) + .text() + .trim(); + const chapterText = loadedCheerio('.content-text').html(); + + const chapter = { + sourceId, + novelUrl, + chapterUrl, + chapterName, + chapterText, + }; + + return chapter; + } + + async searchNovels(searchTerm) { + const result = await fetch( + this.baseUrl + '/search/autocomplete?query=' + searchTerm, + ); + let json = await result.json(); + let novels = []; + + json.forEach(item => { + const novelName = item.title_one + ' / ' + item.title_two; + const novelCover = this.baseUrl + item.img; + const novelUrl = item.url; + + novels.push({ sourceId: this.sourceId, novelName, novelCover, novelUrl }); + }); + + return novels; + } +} + +export default RulateScraper; diff --git a/src/sources/ru/jaomix.js b/src/sources/ru/jaomix.js index 2c2b875b..39217a38 100644 --- a/src/sources/ru/jaomix.js +++ b/src/sources/ru/jaomix.js @@ -9,7 +9,7 @@ const sourceName = 'Jaomix'; const baseUrl = 'https://jaomix.ru'; const popularNovels = async (page, { showLatestNovels, filters }) => { - let url = baseUrl + '/?search=&sortby='; + let url = baseUrl + '/?searchrn&sortby='; url += defaultTo(filters?.sort, showLatestNovels ? 'upd' : 'count'); if (filters?.type?.length) { @@ -110,7 +110,7 @@ const parseChapter = async (novelUrl, chapterUrl) => { }; const searchNovels = async searchTerm => { - const url = `${baseUrl}/?search=${searchTerm}&but=%D0%9F%D0%BE%D0%B8%D1%81%D0%BA+%D0%BF%D0%BE+%D0%BD%D0%B0%D0%B7%D0%B2%D0%B0%D0%BD%D0%B8%D1%8E&sortby=new`; + const url = `${baseUrl}/?searchrn=${searchTerm}&but=Поиск по названию&sortby=upd`; const result = await fetch(url); let body = await result.text(); const loadedCheerio = cheerio.load(body); diff --git a/src/sources/ru/ranobehub.js b/src/sources/ru/ranobehub.js index 71362a49..4e9f5d8e 100644 --- a/src/sources/ru/ranobehub.js +++ b/src/sources/ru/ranobehub.js @@ -85,8 +85,8 @@ const parseNovelAndChapters = async novelUrl => { const chaptersRaw = await fetch(fetchChaptersUrl); const chaptersJSON = await chaptersRaw.json(); - chaptersJSON.volumes.map(volume => - volume.chapters.map(chapter => + chaptersJSON.volumes.forEach(volume => + volume.chapters.forEach(chapter => novelChapters.push({ chapterName: chapter.name, chapterUrl: chapter.url, @@ -153,7 +153,7 @@ const searchNovels = async searchTerm => { data .find(item => item.meta.key === 'ranobe') - ?.data.map(novel => + ?.data.forEach(novel => novels.push({ sourceId, novelName: novel.names.rus, diff --git a/src/sources/ru/ranobelib.js b/src/sources/ru/ranobelib.js index 768bc688..b5cd7f80 100644 --- a/src/sources/ru/ranobelib.js +++ b/src/sources/ru/ranobelib.js @@ -8,6 +8,7 @@ const sourceId = 93; const sourceName = 'RanobeLib'; const baseUrl = 'https://ranobelib.me'; +var ui = null; const popularNovels = async (page, { showLatestNovels, filters }) => { let url = `${baseUrl}/manga-list?sort=`; @@ -46,6 +47,9 @@ const popularNovels = async (page, { showLatestNovels, filters }) => { const body = await result.text(); const loadedCheerio = cheerio.load(body); + ui = loadedCheerio('a.header-right-menu__item') + .attr('href') + ?.replace?.(/[^0-9]/g, ''); let novels = []; @@ -122,25 +126,25 @@ const parseNovelAndChapters = async novelUrl => { ?.slice(0, -1); chaptersJson = JSON.parse(chaptersJson); + ui = chaptersJson?.user?.id; - const novelSlug = chaptersJson.manga.slug; - - chaptersJson.chapters.list.map(item => { - const chapterName = - `Том ${item.chapter_volume} Глава ${item.chapter_number} ${item.chapter_name}`?.trim(); - const releaseDate = dayjs(item.chapter_created_at).format('LLL'); - const chapterUrl = `${baseUrl}/${novelSlug}/v${item.chapter_volume}/c${item.chapter_number}`; - - chapters.push({ chapterName, releaseDate, chapterUrl }); + chaptersJson.chapters.list.forEach(chapter => { + chapters.push({ + chapterName: + `Том ${chapter.chapter_volume} Глава ${chapter.chapter_number} ${chapter.chapter_name}`?.trim(), + releaseDate: dayjs(chapter.chapter_created_at).format('LLL'), + chapterUrl: + `${baseUrl}/${chaptersJson.manga.slug}/v${chapter.chapter_volume}/c${chapter.chapter_number}?bid=` + + (chapter?.branch_id || ''), + }); }); novel.chapters = chapters.reverse(); - return novel; }; const parseChapter = async (novelUrl, chapterUrl) => { - const result = await fetch(chapterUrl); + const result = await fetch(chapterUrl + (ui ? `&ui=${ui}` : '')); const body = await result.text(); const loadedCheerio = cheerio.load(body); @@ -179,7 +183,7 @@ const searchNovels = async searchTerm => { const body = await result.json(); let novels = []; - body.map(novel => { + body.forEach(novel => { const novelName = novel?.rus_name || novel.name; const novelUrl = novel?.href || baseUrl + '/' + novel.slug; const novelCover = novel.coverImage; diff --git a/src/sources/ru/ranoberf.js b/src/sources/ru/ranoberf.js index cf0b4e44..7e3f5e4a 100644 --- a/src/sources/ru/ranoberf.js +++ b/src/sources/ru/ranoberf.js @@ -26,7 +26,7 @@ const popularNovels = async (page, { showLatestNovels, filters }) => { json = JSON.parse(json); let novels = []; - json.props.pageProps.totalData.items.map(item => { + json.props.pageProps.totalData.items.forEach(item => { const novelName = item.title; const novelUrl = baseUrl + '/' + item.slug; const novelCover = item?.verticalImage?.url @@ -65,7 +65,7 @@ const parseNovelAndChapters = async novelUrl => { let chapters = []; - json.props.pageProps.book.chapters.map(item => { + json.props.pageProps.book.chapters.forEach(item => { const chapterName = item.title; const releaseDate = dayjs(item.publishedAt).format('LLL'); const chapterUrl = baseUrl + item.url; @@ -115,7 +115,7 @@ const searchNovels = async searchTerm => { const body = await result.json(); let novels = []; - body.items.map(item => { + body.items.forEach(item => { const novelName = item.title; const novelUrl = baseUrl + '/' + item.slug; const novelCover = item?.verticalImage?.url diff --git a/src/sources/ru/renovels.js b/src/sources/ru/renovels.js index b3a28752..5d838b10 100644 --- a/src/sources/ru/renovels.js +++ b/src/sources/ru/renovels.js @@ -37,7 +37,7 @@ const popularNovels = async (page, { showLatestNovels, filters }) => { let novels = []; - body.content.map(item => { + body.content.forEach(item => { const novelName = item.rus_name; const novelUrl = item.dir; const novelCover = @@ -89,7 +89,7 @@ const parseNovelAndChapters = async novelUrl => { ); let volumes = await chapterResult.json(); - volumes.content.map(item => { + volumes.content.forEach(item => { const chapterName = `Том ${item.tome} Глава ${item.chapter} ${item.name}`?.trim(); const releaseDate = dayjs(item.upload_date).format('LLL'); @@ -126,7 +126,7 @@ const searchNovels = async searchTerm => { let body = await result.json(); let novels = []; - body.content.map(item => { + body.content.forEach(item => { const novelName = item.rus_name; const novelUrl = item.dir; const novelCover = diff --git a/src/sources/ru/rulate.js b/src/sources/ru/rulate.js deleted file mode 100644 index ad538f37..00000000 --- a/src/sources/ru/rulate.js +++ /dev/null @@ -1,1482 +0,0 @@ -import { FilterInputs } from '../types/filterTypes'; -import { htmlToText } from '../helpers/htmlToText'; -import { Status } from '../helpers/constants'; -import * as cheerio from 'cheerio'; -import { defaultTo } from 'lodash-es'; - -const sourceId = 118; -const sourceName = 'Rulate'; - -const baseUrl = 'https://tl.rulate.ru'; - -const popularNovels = async (page, { showLatestNovels, filters }) => { - let url = baseUrl + '/search?t=&cat=2'; - url += '&sort=' + defaultTo(filters?.sort, showLatestNovels ? '4' : '6'); - url += '&type=' + defaultTo(filters?.type, '0'); - url += '&atmosphere=' + defaultTo(filters?.atmosphere, '0'); - url += '&adult=' + defaultTo(filters?.adult, '0'); - - if (filters?.genres?.length) { - url += filters.genres.map(i => `&genres[]=${i}`).join(''); - } - - if (filters?.tags?.length) { - url += filters.tags.map(i => `&tags[]=${i}`).join(''); - } - - if (filters?.trash?.length) { - url += filters.trash.map(i => `&${i}=1`); - } - - url += `&Book_page=${page}`; - - const result = await fetch(url); - const body = await result.text(); - const loadedCheerio = cheerio.load(body); - - let novels = []; - - loadedCheerio( - 'ul[class="search-results"] > li:not([class="ad_type_catalog"])', - ).each(function () { - const novelName = loadedCheerio(this).find('p > a').text(); - const novelCover = baseUrl + loadedCheerio(this).find('img').attr('src'); - const novelUrl = loadedCheerio(this).find('p > a').attr('href'); - - const novel = { sourceId, novelName, novelCover, novelUrl }; - novels.push(novel); - }); - - return { novels }; -}; - -const parseNovelAndChapters = async novelUrl => { - let result = await fetch(baseUrl + novelUrl); - if (result.url.includes('mature?path=')) { - const formData = new FormData(); - formData.append('path', novelUrl); - formData.append('ok', 'Да'); - - await fetch(result.url, { - method: 'POST', - body: formData, - }); - - result = await fetch(baseUrl + novelUrl); - } - const body = await result.text(); - const loadedCheerio = cheerio.load(body); - - let novel = { - sourceId, - sourceName, - url: baseUrl + novelUrl, - novelUrl, - }; - - novel.novelName = loadedCheerio('div[class="container"] > div > div > h1') - .text() - .trim(); - novel.novelCover = - baseUrl + loadedCheerio('div[class="images"] > div img').attr('src'); - novel.summary = loadedCheerio('#Info > div:nth-child(3)').html(); - novel.genre = []; - - if (novel?.summary) { - novel.summary = htmlToText(novel.summary); - } - - let chapters = []; - loadedCheerio('div[class="span5"] > p').each(function () { - switch (loadedCheerio(this).find('strong').text()) { - case 'Автор:': - novel.author = loadedCheerio(this).find('em > a').text().trim(); - break; - case 'Выпуск:': - novel.status = - loadedCheerio(this).find('em').text().trim() === 'продолжается' - ? Status.ONGOING - : Status.COMPLETED; - break; - case 'Тэги:': - loadedCheerio(this) - .find('em > a') - .each(function () { - novel.genre.push(loadedCheerio(this).text()); - }); - break; - case 'Жанры:': - loadedCheerio(this) - .find('em > a') - .each(function () { - novel.genre.push(loadedCheerio(this).text()); - }); - break; - } - }); - - if (novel.genre.length > 0) { - novel.genre = novel.genre.reverse().join(','); - } else { - novel.genre = ''; - } - - loadedCheerio('table > tbody > tr.chapter_row').each(function () { - const chapterName = loadedCheerio(this) - .find('td[class="t"] > a') - .text() - .trim(); - const releaseDate = loadedCheerio(this) - .find('td > span') - .attr('title') - ?.trim(); - const chapterUrl = loadedCheerio(this) - .find('td[class="t"] > a') - .attr('href'); - - if ( - loadedCheerio(this).find('td > span[class="disabled"]').length < 1 && - releaseDate - ) { - chapters.push({ chapterName, releaseDate, chapterUrl }); - } - }); - - novel.chapters = chapters; - return novel; -}; - -const parseChapter = async (novelUrl, chapterUrl) => { - let result = await fetch(baseUrl + chapterUrl); - if (result.url.includes('mature?path=')) { - const formData = new FormData(); - formData.append('path', novelUrl); - formData.append('ok', 'Да'); - - await fetch(result.url, { - method: 'POST', - body: formData, - }); - - result = await fetch(baseUrl + chapterUrl); - } - const body = await result.text(); - const loadedCheerio = cheerio.load(body); - - loadedCheerio('.content-text img').each(function () { - if (!loadedCheerio(this).attr('src')?.startsWith('http')) { - const src = loadedCheerio(this).attr('src'); - loadedCheerio(this).attr('src', baseUrl + src); - } - }); - - const chapterName = loadedCheerio( - '.chapter_select > select > option[selected]', - ) - .text() - .trim(); - const chapterText = loadedCheerio('.content-text').html(); - - const chapter = { - sourceId, - novelUrl, - chapterUrl, - chapterName, - chapterText, - }; - - return chapter; -}; - -const searchNovels = async searchTerm => { - const result = await fetch( - baseUrl + '/search/autocomplete?query=' + searchTerm, - ); - let json = await result.json(); - let novels = []; - - json.map(item => { - const novelName = item.title_one + ' / ' + item.title_two; - const novelCover = baseUrl + item.img; - const novelUrl = item.url; - - novels.push({ sourceId, novelName, novelCover, novelUrl }); - }); - - return novels; -}; - -const filters = [ - { - key: 'sort', - label: 'Сортировка', - values: [ - { label: 'По рейтингу', value: '6' }, - { label: 'По степени готовности', value: '0' }, - { label: 'По названию на языке оригинала', value: '1' }, - { label: 'По названию на языке перевода', value: '2' }, - { label: 'По дате создания', value: '3' }, - { label: 'По дате последней активности', value: '4' }, - { label: 'По просмотрам', value: '5' }, - { label: 'По кол-ву переведённых глав', value: '7' }, - { label: 'По кол-ву лайков', value: '8' }, - { label: 'По кол-ву страниц', value: '10' }, - { label: 'По кол-ву бесплатных глав', value: '11' }, - { label: 'По кол-ву рецензий', value: '12' }, - { label: 'По кол-ву в закладках', value: '13' }, - { label: 'По кол-ву в избранном', value: '14' }, - ], - inputType: FilterInputs.Picker, - }, - { - key: 'type', - label: 'Тип', - values: [ - { label: 'Неважно', value: '0' }, - { label: 'Только переводы', value: '1' }, - { label: 'Только авторские', value: '2' }, - ], - inputType: FilterInputs.Picker, - }, - - { - key: 'atmosphere', - label: 'Атмосфера', - values: [ - { label: 'Неважно', value: '0' }, - { label: 'Позитивная', value: '1' }, - { label: 'Dark', value: '2' }, - ], - inputType: FilterInputs.Picker, - }, - { - key: 'trash', - label: 'Другое', - values: [ - { label: 'Готовые на 100%', value: 'ready' }, - { label: 'Доступные для перевода', value: 'tr' }, - { label: 'Доступные для скачивания', value: 'gen' }, - { label: 'Завершённые проекты', value: 'wealth' }, - { label: 'Распродажа', value: 'discount' }, - { label: 'Только онгоинги', value: 'ongoings' }, - { label: 'Убрать машинный', value: 'remove_machinelate' }, - ], - inputType: FilterInputs.Checkbox, - }, - { - key: 'genres', - label: 'Жанры', - values: [ - { label: 'Арт', value: '1' }, - { label: 'Боевик', value: '2' }, - { label: 'Боевые искусства', value: '3' }, - { label: 'Вампиры', value: '4' }, - { label: 'Гарем', value: '5' }, - { label: 'Героическое фэнтези', value: '7' }, - { label: 'Детектив', value: '8' }, - { label: 'Дзёсэй', value: '9' }, - { label: 'Додзинси', value: '10' }, - { label: 'Драма', value: '11' }, - { label: 'Игра', value: '12' }, - { label: 'История', value: '13' }, - { label: 'Киберпанк', value: '46' }, - { label: 'Кодомо', value: '14' }, - { label: 'Комедия', value: '15' }, - { label: 'Литрпг', value: '48' }, - { label: 'Махо-сёдзё', value: '16' }, - { label: 'Мелодрама', value: '49' }, - { label: 'Меха', value: '17' }, - { label: 'Мистика', value: '18' }, - { label: 'Научная фантастика', value: '19' }, - { label: 'Повседневность', value: '20' }, - { label: 'Постапокалиптика', value: '21' }, - { label: 'Приключения', value: '22' }, - { label: 'Психология', value: '23' }, - { label: 'Романтика', value: '24' }, - { label: 'Самурайский боевик', value: '25' }, - { label: 'Сверхъестественное', value: '26' }, - { label: 'Сёдзё', value: '27' }, - { label: 'Сёнэн', value: '29' }, - { label: 'Смат', value: '45' }, - { label: 'Спорт', value: '31' }, - { label: 'Сэйнэн', value: '32' }, - { label: 'Сюаньхуа', value: '44' }, - { label: 'Сюаньхуань', value: '47' }, - { label: 'Сянься (XianXia)', value: '42' }, - { label: 'Трагедия', value: '33' }, - { label: 'Триллер', value: '34' }, - { label: 'Ужасы', value: '35' }, - { label: 'Уся (wuxia)', value: '41' }, - { label: 'Фантастика', value: '36' }, - { label: 'Фанфик', value: '50' }, - { label: 'Фэнтези', value: '37' }, - { label: 'Школа', value: '38' }, - { label: 'Этти', value: '39' }, - { label: 'Bl/Яой', value: '43' }, - { label: 'Gl/Юри', value: '40' }, - ], - inputType: FilterInputs.Checkbox, - }, - { - key: 'tags', - label: 'Тэги', - values: [ - { label: 'Абсурд', value: '7973' }, - { label: 'Авантюристы', value: '222' }, - { label: 'Автомат', value: '5272' }, - { label: 'Авторский мир', value: '1062' }, - { label: 'Агрессивные персонажи', value: '3249' }, - { label: 'Ад', value: '2623' }, - { label: 'Ад и рай', value: '817' }, - { label: 'Адам дженсен', value: '1649' }, - { label: 'Адаптация произведения', value: '192' }, - { label: 'Адвокат', value: '6340' }, - { label: 'Адекватные главные герои', value: '1953' }, - { label: 'Азартные игры', value: '5301' }, - { label: 'Азгард', value: '3494' }, - { label: 'Азула', value: '5550' }, - { label: 'Аид', value: '7641' }, - { label: 'Айдолы', value: '4081' }, - { label: 'Академия', value: '316' }, - { label: 'Акамэ', value: '5059' }, - { label: 'Аквакинез', value: '5952' }, - { label: 'Акира', value: '2639' }, - { label: 'Акнология', value: '4634' }, - { label: 'Актерское мастерство', value: '4798' }, - { label: 'Актёры', value: '7506' }, - { label: 'Активные герои', value: '6376' }, - { label: 'Акутагава рюноске', value: '4113' }, - { label: 'Аладдин', value: '6489' }, - { label: 'Алая ведьма', value: '4767' }, - { label: 'Алиса', value: '4761' }, - { label: 'Алкоголь', value: '5508' }, - { label: 'Аллегория', value: '271' }, - { label: 'Алукард', value: '4914' }, - { label: 'Алхимики', value: '1164' }, - { label: 'Алхимия', value: '1473' }, - { label: 'Алчность', value: '6897' }, - { label: 'Альбус дамблдор', value: '5784' }, - { label: 'Альтернативное развитие событий', value: '5330' }, - { label: 'Альянсы', value: '328' }, - { label: 'Амбициозный главный герой', value: '3751' }, - { label: 'Америка', value: '4082' }, - { label: 'Амнезия', value: '2207' }, - { label: 'Аморальный герой', value: '18' }, - { label: 'Анальный секс', value: '1942' }, - { label: 'Анбу', value: '8129' }, - { label: 'Ангелы', value: '857' }, - { label: 'Ангелы и демоны', value: '1327' }, - { label: 'Ангст', value: '4638' }, - { label: 'Андроиды', value: '1993' }, - { label: 'Анимализм', value: '5249' }, - { label: 'Аниме', value: '1294' }, - { label: 'Анко митараши', value: '5768' }, - { label: 'Антагонист', value: '2144' }, - { label: 'Антигерой', value: '7725' }, - { label: 'Антиквариат', value: '3552' }, - { label: 'Антимаг', value: '1348' }, - { label: 'Антиутопия', value: '662' }, - { label: 'Апокалипсис', value: '1498' }, - { label: 'Аристократия', value: '371' }, - { label: 'Аристократы', value: '7338' }, - { label: 'Армия', value: '1723' }, - { label: 'Артас', value: '6700' }, - { label: 'Артефакты', value: '2296' }, - { label: 'Археология', value: '6523' }, - { label: 'Асгард', value: '3635' }, - { label: 'Ассасин', value: '1415' }, - { label: 'Асуна', value: '5044' }, - { label: 'Аугментации', value: '7751' }, - { label: 'Ацуши накаджима', value: '4109' }, - { label: 'Аянокоджи киетака', value: '6862' }, - { label: 'Бандиты', value: '2188' }, - { label: 'Басейн', value: '6847' }, - { label: 'Баскетбол', value: '7933' }, - { label: 'Бастарды', value: '76' }, - { label: 'Бдсм', value: '444' }, - { label: 'Бедность', value: '1207' }, - { label: 'Без культивации', value: '668' }, - { label: 'Без любовной линий', value: '2225' }, - { label: 'Без перерождений', value: '262' }, - { label: 'Без попаданца', value: '8065' }, - { label: 'Без системы', value: '747' }, - { label: 'Без цензуры', value: '7525' }, - { label: 'Без юмора', value: '763' }, - { label: 'Бездна', value: '1026' }, - { label: 'Безжалостное домашнее животное', value: '1245' }, - { label: 'Безжалостные персонажи', value: '2986' }, - { label: 'Беззаботные персонажи ', value: '3123' }, - { label: 'Безответная любовь', value: '7815' }, - { label: 'Безработный', value: '2202' }, - { label: 'Безумие', value: '37' }, - { label: 'Безумные персонажи', value: '2049' }, - { label: 'Бейсбол', value: '7623' }, - { label: 'Беременность', value: '2122' }, - { label: 'Бесконечный поток', value: '7556' }, - { label: 'Беспечные персонажи', value: '742' }, - { label: 'Бессмертные персонажи', value: '566' }, - { label: 'Бесстрашные персонажи', value: '6921' }, - { label: 'Бесстыдные персонажи', value: '1257' }, - { label: 'Бесстыдный главный герой', value: '8190' }, - { label: 'Библиотека', value: '4210' }, - { label: 'Библия', value: '488' }, - { label: 'Бизнес', value: '704' }, - { label: 'Биология', value: '2220' }, - { label: 'Биомехи', value: '1968' }, - { label: 'Биседзе', value: '777' }, - { label: 'Битва за веру', value: '721' }, - { label: 'Битва за трон', value: '7211' }, - { label: 'Битва королевств', value: '1151' }, - { label: 'Битва рас', value: '6989' }, - { label: 'Битвы', value: '1740' }, - { label: 'Благородные персонажи', value: '2201' }, - { label: 'Близнецы', value: '2931' }, - { label: 'Богатство', value: '6522' }, - { label: 'Богатые персонажи', value: '520' }, - { label: 'Боги', value: '173' }, - { label: 'Богини', value: '30' }, - { label: 'Богиня', value: '8324' }, - { label: 'Богоубийца', value: '1253' }, - { label: 'Богохульство', value: '95' }, - { label: 'Боевая академия', value: '2108' }, - { label: 'Боевик', value: '529' }, - { label: 'Боевые искусства', value: '2090' }, - { label: 'Большая грудь', value: '4717' }, - { label: 'Большой член', value: '5299' }, - { label: 'Бондаж', value: '8319' }, - { label: 'Борос', value: '6533' }, - { label: 'Борьба', value: '1925' }, - { label: 'Борьба за власть', value: '8072' }, - { label: 'Босс и подчиненный', value: '7157' }, - { label: 'Бояръ', value: '2307' }, - { label: 'Брак', value: '1558' }, - { label: 'Брак по договоренности', value: '8310' }, - { label: 'Брак по расчету', value: '1389' }, - { label: 'Брат и сестра', value: '615' }, - { label: 'Братский комплекс', value: '2321' }, - { label: 'Броманс', value: '1103' }, - { label: 'Брошенные дети', value: '2846' }, - { label: 'Буддизм', value: '1871' }, - { label: 'Будущее', value: '1820' }, - { label: 'Бывший муж', value: '8080' }, - { label: 'Быстрое развитие', value: '1443' }, - { label: 'Бэтгерл', value: '2584' }, - { label: 'Бэтмен', value: '4668' }, - { label: 'В первый раз', value: '6212' }, - { label: 'В этот же мир', value: '49' }, - { label: 'Вагинальный секс', value: '4742' }, - { label: 'Ваканда', value: '8331' }, - { label: 'Валькирии', value: '4047' }, - { label: 'Вампиры', value: '2206' }, - { label: 'Веб камера', value: '5664' }, - { label: 'Веб новелла', value: '2349' }, - { label: 'Ведьмак', value: '843' }, - { label: 'Ведьмы', value: '643' }, - { label: 'Везучие персонажи', value: '1879' }, - { label: 'Великолепный лжец', value: '8327' }, - { label: 'Веном', value: '3994' }, - { label: 'Вестерн', value: '2131' }, - { label: 'Вестерос', value: '8171' }, - { label: 'Взросление', value: '624' }, - { label: 'Взрослый главный герой', value: '2416' }, - { label: 'Видео игры', value: '2630' }, - { label: 'Викинги', value: '267' }, - { label: 'Вино', value: '6972' }, - { label: 'Вирт', value: '6213' }, - { label: 'Виртуальная реальность', value: '325' }, - { label: 'Вирусы', value: '3327' }, - { label: 'Владыка демонов', value: '555' }, - { label: 'Властная пара', value: '8332' }, - { label: 'властная пара', value: '8323' }, - { label: 'Власть', value: '756' }, - { label: 'Влюбленность', value: '6132' }, - { label: 'Внешний вид отличается от личности', value: '1938' }, - { label: 'Военные', value: '1096' }, - { label: 'Возрождение', value: '1160' }, - { label: 'Воины', value: '287' }, - { label: 'Война', value: '443' }, - { label: 'Войны', value: '2431' }, - { label: 'Воландеморт', value: '4278' }, - { label: 'Волейбол', value: '6415' }, - { label: 'Волки', value: '1166' }, - { label: 'Волшебники', value: '122' }, - { label: 'Волшебные существа', value: '1689' }, - { label: 'Волшебство', value: '719' }, - { label: 'Вор', value: '1399' }, - { label: 'Воровка', value: '6948' }, - { label: 'Ворон', value: '848' }, - { label: 'Воскрешение', value: '6915' }, - { label: 'Воспоминания из другого мира', value: '1366' }, - { label: 'Воспоминания из прошлого', value: '1372' }, - { label: 'Воссоединие семьи', value: '8130' }, - { label: 'Восхождение', value: '380' }, - { label: 'Враги становятся любовниками', value: '978' }, - { label: 'Врата', value: '40' }, - { label: 'Врата в другой мир', value: '1957' }, - { label: 'Врач', value: '1243' }, - { label: 'Временная петля', value: '2852' }, - { label: 'Врмморпг', value: '2043' }, - { label: 'Все дозволено', value: '96' }, - { label: 'Всемогущий главный герой', value: '1414' }, - { label: 'Второй шанс', value: '2372' }, - { label: 'Вуайеризм', value: '2498' }, - { label: 'Выживание', value: '501' }, - { label: 'Вымышленные существа', value: '3466' }, - { label: 'Вынужденный брак', value: '7705' }, - { label: 'Высокие технологии', value: '653' }, - { label: 'Высокомерные персонажи', value: '3250' }, - { label: 'Галустян', value: '5199' }, - { label: 'Гангстеры', value: '7704' }, - { label: 'Гарем', value: '440' }, - { label: 'Гарри поттер', value: '226' }, - { label: 'Геймеры', value: '2130' }, - { label: 'Генетические модификации', value: '1750' }, - { label: 'Гениальный главный герой', value: '1500' }, - { label: 'Гений', value: '1650' }, - { label: 'Гермиона грейнджер', value: '4280' }, - { label: 'Герои', value: '185' }, - { label: 'Героическое фэнтези', value: '1148' }, - { label: 'Гильгамеш', value: '6031' }, - { label: 'Гильдии', value: '900' }, - { label: 'Гильдия авантюристов', value: '1858' }, - { label: 'Гинтама', value: '4544' }, - { label: 'Гипноз', value: '358' }, - { label: 'Главная героиня влюбляется первой', value: '973' }, - { label: 'Главный герой бог', value: '164' }, - { label: 'Главный герой влюбляется первым', value: '3629' }, - { label: 'Главный герой выживальщик', value: '120' }, - { label: 'Главный герой гонг', value: '7877' }, - { label: 'Главный герой девушка', value: '257' }, - { label: 'Главный герой демон', value: '136' }, - { label: 'Главный герой женщина', value: '7329' }, - { label: 'Главный герой жестокий', value: '1553' }, - { label: 'Главный герой извращенец', value: '94' }, - { label: 'Главный герой имба', value: '2421' }, - { label: 'Главный герой киборг', value: '7780' }, - { label: 'Главный герой монстр', value: '869' }, - { label: 'Главный герой мужчина', value: '1997' }, - { label: 'Главный герой на стороне сил зла', value: '1514' }, - { label: 'Главный герой не адекватный', value: '5' }, - { label: 'Главный герой не психопат', value: '7804' }, - { label: 'Главный герой не человек', value: '2172' }, - { label: 'Главный герой не эмоционален', value: '1150' }, - { label: 'Главный герой подросток', value: '2215' }, - { label: 'Главный герой позитивный', value: '7787' }, - { label: 'Главный герой психопат', value: '7803' }, - { label: 'Главный герой ребенок', value: '2347' }, - { label: 'Главный герой русский', value: '2417' }, - { label: 'Главный герой сильный с самого начала', value: '88' }, - { label: 'Главный герой скрывает свою силу', value: '1059' }, - { label: 'Главный герой эгоист', value: '8326' }, - { label: 'Глотание спермы', value: '4491' }, - { label: 'Гномы', value: '1870' }, - { label: 'Гоблины', value: '2029' }, - { label: 'Годзилла', value: '6990' }, - { label: 'Големы', value: '1690' }, - { label: 'Голливуд', value: '7754' }, - { label: 'Головоломка', value: '1697' }, - { label: 'Горничные', value: '8091' }, - { label: 'Гробница', value: '388' }, - { label: 'Групповой секс', value: '1314' }, - { label: 'Дазай осаму', value: '4112' }, - { label: 'Даньмэй', value: '3411' }, - { label: 'Даосизм', value: '258' }, - { label: 'Дарк соулс', value: '6057' }, - { label: 'Дарт вейдер', value: '6826' }, - { label: 'Дафна гринграсс', value: '5192' }, - { label: 'Дворяне', value: '7204' }, - { label: 'Девушки', value: '7668' }, - { label: 'Девушки монстры', value: '2231' }, - { label: 'Дейви джонс', value: '8061' }, - { label: 'Действие', value: '1425' }, - { label: 'Демон лорд', value: '153' }, - { label: 'Демонология', value: '2024' }, - { label: 'Демоны', value: '1406' }, - { label: 'Депрессия', value: '8313' }, - { label: 'Детектив', value: '1265' }, - { label: 'Дети', value: '580' }, - { label: 'Джарвис', value: '933' }, - { label: 'Джедай', value: '4442' }, - { label: 'Джин', value: '4024' }, - { label: 'Джокер', value: '3351' }, - { label: 'Джон сноу', value: '7412' }, - { label: 'Джоффри баратеон', value: '3936' }, - { label: 'Дзесэй', value: '678' }, - { label: 'Дин винчестер', value: '6953' }, - { label: 'Династии', value: '2982' }, - { label: 'Динозавры', value: '3666' }, - { label: 'Директор', value: '1417' }, - { label: 'Для девушек', value: '1441' }, - { label: 'Дневник', value: '298' }, - { label: 'Добби', value: '6762' }, - { label: 'Добрый мир', value: '1685' }, - { label: 'Договоры с богами', value: '2152' }, - { label: 'Договоры с демонами', value: '1922' }, - { label: 'Доктор', value: '1991' }, - { label: 'Доктор стрэндж', value: '7634' }, - { label: 'Доминирование', value: '2054' }, - { label: 'Дота', value: '6965' }, - { label: 'Доудзюцу', value: '7133' }, - { label: 'Дочь', value: '3291' }, - { label: 'Драко малфой', value: '46' }, - { label: 'Драконы', value: '282' }, - { label: 'Драконы оборотни', value: '8082' }, - { label: 'Драма', value: '611' }, - { label: 'Древние времена', value: '7781' }, - { label: 'Древний египет', value: '7614' }, - { label: 'Древний китай', value: '473' }, - { label: 'Древний мир', value: '4' }, - { label: 'Дрочка', value: '4565' }, - { label: 'Другая вселенная', value: '39' }, - { label: 'Другие планеты', value: '2371' }, - { label: 'Другой мир', value: '2248' }, - { label: 'Дружба', value: '1903' }, - { label: 'Друзья детства', value: '1153' }, - { label: 'Духи', value: '114' }, - { label: 'Духовные силы', value: '1955' }, - { label: 'Души', value: '1212' }, - { label: 'Дьявол', value: '1094' }, - { label: 'Дьявольские фрукты', value: '1564' }, - { label: 'Дэдпул', value: '4399' }, - { label: 'Евнух', value: '6293' }, - { label: 'Европейская атмосфера', value: '5837' }, - { label: 'Египет', value: '528' }, - { label: 'Еда', value: '2056' }, - { label: 'Единороги', value: '437' }, - { label: 'Екаи', value: '655' }, - { label: 'Жалкий главный герой', value: '97' }, - { label: 'Жена', value: '5729' }, - { label: 'Женское доминирование', value: '4622' }, - { label: 'Женщина в теле мужчины', value: '2748' }, - { label: 'Женщина кошка', value: '7513' }, - { label: 'Жесткий секс', value: '2238' }, - { label: 'Жестокие персонажи ', value: '3153' }, - { label: 'Жестокий мир', value: '1532' }, - { label: 'Жестокое обращение с детьми', value: '84' }, - { label: 'Жестокость', value: '7880' }, - { label: 'Животные', value: '7488' }, - { label: 'Животные компаньоны', value: '2061' }, - { label: 'Жизнь и смерть', value: '2014' }, - { label: 'Жнец', value: '6288' }, - { label: 'Жойен рид', value: '3926' }, - { label: 'Заботливый главный герой', value: '338' }, - { label: 'Закалка тела', value: '148' }, - { label: 'Заклинания', value: '558' }, - { label: 'Заключенные', value: '3052' }, - { label: 'Занпакто', value: '1102' }, - { label: 'Запретная любовь', value: '8033' }, - { label: 'Запутанный сюжет', value: '1041' }, - { label: 'Захват мира', value: '315' }, - { label: 'Зачарованные', value: '4169' }, - { label: 'Звери', value: '1638' }, - { label: 'Зверодевочки', value: '2006' }, - { label: 'Зверолюди', value: '1018' }, - { label: 'Земля', value: '82' }, - { label: 'Злая организация', value: '7768' }, - { label: 'Зло', value: '1512' }, - { label: 'Злодей', value: '1060' }, - { label: 'Злодейка', value: '2376' }, - { label: 'Злой главный герой', value: '616' }, - { label: 'Злые боги', value: '7109' }, - { label: 'Злые персонажи', value: '3243' }, - { label: 'Змей', value: '5721' }, - { label: 'Знаменитости', value: '1341' }, - { label: 'Знание медицины', value: '1411' }, - { label: 'Золотой дождь', value: '1828' }, - { label: 'Золушка', value: '2980' }, - { label: 'Зомби', value: '1743' }, - { label: 'Зомби апокалипсис', value: '912' }, - { label: 'Зона 51', value: '3051' }, - { label: 'Зооморфы', value: '375' }, - { label: 'Зоофилия', value: '1165' }, - { label: 'Зорро', value: '6736' }, - { label: 'Зрелые женщины', value: '1458' }, - { label: 'Игра', value: '663' }, - { label: 'Игра на выживание', value: '2182' }, - { label: 'Игровая система', value: '384' }, - { label: 'Игровые элементы', value: '720' }, - { label: 'Извращения', value: '651' }, - { label: 'Измена', value: '1874' }, - { label: 'Изменение характера', value: '1113' }, - { label: 'Изменения внешности', value: '259' }, - { label: 'Изменения личности', value: '1080' }, - { label: 'Изнасилование', value: '1283' }, - { label: 'Изобретения', value: '126' }, - { label: 'Изуку мидория', value: '6967' }, - { label: 'Император', value: '867' }, - { label: 'Империи', value: '712' }, - { label: 'Империя', value: '1716' }, - { label: 'Инвалидность', value: '2073' }, - { label: 'Инквизитор', value: '143' }, - { label: 'Инкуб', value: '3264' }, - { label: 'Инопланетное вторжение', value: '209' }, - { label: 'Инопланетяне', value: '866' }, - { label: 'Интерактив с читателями', value: '472' }, - { label: 'Интересный сюжет', value: '7374' }, - { label: 'Интернет', value: '739' }, - { label: 'Интимные сцены', value: '3450' }, - { label: 'Интрига', value: '317' }, - { label: 'Интриги и заговоры', value: '1009' }, - { label: 'Инцест', value: '1934' }, - { label: 'Иные миры', value: '35' }, - { label: 'Исекай', value: '2979' }, - { label: 'Искусственный интеллект', value: '1900' }, - { label: 'Исследование', value: '1626' }, - { label: 'Исторический роман', value: '573' }, - { label: 'Итачи учиха', value: '4556' }, - { label: 'Ичиго', value: '7254' }, - { label: 'Йода', value: '6829' }, - { label: 'Йоруичи', value: '6755' }, - { label: 'Калипсо', value: '8062' }, - { label: 'Каннибализм', value: '2249' }, - { label: 'Капитан америка', value: '6301' }, - { label: 'Каракура', value: '7473' }, - { label: 'Карточная игра', value: '1557' }, - { label: 'Кастиэль', value: '6954' }, - { label: 'Кафе', value: '3934' }, - { label: 'Кацуки бакуго', value: '7696' }, - { label: 'Квесты', value: '1707' }, - { label: 'Киберпанк', value: '1614' }, - { label: 'Киберспорт', value: '1984' }, - { label: 'Кино', value: '7126' }, - { label: 'Китай', value: '3762' }, - { label: 'Кицунэ', value: '241' }, - { label: 'Кланы', value: '834' }, - { label: 'Клоны', value: '1624' }, - { label: 'Книги', value: '1068' }, - { label: 'Книжный червь', value: '521' }, - { label: 'Колдовство', value: '2681' }, - { label: 'Коллекционер', value: '2588' }, - { label: 'Колледж', value: '5058' }, - { label: 'Кольцо', value: '1628' }, - { label: 'Комедия', value: '1430' }, - { label: 'Коммунисты', value: '1042' }, - { label: 'Коноха', value: '2827' }, - { label: 'Контракт', value: '4304' }, - { label: 'Контроль разума', value: '485' }, - { label: 'Конфеты', value: '341' }, - { label: 'Кончил внутрь', value: '4589' }, - { label: 'Копрофилия', value: '2568' }, - { label: 'Корейцы', value: '6535' }, - { label: 'Корея', value: '2443' }, - { label: 'Королевская власть', value: '55' }, - { label: 'Королевская семья', value: '276' }, - { label: 'Королевство', value: '1695' }, - { label: 'Короткие волосы', value: '8306' }, - { label: 'Короткий рассказ', value: '239' }, - { label: 'Коррупция', value: '831' }, - { label: 'Космическая опера', value: '2245' }, - { label: 'Космические рейнджеры', value: '5860' }, - { label: 'Космос', value: '329' }, - { label: 'Кот', value: '5171' }, - { label: 'Кража навыков', value: '1159' }, - { label: 'Красивая главная героиня', value: '186' }, - { label: 'Красивые женщины', value: '66' }, - { label: 'Красивые персонажи ', value: '5787' }, - { label: 'Красивый главный герой', value: '895' }, - { label: 'Крафт', value: '1599' }, - { label: 'Кровь и расчлененка', value: '7752' }, - { label: 'Кроссовер', value: '75' }, - { label: 'Ксенофилия', value: '2265' }, - { label: 'Ктулху', value: '920' }, - { label: 'Кузнец', value: '853' }, - { label: 'Кукла', value: '3085' }, - { label: 'Кулинария', value: '2230' }, - { label: 'Культивация', value: '1901' }, - { label: 'Культивирование', value: '1860' }, - { label: 'Кунилингус', value: '4651' }, - { label: 'Курама', value: '5709' }, - { label: 'Курилин', value: '6134' }, - { label: 'Кушина узумаки', value: '5222' }, - { label: 'Лавкрафт', value: '6063' }, - { label: 'Лактация', value: '8321' }, - { label: 'Лара крофт', value: '6435' }, - { label: 'Легенда о зельде', value: '5707' }, - { label: 'Ленивый главный герой', value: '1516' }, - { label: 'Леон золдик', value: '7469' }, - { label: 'Лес', value: '6645' }, - { label: 'Лечебная магия', value: '562' }, - { label: 'Литрпг', value: '505' }, - { label: 'Локи', value: '1725' }, - { label: 'Лоли', value: '1576' }, - { label: 'Лопата', value: '4989' }, - { label: 'Лориен', value: '7397' }, - { label: 'Лошади', value: '6110' }, - { label: 'Лунатизм', value: '3520' }, - { label: 'Луффи', value: '274' }, - { label: 'Лучник', value: '1038' }, - { label: 'Любовный интерес влюбляется первым', value: '7753' }, - { label: 'Любовный треугольник', value: '2109' }, - { label: 'Любовь', value: '2297' }, - { label: 'Любовь с первого взгляда', value: '7748' }, - { label: 'Любящие родители', value: '2699' }, - { label: 'Люди', value: '3572' }, - { label: 'Люцифер', value: '5883' }, - { label: 'Маг', value: '780' }, - { label: 'Магазин', value: '4762' }, - { label: 'Маги', value: '58' }, - { label: 'Магическая академия', value: '6788' }, - { label: 'Магические звери', value: '684' }, - { label: 'Магические предметы', value: '1648' }, - { label: 'Магический мир', value: '578' }, - { label: 'Магия', value: '150' }, - { label: 'Магия воды', value: '6450' }, - { label: 'Магия воздуха', value: '7627' }, - { label: 'Магия земли', value: '7626' }, - { label: 'Магия и технология', value: '107' }, - { label: 'Магия крови', value: '7976' }, - { label: 'Магия льда', value: '1379' }, - { label: 'Магия огня', value: '7625' }, - { label: 'Магия призыва', value: '885' }, - { label: 'Магия природы', value: '6226' }, - { label: 'Магия стихий', value: '7673' }, - { label: 'Магия тьмы', value: '3596' }, - { label: 'Мадара', value: '2929' }, - { label: 'Мазохизм', value: '1961' }, - { label: 'Мама', value: '12' }, - { label: 'Мама и дочь', value: '7894' }, - { label: 'Мама и сын', value: '7895' }, - { label: 'Манга', value: '2464' }, - { label: 'Манипуляция временем', value: '932' }, - { label: 'Маньяк', value: '2026' }, - { label: 'Марвел', value: '8328' }, - { label: 'Маргери тирелл', value: '3935' }, - { label: 'Марионетки', value: '3175' }, - { label: 'Марс', value: '4013' }, - { label: 'Марти стью', value: '594' }, - { label: 'Мастер на все руки', value: '3189' }, - { label: 'Мастурбация', value: '3078' }, - { label: 'Матриархат', value: '7197' }, - { label: 'Мать и сестры', value: '7946' }, - { label: 'Мафия', value: '353' }, - { label: 'Мачеха', value: '4664' }, - { label: 'Мегаполис', value: '3322' }, - { label: 'Медицина', value: '441' }, - { label: 'Медленное развитие истории', value: '7462' }, - { label: 'Медленный роман', value: '8309' }, - { label: 'Межрасовый секс', value: '3489' }, - { label: 'Мелиодас', value: '7224' }, - { label: 'Мелодрама', value: '1507' }, - { label: 'Менеджмент', value: '368' }, - { label: 'Мерлин', value: '3977' }, - { label: 'Месть', value: '1218' }, - { label: 'Меха', value: '2303' }, - { label: 'Меч', value: '48' }, - { label: 'Мечники', value: '969' }, - { label: 'Мечта', value: '527' }, - { label: 'Мизуки', value: '4269' }, - { label: 'Микото', value: '3862' }, - { label: 'Милая главная героиня', value: '134' }, - { label: 'Милф', value: '1987' }, - { label: 'Милый главный герой', value: '2678' }, - { label: 'Мимик', value: '5706' }, - { label: 'Мина ашидо', value: '7695' }, - { label: 'Минато намикадзе', value: '5223' }, - { label: 'Минет', value: '3289' }, - { label: 'Мир будущего', value: '1770' }, - { label: 'Мир меча и магии', value: '1271' }, - { label: 'Мистер пропер', value: '565' }, - { label: 'Мистика', value: '510' }, - { label: 'Мифические существа', value: '1878' }, - { label: 'Мифы и легенды', value: '4463' }, - { label: 'Младшая сестра', value: '1523' }, - { label: 'Мморпг', value: '620' }, - { label: 'Много главных героев', value: '1191' }, - { label: 'Много крови', value: '5318' }, - { label: 'Много персонажей', value: '1539' }, - { label: 'Множество королевств', value: '32' }, - { label: 'Мо', value: '8307' }, - { label: 'Модерн', value: '5457' }, - { label: 'Мокутон', value: '4438' }, - { label: 'Молоко', value: '5469' }, - { label: 'Монархия', value: '3590' }, - { label: 'Монстры', value: '307' }, - { label: 'Море', value: '922' }, - { label: 'Моритика ринносукэ', value: '1142' }, - { label: 'Мортал комбат', value: '5861' }, - { label: 'Мошенник', value: '959' }, - { label: 'Мрачный мир', value: '1' }, - { label: 'Мужчина протагонист', value: '31' }, - { label: 'Музыка', value: '1183' }, - { label: 'Мультивселенная', value: '7410' }, - { label: 'Мурим', value: '7342' }, - { label: 'Мутанты', value: '2392' }, - { label: 'Мутация', value: '29' }, - { label: 'Мясо', value: '1503' }, - { label: 'На реальных событиях', value: '26' }, - { label: 'Навыки', value: '415' }, - { label: 'Нагато узумаки', value: '5221' }, - { label: 'Наемники', value: '1668' }, - { label: 'Назарик', value: '5369' }, - { label: 'Наивный главный герой', value: '159' }, - { label: 'Наложница', value: '4867' }, - { label: 'Наноботы', value: '2332' }, - { label: 'Наркотики', value: '1436' }, - { label: 'Наруто', value: '7177' }, - { label: 'Наруто и хината', value: '5766' }, - { label: 'Насилие и жестокость', value: '1440' }, - { label: 'Наука', value: '2150' }, - { label: 'Научная фантастика', value: '2244' }, - { label: 'Национализм', value: '5556' }, - { label: 'Нацу', value: '5826' }, - { label: 'Нацуки субару', value: '6656' }, - { label: 'Начальная школа', value: '3920' }, - { label: 'Наши дни', value: '1814' }, - { label: 'Не всесильный главный герой', value: '42' }, - { label: 'Не по канону', value: '1611' }, - { label: 'Неверность', value: '5735' }, - { label: 'Невеста', value: '6011' }, - { label: 'Неджи хьюга', value: '3099' }, - { label: 'Недооценённый главный герой', value: '43' }, - { label: 'Нежить', value: '1949' }, - { label: 'Некромаг', value: '7441' }, - { label: 'Некромант', value: '1914' }, - { label: 'Некромантия', value: '754' }, - { label: 'Некрофилия', value: '1285' }, - { label: 'Ненормативная лексика', value: '160' }, - { label: 'Необычные герои', value: '67' }, - { label: 'Нет людей', value: '7486' }, - { label: 'Нетораре', value: '403' }, - { label: 'Нетори', value: '5393' }, - { label: 'Нефилимы', value: '7764' }, - { label: 'Нецензурная лексика', value: '4912' }, - { label: 'Нечисть', value: '4559' }, - { label: 'Ник фьюри', value: '6304' }, - { label: 'Ниндзюцу', value: '2354' }, - { label: 'Ниндзя', value: '1330' }, - { label: 'Новелла', value: '2105' }, - { label: 'Нудизм', value: '2233' }, - { label: 'Нэко', value: '147' }, - { label: 'Оби ван кеноби', value: '6830' }, - { label: 'Обито учиха', value: '2814' }, - { label: 'Оборотни', value: '53' }, - { label: 'Обратный гарем', value: '3303' }, - { label: 'Овощ', value: '6098' }, - { label: 'Огнестрельное оружие', value: '3155' }, - { label: 'Одержимость', value: '708' }, - { label: 'Один в поле воин', value: '6498' }, - { label: 'Омегаверс', value: '8334' }, - { label: 'омегаверс', value: '8322' }, - { label: 'Онлайн игра', value: '1565' }, - { label: 'Ооками теппей', value: '849' }, - { label: 'Оральный секс', value: '605' }, - { label: 'Оргия', value: '974' }, - { label: 'Оригинальные персонажи', value: '7741' }, - { label: 'Орки', value: '1597' }, - { label: 'Оружие', value: '125' }, - { label: 'Основано на видео игре', value: '602' }, - { label: 'Особые способности', value: '2904' }, - { label: 'От бедности к богатству', value: '901' }, - { label: 'От слабого до сильного', value: '118' }, - { label: 'Отель', value: '2879' }, - { label: 'Отец', value: '3290' }, - { label: 'Отношения', value: '398' }, - { label: 'Отношения человек/нечеловек', value: '7406' }, - { label: 'Офис', value: '3460' }, - { label: 'Охотники', value: '2263' }, - { label: 'Оценки', value: '8305' }, - { label: 'Оцуцуки', value: '5101' }, - { label: 'Ошейник', value: '2362' }, - { label: 'Ояш', value: '8048' }, - { label: 'Падчерица', value: '7023' }, - { label: 'Падший ангел', value: '184' }, - { label: 'Пайзури', value: '3560' }, - { label: 'Палач', value: '852' }, - { label: 'Палочка', value: '2682' }, - { label: 'Пандорум', value: '4360' }, - { label: 'Папа и дочь', value: '7647' }, - { label: 'Паразит', value: '1213' }, - { label: 'Параллельный мир', value: '2092' }, - { label: 'Парень', value: '619' }, - { label: 'Паркур', value: '3391' }, - { label: 'Пародия', value: '898' }, - { label: 'Пасхалки', value: '455' }, - { label: 'Паук', value: '2209' }, - { label: 'Педофилия', value: '7052' }, - { label: 'Пекарь', value: '5073' }, - { label: 'Первая книга', value: '269' }, - { label: 'Первая любовь', value: '640' }, - { label: 'Первый раз', value: '1465' }, - { label: 'Переводы', value: '24' }, - { label: 'Перевоплощение', value: '1596' }, - { label: 'Перевоплощение в игровом мире', value: '92' }, - { label: 'Перемещение в другой мир', value: '1288' }, - { label: 'Перемещение во времени', value: '146' }, - { label: 'Перерождение', value: '894' }, - { label: 'Перерождение в демона', value: '1111' }, - { label: 'Перерождение в дракона', value: '6867' }, - { label: 'Перерождение в злодейку', value: '5619' }, - { label: 'Перерождение в злодея', value: '749' }, - { label: 'Перерождение в ином мире', value: '109' }, - { label: 'Перерождение в монстра', value: '917' }, - { label: 'Перерождений', value: '335' }, - { label: 'Переселение', value: '813' }, - { label: 'Переселение души', value: '1864' }, - { label: 'Перси джексон', value: '6329' }, - { label: 'Пилот', value: '5521' }, - { label: 'Пилюли', value: '1531' }, - { label: 'Пират', value: '1579' }, - { label: 'Пирог', value: '80' }, - { label: 'Писатель', value: '734' }, - { label: 'Пистолеты', value: '4916' }, - { label: 'Письмо', value: '840' }, - { label: 'Питомцы', value: '3122' }, - { label: 'Планомерное развитие событий', value: '62' }, - { label: 'Племянник', value: '8303' }, - { label: 'Пленница', value: '4897' }, - { label: 'Плети', value: '4839' }, - { label: 'Пляж', value: '4243' }, - { label: 'Повар', value: '658' }, - { label: 'Повествование от первого лица', value: '1054' }, - { label: 'Повествование от разных лиц', value: '600' }, - { label: 'Повествование от третьего лица', value: '2116' }, - { label: 'Повседневность', value: '802' }, - { label: 'Подавитель', value: '497' }, - { label: 'Подземелье', value: '798' }, - { label: 'Подростки', value: '636' }, - { label: 'Подруга', value: '5804' }, - { label: 'Подчинение и унижение', value: '4500' }, - { label: 'Покемон', value: '8333' }, - { label: 'Покемоны', value: '2840' }, - { label: 'Полиамория', value: '1300' }, - { label: 'Полигамия', value: '1336' }, - { label: 'Политика', value: '1313' }, - { label: 'Полицейский', value: '1907' }, - { label: 'Полубог', value: '7170' }, - { label: 'Полукровка', value: '999' }, - { label: 'Полулюди', value: '2273' }, - { label: 'Поношенные трусики', value: '1204' }, - { label: 'Попаданец', value: '2396' }, - { label: 'Попаданец в другой мир', value: '685' }, - { label: 'Попаданец в игру', value: '6466' }, - { label: 'Попадание в книгу', value: '6957' }, - { label: 'Порно', value: '4023' }, - { label: 'Постапокалипсис', value: '1079' }, - { label: 'Потеря девственности', value: '5879' }, - { label: 'Похищение', value: '7452' }, - { label: 'Поэзия', value: '1120' }, - { label: 'Правитель', value: '2261' }, - { label: 'Превращени', value: '8311' }, - { label: 'Превращения в животных', value: '3410' }, - { label: 'Преданный любовный интерес', value: '2055' }, - { label: 'Предательство', value: '70' }, - { label: 'Президент', value: '4334' }, - { label: 'Преступник', value: '4049' }, - { label: 'Преступный мир', value: '965' }, - { label: 'Призрак', value: '511' }, - { label: 'Призыв', value: '332' }, - { label: 'Призыв в другой мир', value: '781' }, - { label: 'Призыв существ', value: '412' }, - { label: 'Приключения', value: '964' }, - { label: 'Приложение на телефоне', value: '5345' }, - { label: 'Принудительный брак', value: '2954' }, - { label: 'Принуждение', value: '1442' }, - { label: 'Принц', value: '362' }, - { label: 'Принцесса', value: '2403' }, - { label: 'Приручение мостров', value: '2338' }, - { label: 'Прислуга', value: '5185' }, - { label: 'Пришельцы', value: '273' }, - { label: 'Проза', value: '2012' }, - { label: 'Прокачка', value: '1070' }, - { label: 'Проклятия', value: '1347' }, - { label: 'Проработанный мир', value: '1711' }, - { label: 'Пророчество', value: '7762' }, - { label: 'Проститутки', value: '8325' }, - { label: 'Протагонист влюбляется первый', value: '8315' }, - { label: 'Псайкеры', value: '3659' }, - { label: 'Псионика', value: '5216' }, - { label: 'Психбольница', value: '6969' }, - { label: 'Психические расстройства', value: '2445' }, - { label: 'Психологические травмы', value: '3418' }, - { label: 'Психология', value: '17' }, - { label: 'Публичный дом', value: '7860' }, - { label: 'Публичный секс', value: '6647' }, - { label: 'Путешествие в другой мир', value: '10' }, - { label: 'Путешествие во времени', value: '8308' }, - { label: 'Пух', value: '4286' }, - { label: 'Пушечное мясо', value: '7234' }, - { label: 'Пытки', value: '1756' }, - { label: 'Пьяный мастер', value: '1655' }, - { label: 'Пэнси паркинсон', value: '7411' }, - { label: 'Раб', value: '977' }, - { label: 'Рабы', value: '1240' }, - { label: 'Разведение животных', value: '3990' }, - { label: 'Развитие', value: '208' }, - { label: 'Развитие персонажа', value: '1780' }, - { label: 'Развитие поселения', value: '7203' }, - { label: 'Развитие технологий', value: '1875' }, - { label: 'Разврат', value: '1924' }, - { label: 'Разговор в комнате', value: '8302' }, - { label: 'Раздвоение личности', value: '2062' }, - { label: 'Разные расы', value: '1188' }, - { label: 'Разный социальный статус', value: '8314' }, - { label: 'Разорванная помолвка', value: '2057' }, - { label: 'Разработчик', value: '2333' }, - { label: 'Ранги', value: '1568' }, - { label: 'Ранобэ', value: '1764' }, - { label: 'Расизм', value: '3554' }, - { label: 'Растение', value: '407' }, - { label: 'Расчленение', value: '7125' }, - { label: 'Реализм', value: '1180' }, - { label: 'Реанкарнация', value: '206' }, - { label: 'Ребенок', value: '2881' }, - { label: 'Ревность', value: '293' }, - { label: 'Революция', value: '3996' }, - { label: 'Реинкарнация', value: '1302' }, - { label: 'Реинкарнация в другом мире', value: '2180' }, - { label: 'Реинкарнация в игровой мир', value: '304' }, - { label: 'Рейджер', value: '5147' }, - { label: 'Религия', value: '2184' }, - { label: 'Рем', value: '6655' }, - { label: 'Ремесленник', value: '1483' }, - { label: 'Ремонт', value: '5703' }, - { label: 'Репликаторы', value: '3495' }, - { label: 'Ресторан', value: '7519' }, - { label: 'Риас гремори', value: '6950' }, - { label: 'Рим', value: '612' }, - { label: 'Риннеган', value: '4230' }, - { label: 'Ритуал', value: '1233' }, - { label: 'Робот', value: '4011' }, - { label: 'Роботы', value: '467' }, - { label: 'Рок ли', value: '7002' }, - { label: 'Рокси', value: '7380' }, - { label: 'Романтика', value: '1025' }, - { label: 'Рон уизли', value: '4279' }, - { label: 'Ророноа зоро', value: '1590' }, - { label: 'Росомаха', value: '1035' }, - { label: 'Российская империя', value: '2146' }, - { label: 'Россия', value: '4246' }, - { label: 'Рудеус', value: '7379' }, - { label: 'Руны', value: '2393' }, - { label: 'Русалки', value: '3127' }, - { label: 'Русь', value: '2016' }, - { label: 'Рыцари', value: '1902' }, - { label: 'Рэо хатаке', value: '2823' }, - { label: 'Сабли', value: '6136' }, - { label: 'Сайян', value: '6802' }, - { label: 'Сакура', value: '2515' }, - { label: 'Самец', value: '1592' }, - { label: 'Самоубийство', value: '4312' }, - { label: 'Самураи', value: '576' }, - { label: 'Санса старк', value: '3925' }, - { label: 'Сарказм', value: '4658' }, - { label: 'Саске', value: '7237' }, - { label: 'Сатира', value: '215' }, - { label: 'Сборник', value: '7367' }, - { label: 'Свадьба', value: '1524' }, - { label: 'Сверхсила', value: '1055' }, - { label: 'Сверхъестественное', value: '1074' }, - { label: 'Свингеры', value: '514' }, - { label: 'Свинцовые книги', value: '5322' }, - { label: 'Связывание', value: '4506' }, - { label: 'Священик', value: '61' }, - { label: 'Северус снейп', value: '5783' }, - { label: 'Сёдзе', value: '2219' }, - { label: 'Секс', value: '2472' }, - { label: 'Секс без проникновения', value: '151' }, - { label: 'Секс игрушки', value: '1124' }, - { label: 'Секс по согласию', value: '7307' }, - { label: 'Секс рабыня', value: '7174' }, - { label: 'Секс с близнецами', value: '7457' }, - { label: 'Секс с монстрами', value: '6073' }, - { label: 'Секс с учителем', value: '2570' }, - { label: 'Секса будет много', value: '7265' }, - { label: 'Сексуальные и психологические отклонения', value: '888' }, - { label: 'Секты', value: '1234' }, - { label: 'Селфцест', value: '7498' }, - { label: 'Сельское хозяйство', value: '787' }, - { label: 'Семейный конфликт', value: '935' }, - { label: 'Семья', value: '728' }, - { label: 'Сенджу', value: '6069' }, - { label: 'Сёнэн', value: '2058' }, - { label: 'Серийный убийца', value: '261' }, - { label: 'Сестра', value: '2342' }, - { label: 'Сила глаза', value: '1019' }, - { label: 'Сильная героиня', value: '7292' }, - { label: 'Сильная главная героиня', value: '1994' }, - { label: 'Сильный главный герой', value: '570' }, - { label: 'Сильфиетта', value: '7381' }, - { label: 'Симбиот', value: '2648' }, - { label: 'Сириус блэк', value: '7655' }, - { label: 'Сирота', value: '297' }, - { label: 'Система', value: '251' }, - { label: 'Система уровней', value: '2174' }, - { label: 'Сиськи', value: '16' }, - { label: 'Ситх', value: '1618' }, - { label: 'Сказка', value: '3570' }, - { label: 'Скайрим', value: '4032' }, - { label: 'Скайуокер', value: '6828' }, - { label: 'Сквиб', value: '4101' }, - { label: 'Сквирт', value: '4526' }, - { label: 'Скелет', value: '1315' }, - { label: 'Скрытые способности', value: '3417' }, - { label: 'Скульптор', value: '1178' }, - { label: 'Слабая главная героиня', value: '5805' }, - { label: 'Слабый главный герой', value: '731' }, - { label: 'Славяне', value: '2168' }, - { label: 'Слизерин', value: '6979' }, - { label: 'Слизь', value: '1095' }, - { label: 'Служанка', value: '3486' }, - { label: 'Смартфон', value: '457' }, - { label: 'Смерть', value: '1779' }, - { label: 'Смерть близких', value: '8312' }, - { label: 'Смерть основного персонажа', value: '1530' }, - { label: 'Собаки', value: '6109' }, - { label: 'Соблазн', value: '7994' }, - { label: 'Соблазнение', value: '2290' }, - { label: 'Современность', value: '568' }, - { label: 'Современные знания', value: '988' }, - { label: 'Сожительство', value: '3026' }, - { label: 'Создание армии', value: '1992' }, - { label: 'Создание королевства', value: '1497' }, - { label: 'Создание пилюль', value: '816' }, - { label: 'Создатель', value: '1045' }, - { label: 'Сокровища', value: '6521' }, - { label: 'Сокрытие истинной личности', value: '2894' }, - { label: 'Сома и эрина', value: '5737' }, - { label: 'Соперничество', value: '7699' }, - { label: 'Соседи', value: '4075' }, - { label: 'Сотрудник', value: '6339' }, - { label: 'Социология', value: '7618' }, - { label: 'Спокойная главная героиня', value: '236' }, - { label: 'Спокойный главный герой', value: '1656' }, - { label: 'Спор', value: '3484' }, - { label: 'Спорт', value: '1387' }, - { label: 'Спортивное тело', value: '8317' }, - { label: 'Способность кражи', value: '7784' }, - { label: 'Сражения', value: '23' }, - { label: 'Средневековье', value: '1022' }, - { label: 'Сталкер', value: '1932' }, - { label: 'Становление государства', value: '111' }, - { label: 'Старшая школа', value: '1658' }, - { label: 'Стёб', value: '454' }, - { label: 'Стекло', value: '7453' }, - { label: 'Стеснительный персонаж', value: '152' }, - { label: 'Стимпанк', value: '1894' }, - { label: 'Стихи', value: '1309' }, - { label: 'Стратегия', value: '569' }, - { label: 'Стриптиз', value: '6914' }, - { label: 'Строительство', value: '921' }, - { label: 'Студент', value: '1464' }, - { label: 'Студентка', value: '7518' }, - { label: 'Суккубы', value: '2662' }, - { label: 'Супер зрение', value: '6574' }, - { label: 'Супер удача', value: '489' }, - { label: 'Супергерои', value: '1481' }, - { label: 'Суперзлодеи', value: '2125' }, - { label: 'Супермен', value: '6997' }, - { label: 'Суперсилы', value: '2276' }, - { label: 'Существа', value: '6033' }, - { label: 'Сферы', value: '1077' }, - { label: 'Схемы и заговоры', value: '7116' }, - { label: 'Сценарий', value: '7489' }, - { label: 'Счастливый конец', value: '3293' }, - { label: 'Сын', value: '3297' }, - { label: 'Сэйнэн', value: '345' }, - { label: 'Сэм винчестер', value: '7461' }, - { label: 'Сюаньхуа', value: '2560' }, - { label: 'Сюжетные повороты', value: '7202' }, - { label: 'Сянься', value: '1126' }, - { label: 'Таблетки для развития', value: '589' }, - { label: 'Табу', value: '8304' }, - { label: 'Таинственное прошлое', value: '769' }, - { label: 'Тайная личность', value: '8096' }, - { label: 'Тайная любовь', value: '113' }, - { label: 'Тайны', value: '7481' }, - { label: 'Тайные отношения', value: '7450' }, - { label: 'Тайцы', value: '6413' }, - { label: 'Танки', value: '1787' }, - { label: 'Твинцест', value: '2450' }, - { label: 'Творчество', value: '20' }, - { label: 'Тейлор эберт', value: '3526' }, - { label: 'Телекинез', value: '2203' }, - { label: 'Телепортация', value: '914' }, - { label: 'Телохранитель', value: '723' }, - { label: 'Темари', value: '4810' }, - { label: 'Темная магия', value: '4788' }, - { label: 'Темное фэнтези', value: '1675' }, - { label: 'Темные эльфы', value: '7198' }, - { label: 'Тенсейган', value: '4367' }, - { label: 'Тентакли', value: '3236' }, - { label: 'Тетя', value: '4194' }, - { label: 'Техномагия', value: '508' }, - { label: 'Тиран', value: '1174' }, - { label: 'Титаны', value: '3308' }, - { label: 'Тодороки шото', value: '5105' }, - { label: 'Токио', value: '5791' }, - { label: 'Том реддл', value: '6652' }, - { label: 'Тони старк', value: '1338' }, - { label: 'Тор', value: '1800' }, - { label: 'Тор и локи', value: '2645' }, - { label: 'Торговля', value: '1637' }, - { label: 'Травничество', value: '221' }, - { label: 'Трагедия', value: '470' }, - { label: 'Трагическое прошлое', value: '644' }, - { label: 'Трактир', value: '1918' }, - { label: 'Трансмиграция', value: '1071' }, - { label: 'Трансформация', value: '156' }, - { label: 'Трансформеры', value: '4616' }, - { label: 'Тревор филипс', value: '5427' }, - { label: 'Триллер', value: '1676' }, - { label: 'Тройняшки', value: '7169' }, - { label: 'Троли', value: '4250' }, - { label: 'Трудолюбивый главный герой', value: '248' }, - { label: 'Тупой главный герой', value: '3710' }, - { label: 'Тьма', value: '1919' }, - { label: 'Тюрьма', value: '5597' }, - { label: 'Тяжёлое детство', value: '2253' }, - { label: 'Убийства', value: '378' }, - { label: 'Убийцы', value: '1766' }, - { label: 'Убийцы драконов', value: '1484' }, - { label: 'Увечья', value: '3266' }, - { label: 'Удача', value: '6575' }, - { label: 'Ужасы', value: '1747' }, - { label: 'Узумаки', value: '7579' }, - { label: 'Укротитель', value: '367' }, - { label: 'Умения', value: '531' }, - { label: 'Умная главная героиня', value: '1381' }, - { label: 'Умные персонажи', value: '2756' }, - { label: 'Умный главный герой', value: '2093' }, - { label: 'Университет', value: '2102' }, - { label: 'Уничтожение мира', value: '81' }, - { label: 'Управление временем', value: '5648' }, - { label: 'Уровни', value: '8' }, - { label: 'Усиление', value: '3549' }, - { label: 'Усопп', value: '6737' }, - { label: 'Устроенный брак', value: '2223' }, - { label: 'Усыновление', value: '395' }, - { label: 'Уся', value: '1172' }, - { label: 'Утопия', value: '4677' }, - { label: 'Уход за детьми', value: '7609' }, - { label: 'Учеба в университете', value: '2797' }, - { label: 'Учебное заведение', value: '1817' }, - { label: 'Ученые', value: '1843' }, - { label: 'Учитель', value: '845' }, - { label: 'Учиха', value: '5348' }, - { label: 'Фамильяры', value: '1471' }, - { label: 'Фанатичная любовь', value: '6721' }, - { label: 'Фанаты', value: '7739' }, - { label: 'Фантастика', value: '286' }, - { label: 'Фантастический мир', value: '2414' }, - { label: 'Фанфик', value: '767' }, - { label: 'Фармацевт', value: '1706' }, - { label: 'Фашисты', value: '3118' }, - { label: 'Феи', value: '7185' }, - { label: 'Фелляция', value: '5880' }, - { label: 'Феминизм', value: '6527' }, - { label: 'Феникс', value: '2413' }, - { label: 'Фенрир', value: '2740' }, - { label: 'Феодализм', value: '280' }, - { label: 'Ферма', value: '285' }, - { label: 'Фетиш', value: '2398' }, - { label: 'Фехтовальщик', value: '4685' }, - { label: 'Филиппины', value: '128' }, - { label: 'Философия', value: '1859' }, - { label: 'Фистинг', value: '4206' }, - { label: 'Флафф', value: '5048' }, - { label: 'Флер делакур', value: '5191' }, - { label: 'Флэш', value: '4667' }, - { label: 'Фокусник', value: '7602' }, - { label: 'Фольклор', value: '4086' }, - { label: 'Фугаку', value: '6161' }, - { label: 'Фурри', value: '6631' }, - { label: 'Футбол', value: '1121' }, - { label: 'Фэнтези', value: '174' }, - { label: 'Фэнтезийный мир', value: '1556' }, - { label: 'Хакер', value: '475' }, - { label: 'Халк', value: '1196' }, - { label: 'Хан нуньен синг', value: '4817' }, - { label: 'Ханма юджиро', value: '4369' }, - { label: 'Хаос', value: '3117' }, - { label: 'Харизматичный главный герой', value: '2350' }, - { label: 'Хатаке какаши', value: '2820' }, - { label: 'Хентай', value: '1682' }, - { label: 'Хиддлстон', value: '5903' }, - { label: 'Химавари', value: '2583' }, - { label: 'Хината', value: '2513' }, - { label: 'Хитрый главный герой', value: '2036' }, - { label: 'Хоббит', value: '6698' }, - { label: 'Хогвартс', value: '5954' }, - { label: 'Холодная главная героиня', value: '6507' }, - { label: 'Холодное оружие', value: '4889' }, - { label: 'Холодный главный герой', value: '2686' }, - { label: 'Храм', value: '2135' }, - { label: 'Христианство', value: '877' }, - { label: 'Художественная литература', value: '2380' }, - { label: 'Художница', value: '518' }, - { label: 'Хулиганы', value: '854' }, - { label: 'Цветок', value: '902' }, - { label: 'Цезарь', value: '1705' }, - { label: 'Целители', value: '4523' }, - { label: 'Церковь', value: '1980' }, - { label: 'Цундере', value: '1078' }, - { label: 'Чакра', value: '1393' }, - { label: 'Черная пантера', value: '8330' }, - { label: 'Черный юмор', value: '2868' }, - { label: 'Честная главная героиня', value: '5855' }, - { label: 'Честный главный герой', value: '129' }, - { label: 'Читы', value: '451' }, - { label: 'Шантаж', value: '7175' }, - { label: 'Шаринган', value: '5165' }, - { label: 'Шинигами', value: '4661' }, - { label: 'Шиноби', value: '1227' }, - { label: 'Школьная жизнь', value: '284' }, - { label: 'Школьники', value: '218' }, - { label: 'Школьницы', value: '5946' }, - { label: 'Шлюха', value: '5822' }, - { label: 'Шоу-бизнес', value: '7119' }, - { label: 'Шпионы', value: '4262' }, - { label: 'Эволюция', value: '2040' }, - { label: 'Экзорцизм', value: '676' }, - { label: 'Экономика', value: '121' }, - { label: 'Эксгибиционизм', value: '1643' }, - { label: 'Экспансия', value: '110' }, - { label: 'Эксперименты над людьми', value: '7408' }, - { label: 'Экшен', value: '2859' }, - { label: 'Элементальная магия', value: '1264' }, - { label: 'Элементы бдсм', value: '1323' }, - { label: 'Элементы рпг', value: '8316' }, - { label: 'Эльфы', value: '1362' }, - { label: 'Эротика', value: '2053' }, - { label: 'Этти', value: '1317' }, - { label: 'Юмор', value: '7360' }, - { label: 'Яды', value: '201' }, - { label: 'Якудза', value: '4599' }, - { label: 'Яндере', value: '7111' }, - { label: '12+', value: '3316' }, - { label: '16+', value: '83' }, - { label: '18+', value: '1749' }, - { label: '21+', value: '3191' }, - { label: 'Bdsm', value: '8320' }, - { label: 'Bl', value: '8282' }, - { label: 'Bo', value: '8318' }, - { label: 'Gl', value: '8284' }, - { label: 'Marvel', value: '8329' }, - { label: 'Rpg', value: '90' }, - { label: 'Star wars', value: '1985' }, - { label: 'Time skip', value: '824' }, - { label: 'Warrior of light', value: '5289' }, - ], - inputType: FilterInputs.Checkbox, - }, - { - key: 'adult', - label: 'Возрастные ограничения', - values: [ - { label: 'Все', value: '0' }, - { label: 'Убрать 18+', value: '1' }, - { label: 'Только 18+', value: '2' }, - ], - inputType: FilterInputs.Picker, - }, -]; - -const RulateLibScraper = { - popularNovels, - parseNovelAndChapters, - parseChapter, - searchNovels, - filters, -}; - -export default RulateLibScraper; diff --git a/src/sources/sourceManager.ts b/src/sources/sourceManager.ts index 664e3dc2..8639a905 100644 --- a/src/sources/sourceManager.ts +++ b/src/sources/sourceManager.ts @@ -91,7 +91,6 @@ import RanobeHubScraper from './ru/ranobehub'; import RanobeLibScraper from './ru/ranobelib'; import RanobeRFScraper from './ru/ranoberf'; import RenovelsScraper from './ru/renovels'; -import RulateScraper from './ru/rulate'; import FicbookScraper from './ru/ficbook'; import DivineDaoLibraryScraper from './en/divinedaolibrary'; import NovelOnlineFullScraper from './en/novelonlinefull'; @@ -135,6 +134,26 @@ import { } from './multisrc/wqmangastream/WQMangaStreamGenerator'; import AgitoonScraper from './kr/Agitoon'; import PawReadScraper from './en/pawread'; +import { + RulateScraper, + ErolateScraper, +} from './multisrc/rulate/RulateGenerator'; +import { + RuRanobeScraper, + UkrRanobeScraper, + NightnovelScraper, + KgRanobeScraper, + AxelScraper, + SferdrakonScraper, + OriginalScraper, + SnailulitkaScraper, + TsundokuScraper, + JapitScraper, + BelScraper, + RedScraper, + SiScraper, + KodScraper, +} from './multisrc/noveltl/NovelTlGenerator'; interface PopularNovelsResponse { novels: SourceNovelItem[]; @@ -288,6 +307,21 @@ export const sourceManager = (sourceId: number): Scraper => { 145: AgitoonScraper, // @ts-ignore 146: PandaMtlScraper, // @ts-ignore 147: PawReadScraper, // @ts-ignore + 148: ErolateScraper, // @ts-ignore + 149: RuRanobeScraper, // @ts-ignore + 150: UkrRanobeScraper, // @ts-ignore + 151: NightnovelScraper, // @ts-ignore + 152: KgRanobeScraper, // @ts-ignore + 153: AxelScraper, // @ts-ignore + 154: SferdrakonScraper, // @ts-ignore + 155: OriginalScraper, // @ts-ignore + 156: SnailulitkaScraper, // @ts-ignore + 157: TsundokuScraper, // @ts-ignore + 158: JapitScraper, // @ts-ignore + 159: BelScraper, // @ts-ignore + 160: RedScraper, // @ts-ignore + 161: SiScraper, // @ts-ignore + 162: KodScraper, // @ts-ignore }; return scrapers[sourceId]; diff --git a/src/sources/sources.json b/src/sources/sources.json index ffc473cf..c1900530 100644 --- a/src/sources/sources.json +++ b/src/sources/sources.json @@ -880,5 +880,110 @@ "icon": "https://www.pawread.com/favicon.ico", "url": "https://pawread.com/", "lang": "English" + }, + { + "sourceId": 148, + "sourceName": "Erolate", + "url": "https://erolate.com", + "lang": "Russian", + "icon": "https://erolate.com/i/logo/erolate.png" + }, + { + "sourceId": 149, + "sourceName": "РуРанобэ", + "url": "https://ruranobe.ru", + "lang": "Russian", + "icon": "https://ruranobe.ru/logo.png" + }, + { + "sourceId": 150, + "sourceName": "Переклади українською мовою", + "url": "https://ukr.novel.tl", + "lang": "Ukraine", + "icon": "https://ukr.novel.tl/logo.png" + }, + { + "sourceId": 151, + "sourceName": "Nightnovel", + "url": "https://nightnovel.online", + "lang": "Russian", + "icon": "https://nightnovel.online/logo.png" + }, + { + "sourceId": 152, + "sourceName": "Карманная галактика", + "url": "https://kg.novel.tl", + "lang": "Russian", + "icon": "https://kg.novel.tl/logo.png" + }, + { + "sourceId": 153, + "sourceName": "Аксел", + "url": "https://axel.znovel.space", + "lang": "Russian", + "icon": "https://axel.znovel.space/logo.png" + }, + { + "sourceId": 154, + "sourceName": "Уголок дракона", + "url": "https://sferdrakon.novel.tl", + "lang": "Russian", + "icon": "https://sferdrakon.novel.tl/logo.png" + }, + { + "sourceId": 155, + "sourceName": "Авторские работы", + "url": "https://original.novel.tl", + "lang": "Russian", + "icon": "https://original.novel.tl/logo.png" + }, + { + "sourceId": 156, + "sourceName": "Snailulitka", + "url": "https://snailulitka.novel.tl", + "lang": "Russian", + "icon": "https://snailulitka.novel.tl/logo.png" + }, + { + "sourceId": 157, + "sourceName": "TsundokuTrans", + "url": "https://tsundoku.novel.tl", + "lang": "Russian", + "icon": "https://tsundoku.novel.tl/logo.png" + }, + { + "sourceId": 158, + "sourceName": "Japit Comics", + "url": "https://japit.novel.tl", + "lang": "Russian", + "icon": "https://japit.novel.tl/logo.png" + }, + { + "sourceId": 159, + "sourceName": "Белманга", + "url": "https://bel.novel.tl", + "lang": "Belarus", + "icon": "https://bel.novel.tl/logo.png" + }, + { + "sourceId": 160, + "sourceName": "Север и Юг", + "url": "https://red.novel.tl", + "lang": "Russian", + "icon": "https://red.novel.tl/logo.png" + }, + { + "sourceId": 161, + "sourceName": "Сказочные истории", + "url": "https://si.novel.tl", + "lang": "Russian", + "icon": "https://si.novel.tl/logo.png" + }, + { + "sourceId": 162, + "sourceName": "K.O.D.", + "url": "https://kod.novel.tl", + "lang": "Russian", + "icon": "https://kod.novel.tl/logo.png" } ] diff --git a/src/utils/constants/languages.ts b/src/utils/constants/languages.ts index 3f68eca5..40f1d86a 100644 --- a/src/utils/constants/languages.ts +++ b/src/utils/constants/languages.ts @@ -1,5 +1,6 @@ export const languages = [ 'Arabic', + 'Belarus', 'Chinese', 'English', 'French', @@ -10,5 +11,6 @@ export const languages = [ 'Russian', 'Spanish', 'Turkish', + 'Ukraine', 'Vietnamese', ];