From dd3685990b0fecd56c181699c729c3b5e52dfde9 Mon Sep 17 00:00:00 2001 From: Book Pauk Date: Mon, 12 Sep 2022 16:15:30 +0700 Subject: [PATCH] =?UTF-8?q?=D0=9F=D0=BE=D0=BF=D1=80=D0=B0=D0=B2=D0=BA?= =?UTF-8?q?=D0=B8=20=D0=B4=D0=B5=D1=80=D0=B5=D0=B2=D0=B0=20=D0=B6=D0=B0?= =?UTF-8?q?=D0=BD=D1=80=D0=BE=D0=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- server/core/genres/genresText.js | 181 ++++++++++++++++++++++++++++++- server/core/genres/index.js | 62 +++++++---- 2 files changed, 221 insertions(+), 22 deletions(-) diff --git a/server/core/genres/genresText.js b/server/core/genres/genresText.js index 2ef4488..173939a 100644 --- a/server/core/genres/genresText.js +++ b/server/core/genres/genresText.js @@ -24,7 +24,7 @@ module.exports = ` 0.22 Учебники и пособия 0.0 Неотсортированное #---------- 0.1 Фантастика ---------- -0.1.1 sf_history;Альтернативная история, попаданцы +0.1.1 sf_history;Альтернативная история 0.1.2 sf_action;Боевая фантастика 0.1.3 sf_epic;Эпическая фантастика 0.1.4 sf_heroic;Героическая фантастика @@ -47,7 +47,7 @@ module.exports = ` 0.1.231 sf_mystic;Мистика 0.1.232 sf_stimpank;Стимпанк 0.1.233 modern_tale;Современная сказка -0.1.234 popadancy;Попаданцы +0.1.254 popadancy;Попаданцы #---------- 0.2 Детективы и Триллеры ---------- 0.2.13 det_classic;Классический детектив 0.2.14 det_police;Полицейский детектив @@ -275,5 +275,180 @@ module.exports = ` 0.22.250 tbg_school;Школьные учебники и пособия, рефераты, шпаргалки 0.22.251 tbg_secondary;Учебники и пособия для среднего и специального образования 0.22.252 tbg_higher;Учебники и пособия ВУЗов -#---------- 2021-07-22 11:35:50.469539---------- +#---------- 2022-04-28 16:16:05.605170---------- + +#nonfb2 +#---------- Список жанров НЕ-fb2 ----------# +0.1 study;Учебная литература +0.1.0 study_preschool;Дошкольникам +0.1.1 study_scool;Школьникам +0.1.2 study_students;Студентам +0.1.3 study_graduate;Аспирантам +0.2 home;Дом. Быт. Досуг +0.2.0 home_child;Дети. Книги для родителей +0.2.1 home_health;Красота. Здоровье. +0.2.2 home_handiwork;Рукоделие. Домоводство +0.2.3 home_garden;Сад, огород, цветник, дизайн участка +0.2.4 home_cooking;Кулинария +0.2.5 home_pets;Домашние питомцы +0.2.6 home_collecting;Коллекционирование +0.2.7 home_sex;Любовь, эротика +0.2.8 home_diy;Строительство, ремонт +0.2.9 home_crafts;Увлечения. Хобби +0.3 arts;Искусство +0.3.0 arts_albums;Альбомы по искусству. Фотоальбомы +0.3.1 art_visual;Изобразительное искусство. Архитектура +0.3.2 art_sci;Искусствоведение +0.3.3 art_film;Кино. Киноведение +0.3.4 art_dance;Танец. Хореография +0.3.5 art_theater;Театр. Сценическое искусство +0.3.6 design;Дизайн +0.4 languages;Иностранные языки +0.4.0 lang_rus;Русский язык +0.4.1 lag_eng;Английский язык +0.4.1.0 lang_eng_textbook;Учебники, пособия +0.4.1.1 lang_eng_dict;Словари +0.4.1.2 lang_eng_read;Домашнее чтение +0.4.1.3 lang_eng_theor;Теория и история +0.4.1.4 lang_eng_phrase;Разговорники +0.4.2 lang_arab;Арабский язык +0.4.3 lang_east;Восточные языки +0.4.4 lang_euro;Европейские языки +0.4.5 lang_spanish;Испанский язык +0.4.6 lang_it;Итальянский язык +0.4.7 lang_chi;Китайский язык +0.4.8 lang_korean;Корейский язык +0.4.9 lang_lat;Латинский язык +0.4.10 lang_de;Немецкий язык +0.4.11 lang_pl;Польский язык +0.4.12 lang_tu;Турецкий язык +0.4.13 lang_fr;Французский язык +0.4.14 lang_jap;Японский язык +0.4.15 lang_greek;Древнегреческий и другие древние языки +0.5 computers;Компьютерная литература +0.5.0 comp_soft_office;Офисные программы +0.5.1 comp_db;Базы данных +0.5.1.0 comp_db_db2;DB2 +0.5.1.1 comp_db_mysql;MySQL +0.5.1.2 comp_db_mssqlserver;MS SQL Server +0.5.1.3 comp_db_oracle;Oracle +0.5.1.4 comp_db_postgresql;PostgreSQL +0.5.1.5 comp_db_sqlite;SQLite +0.5.1.6 comp_db_sybase;Sybase SQL +0.5.1.7 comp_dv_ai;Искуственный интеллект +0.5.1.8 comp_db_exp;Экспертные системы +0.5.2 comp_design;Графика. Дизайн. Мультимедиа +0.5.3 comp_www;Интернет и Web-страницы +0.5.3.0 comp_www_html;HTML +0.5.3.1 comp_www_css;CSS +0.5.3.2 comp_www_cms;CMS +0.5.4 comp_security;Компьютерная безопасность +0.5.5 comp_osnet;Сети +0.5.6 comp_soft;Компьютеры и программы +0.5.7 comp_os;Операционные системы +0.5.7.0 comp_os_windows;Windows +0.5.7.1 comp_os_linux;Linux +0.5.7.2 comp_os_unix;UNIX +0.5.8 comp_soft_dev;Разработка ПО +0.5.8.0 comp_soft_dev_alg;Алгоритмы +0.5.8.1 comp_soft_dev_man;Менеджмент +0.5.8.2 comp_soft_dev_debug;Отладка +0.5.9 comp_soft_cad;Системы проектирования +0.5.10 comp_programming;Языки и системы программирования +0.5.10.0 comp_prog_delphi;Delphi +0.5.10.1 comp_prog_pascal;Pascal +0.5.10.2 comp_prog_c;C +0.5.10.3 comp_prog_cpp;C++ +0.5.10.3.0 comp_prog_gnuc;GNU C++ +0.5.10.3.1 comp_prog_msvc;MS Visual Studio +0.5.10.3.2 comp_prog_qt;Qt +0.5.10.4 comp_prog_csharp;C# +0.5.10.5 comp_prog_java;Java +0.5.10.6 comp_prog_js;JavaScript +0.5.10.7 comp_prog_php;PHP +0.5.10.8 comp_prog_pyton;Pyton +0.5.10.9 comp_prog_ror;Ruby +0.5.11 comp_dig_photo;Цифровая фотография +0.5.12 comp_exam;Сертификационные экзамены +0.5.13 comp_hard;Железо +0.7 nonfiction;Публицистика +0.7.0 nonf_biography;Биографии, мемуары +0.7.1 nonf_publicism;Публицистика +0.7.2 nonf_criticism;Критика +0.8 Туризм. Фото. Спорт +0.8.0 turism;Путешествия. Туризм +0.8.1 auto;Автомобиль +0.8.3 fish;Рыбалка +0.8.4 hunt;Охота +0.8.5 sport;Спорт +0.9 religion;Религия. Изотерика +0.9.0 religion_esoterics;Эзотерика +0.9.1 religion_self;Самосовершенствование +0.9.2 religion_budda;Буддизм +0.10 science;Наука. Техника +0.10.0 sci_tech;Техника. Технические науки +0.10.0.0 sci_tech_industry;Промышленность +0.10.0.0.0 sci_tech_oil;Нефть, газ +0.10.0.0.1 sci_tech_machinery;Машиностроение +0.10.0.0.2 sci_metal;Металлургия +0.10.0.0.3 sci_tech_print;Полиграфия +0.10.0.0.4 sci_tech_chem;Химическая +0.10.0.1 sci_radio;Радиоэлектроника, радиотехника, связь +0.10.0.2 sci_build;Строительство +0.10.0.3 none;Технические науки +0.10.0.3.0 sci_tech_sopromat;Сопротивление материалов +0.10.0.3.1 sci_tech_theormech;Теория машин +0.10.0.3.2 sci_tech_ref;Справочники +0.10.0.4 sci_transport;Транспорт +0.10.0.5 sci_energy;Энергетика. Электротехника +0.10.1 none;Естественные науки +0.10.1.0 sci_phys;Физика +0.10.1.0.0 sci_phys_acustics;Акустика +0.10.1.0.1 sci_phys_quant;Квантовая механика. Теория поля +0.10.1.0.2 sci_phys_math;Математическая физика +0.10.1.0.3 sci_phys_molecular;Молекулярная физика. Физика газов и жидкостей +0.10.1.0.4 sci_phys_gen;Общие работы по физике +0.10.1.0.5 sci_phys_optics;Оптика +0.10.1.0.6 sci_phys_theor;Теоретическая физика +0.10.1.0.7 sci_phys_thermo;Термодинамика и статистическая физика +0.10.1.0.8 sci_phys_plasma;Физика плазмы +0.10.1.0.9 sci_phys_nuclear;Физика атомного ядра и элементарных частиц +0.10.1.0.10 sci_phys_solidstate;Физика твердого тела. Кристаллография +0.10.1.0.11 sci_phys_em;Электричество и магнетизм +0.10.1.0.12 sci_phys_ref;Энциклопедии, справочники, словари по физике +0.10.1.1 sci_chem;Химические +0.10.1.1.0 sci_hem_general;Общая химия +0.10.1.1.1 sci_orgchem;Органическая химия +0.10.1.1.2 sci_anachem;Аналитическая химия +0.10.1.1.3 sci_physchem;Физическая химия +0.10.1.2 none;Географические +0.10.1.3 sci_biology;Биологические +0.10.1.3.0 sci_biophys;Биофизика +0.10.1.4 sci_math;Математика +0.10.2 none;Ветеринария. Животноводство. Сельское хозяйство +0.10.3 sicial;Общественные и гуманитарные науки +0.10.3.0 sicial_var;Военное дело. Оружие. Спецслужбы +0.10.3.1 sicial_hist;История. Археология. Этнография +0.10.3.2 sicial_lit;Литературоведение. Фольклор +0.10.3.3 sicial_ped;Педагогика +0.10.3.4 sicial_pol;Политика +0.10.3.5 sicial_law;Право. Юриспруденция +0.10.3.6 sicial_psi;Психология +0.10.3.7 sicial_sicial;Социология +0.10.3.8 sicial_smi;Средства массовой информации. Книжное дело +0.10.3.9 sicial_stat;Статистика. Демография +0.10.3.10 sicial_phy;Философия +0.10.3.11 sicial_lang;Языкознание. Филологические науки +0.11 sci_medicine;Медицина +0.11.0 sci_medicine_alternative;Нетрадиционная медицина +0.12 reference;Справочная литература +0.12.0 ref_encyc;Энциклопедии +0.12.1 ref_dict;Словари +0.12.2 ref_ref;Справочники +0.12.3 ref_guide;Руководства +0.12.4 geo_guides;Путеводители +0.13 periodic;Периодика +0.13.0 periodic_newspaper;Газеты +0.13.1 periodic_mag;Журналы +0.0 none;Неотсортированное `; \ No newline at end of file diff --git a/server/core/genres/index.js b/server/core/genres/index.js index 22f440a..e9b52e3 100644 --- a/server/core/genres/index.js +++ b/server/core/genres/index.js @@ -1,13 +1,20 @@ const genresText = require('./genresText.js'); const genres = []; +const nonfb2Genres = [];//костылики +let nonfb2 = false;//костылики const sec2index = {}; const lines = genresText.split('\n').map(l => l.trim()); let index = 0; + let other;//прочее в конец +const names = new Set(); for (const line of lines) { + if (line.indexOf('#nonfb2') == 0) + nonfb2 = true; + if (!line || line[0] == '#') continue; @@ -22,32 +29,49 @@ for (const line of lines) { let name = line.substring(p + 1).trim(); - if (num.length < 3) {//раздел - if (section == '0.20') {//прочее - other = {name, value: []}; - } else { - if (sec2index[section] === undefined) { - if (!genres[index]) - genres[index] = {name, value: []}; - sec2index[section] = index; - index++; + if (!nonfb2) { + if (num.length < 3) {//раздел + if (section == '0.20') {//прочее + other = {name, value: []}; + } else { + if (sec2index[section] === undefined) { + if (!genres[index]) + genres[index] = {name, value: []}; + sec2index[section] = index; + index++; + } + } + } else {//подраздел + const n = name.split(';').map(l => l.trim()); + names.add(n[0]); + + if (section == '0.20') {//прочее + other.value.push({name: n[1], value: n[0]}); + } else { + const i = sec2index[section]; + if (i !== undefined) { + genres[i].value.push({name: n[1], value: n[0]}); + } } } - } else {//подраздел + } else { const n = name.split(';').map(l => l.trim()); - if (section == '0.20') {//прочее - other.value.push({name: n[1], value: n[0]}); - } else { - const i = sec2index[section]; - if (i !== undefined) { - genres[i].value.push({name: n[1], value: n[0]}); - } - } + if (!names.has(n[0])) + nonfb2Genres.push({name: n[1], value: n[0]}); + + names.add(n[0]); } } -if (other) +if (other) { + if (nonfb2Genres.length) { + other.value = other.value.concat(nonfb2Genres); + } + genres.push(other); +} + +//console.log(JSON.stringify(genres)); module.exports = genres; \ No newline at end of file