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

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

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]]
],
];
Скриншот интерфейса с настройками выше