Перейти к основному содержимому

Конфигурация через интерфейс

A-Parser позволяет задавать конфигурацию в декларативном стиле, а также использовать интерфейс для создания и редактирования пресетов без необходимости модификации исходного кода парсеров

static defaultConf​

static defaultConf = {
version: '0.0.1',
results: {
flat: [
['title', 'Title'],
],
arrays: {
}
},
results_format: "Title: $title\n",
exampleKey: 'value',
};

Конфигурация парсера по умолчанию, конфиг будет доступен в объекте класса через свойство this.conf, обязательными являются следующие поля:

  • results - описывает в декларативном стиле результаты, которые может возвращать данный парсер

  • results_format - задает формат результата по умолчанию

Все остальные поля являются опциональными, существует следующий список параметров, которые влияют на работу парсера:

Название параметраТипОписание (значение по умолчанию)
timeoutnumberМаксимальное время ожидания запроса в секундах (60)
useproxyboolean / 0 / 1Определяет использовать ли прокси (1)
max_sizenumberМаксимальный размер файла результата (1 * 1024 * 1024)
proxyretriesnumberКоличество попыток на каждый запрос, если запрос не удаётся выполнить за указанное число попыток то он считается неудачным и пропускается (10)
requestdelaynumber / stringЗадержка между запросами в секундах (0). Также можно задавать случайное значение в промежутке, например 10,30 - задержка от 10 до 30 секунд
proxybannedcleanupnumberВремя бана прокси в секундах (600)
pagecountnumberКоличество страниц парсинга (1)
parsecodes{ [code: string]: any }Значение кодов ответов для запросов которые будут считаться успешными (any)
queryformatstringФормат запроса ($query)
примечание

Вы также можете задавать произвольные поля, которые могут быть доступны для редактирования через интерфейс

static editableConf​

Данная настройка задает список полей конфигурации, которые могут быть отредактированы через интерфейс. Существуют следующие типы полей в интерфейсе:

  • textfield - поле для произвольного ввода числовых и строковых значений
  • checkbox - флаг с состояниями включен/выключен
  • combobox - дропдаун с выбором одного или нескольких значений
  • выбор нескольких значений задается через опцию { multiSelect: 1 }

editableConf представляет собой массив, каждый элемент которого описывает соответствующее поле конфигурации:

static editableConf: [
...[
fieldName: string,
fieldConfig: [
fieldType: 'textfield' | 'combobox' | 'checkbox',
fieldLabel: string,
fieldOptions?: {},
...fieldValues: [fieldValue: any, valueTitle: string][]
]
][]
];

Пример объявления редактируемых полей:

static get editableConf() {
let editableConf: typeof BaseParser.editableConf = [
['device',
['combobox', 'Device',
['desktop', 'Modern desktop computer (Windows 10, Chrome 84)'],
['mobile', 'Mobile device (iPhone X, iOS 11)']
]
],
['pagecount', ['combobox', 'Pages count']],
['linksperpage',
['combobox', 'Links per page',
[10, '10'],
[20, '20'],
[30, '30'],
[50, '50']
]
],
];

for (let page = 1; page <= 25; page++)
editableConf[1][1].push([page, page]);

return editableConf;
}
Скриншот интерфейса с настройками выше
примечание

Обратите внимание, в данном примере использован метод-геттер для editableConf, что позволяет производить дополнительную обработку, например генерацию списка страниц. Для более простых случаев вы можете задавать статические свойства класса, аналогично как и для defaultConf

static parserOptions​

parserOptions является альтернативным вариантом задания настроек, список опций отображается как дополнительные пункты в контекстном меню парсера

Декларирование опций работает аналогично editableConf:

static parserOptions: [
...[
fieldName: string,
menuTitle: string,
fieldConfig: [
fieldType: 'textfield' | 'combobox' | 'checkbox',
fieldLabel: string,
fieldOptions?: {},
...fieldValues: [fieldValue: any, valueTitle: string][]
]
][]
];

Пример объявления дополнительных полей:

static parserOptions: typeof BaseParser.parserOptions = [
['parseAll', 'Parse all results',
['checkbox', 'Parse all results']
],
['parseLevel', 'Parse related to level',
['combobox', 'Parse Related to level', [1, 1], [2, 2], [3, 3]]
],
];
Скриншот интерфейса с настройками выше