Поправки дерева жанров

This commit is contained in:
Book Pauk
2022-09-12 16:15:30 +07:00
parent 75773a3e20
commit dd3685990b
2 changed files with 221 additions and 22 deletions

View File

@@ -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;Неотсортированное
`;

View File

@@ -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;