Автор дополнения
Павел
Пакетов
32
Закачек
43 909
Обычно отвечает в течение нескольких дней
Автор дополнения
Пакетов
32
Закачек
43 909
Обычно отвечает в течение нескольких дней
Версия 1.11.20-beta
Дата выпуска 17.08.2023
Загрузки 701
Просмотры 18 892
Внимание, этот компонент требует версию PHP 7.0 или выше! Если ваш сайт использует PHP ниже требуемого, установка этого дополнения может его сломать.
Внимание, этот компонент требует версию MODX не ниже 2.3 !
При добавлении полей ленты, которые надо парсить, вместо названия поля (title или enclosure[url]) можно указать @INLINE чанк, который будет обработан Fenom. Благодаря этому, в этих полях можно выстраивать совершенно любую логику, вплоть до создания новых разделов «на ходу».

Подробнее о работе


Ставилась задача по максимуму упростить взаимодействие с компонентом.

Добавляем задание

Заходим на страницу компонента, жмём Добавить задание => Добавить RSS-ленту.
На вкладке Основное заполняем примерно так:


Переключаемся на вкладку Конфигурация, где можно указать:
  • Шаблон для создаваемых ресурсов,
  • контекст,
  • родительский контейнер в пределах выбранного контекста,
  • сконфигурировать скачивание медиа-контента,
  • при необходимости поменять базовый тег ленты и базовый тег записи.

Расширения медиа-контента и папки для сохранения каждого из расширений указываются в JSON.

Жмём Сохранить — задание добавлено.

Добавляем поля для парсинга

На только что добавленном задании нажимаем правой кнопкой и выбираем Поля задания:

Откроется список полей задания, который пока пуст.

Помимо добавления задания мы можем просмотреть Массив значений ленты — это распечатанный массив с данным из первой записи ленты:


Запоминаем названия полей, которые нам надо парсить на сайт и кликаем Добавить поле. Откроется окошко с возможностью указать:

  1. Системное поле. Выпадающий список системных полей ресурса и ТВ-полей.

     

  2. Поле в источнике. Текстовое поле, в которое нужно ввести наименование тега в RSS-ленте.
    Можно указать @INLINE чанк, который будет обработан Fenom из pdoTools. В чанке содержатся плейсхолдеры всех возможных полей из RSS-ленты, которые имеются в записи между тегами item, а также массив с настройками задания $_task.
    За счёт внедрения в данное поле Fenom, можно будет, получая значение из тега category (как например в RSS Lenta.ru) делать выборку по базе ресурсов, в поисках ID аналогичной категории на нашем сайте, а если не найдено — добавлять.
    Тег enclosure и ему подобные, указываются либо через чанк: «@INLINE {$enclosure['url']}», либо в виде CSS селектора: «enclosure[url]».
    Если не указано или значение по данному полю в ленте пустое, то в качестве значения для Системное поле будет взято значение из следующего поля — Значение по-умолчанию.

     

  3. Значение по умолчанию. В данном поле можно указать значение, которое будет записано в Системное поле. Например, если мы в Системное поле выбрали class_key, то, чтобы создавались Тикеты, мы в поле Значение по умолчанию пишем «Ticket», а Поле в источнике оставляем пустым.
    Такую же «магию» можно сделать и с полем published, указав в значении по умолчанию цифру «1». Тогда ресурс на сайт будет добавляться сразу опубликованным.


Помимо основых полей с данными, которые необходимо выгрузить на сайт, нам надо ещё добавить поле, по которому пакет будет понимать, что данная запись уже есть на сайте. Для этого добавляем новое поле, значение Системное поле оставляем пустым, а в Поле в источнике пишем, например, «guid» (потому что он менее всего подвержен изменениям). Должно быть как-то так:

Сохраняем. В списке полей на этом поле ставим указатель Уникальное поле (кнопка со звездой слева):


Всё готово к парсингу, как к единоразовому, так и к ежеминутному (у компонента есть скрипт для запуска заданий из крона).

Обсуждение компонента в сообществе MODX.PRO.

1.11.20-beta (17.08.2023)

  • Добавлено удаление сессии открытой скриптом socket_resource.php

1.11.19-beta (21.07.2023)

  • Добавлена возможность указать в задании очистки галереи перед обновлением ресурса

1.11.18-beta (13.07.2023)

  • Исправлена ошибка Argument 1 passed to xpTools::prepareHeaders() must be of the type array, null given

1.11.17-beta (06.06.2023)

  • Добавлена возможность указать в задании не передавать заголовки при запросе к медиа

1.11.16-beta (23.11.2022)

  • Добавлена дополнительная попытка скачивания нескачанных картинок в методах xpParser::grabMediaWithExtension и xpParser::grabMediaWithoutExtension

1.11.15-beta (14.03.2022)

  • Исправлена работа на версиях MODX 2.8.0 и выше

1.11.14-beta (30.11.2021)

  • Заменён User agent на Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.85 YaBrowser/21.11.0.2015 Yowser/2.5 Safari/537.36

1.11.13-beta (07.11.2021)

  • Добавлены дополнительные этапы в логирование при запуске из терминала
  • Переписана работа с демоном для подзаданий, чтобы жрало меньше оперативки

1.11.12-beta (05.11.2021)

  • Исправлена ошибка с infinity числом во время получения необработанных данных подзадания

1.11.11-beta (04.11.2021)

  • Добавлена поддержка кастомных ключей для полей

1.11.10-beta (03.11.2021)

  • Добавлена ручная сортировка полей задания
  • Добавлена возможность тестировать значения для выключенных полей
  • Поправлено формирование списка элементов в JSON задании для подзадачи, в методе xpParser::getSourceItems

1.11.9-beta (30.05.2021)

  • Добавлено сохранение старого списка categories обновляемого товара msProduct
  • Поправлено присвоение свойства categories для msProduct

1.11.8-beta2 (30.05.2021)

  • Исправлено событие xParserOnTaskRowsPrepared в списке событий компонента

1.11.8-beta (30.05.2021)

  • Добавлено свойство categories для msProduct, при включённой опции "Дозапись"
  • Добавлено событие плагина xParserOnTaskRowsPrepared с параметрами: xParser $xp, xpParser $parser, array $task, array $rows

1.11.7-pl2 (08.05.2021)

  • Исправлен warning "Cannot use a scalar value as an array"

1.11.7-pl (08.05.2021)

  • Исправлен warning "Parameter must be an array or an object that implements Countable"
  • Исправлен warning "Invalid argument supplied for foreach"
  • Исправлен warning "array_merge(): Expected parameter 2 to be an array"

1.11.6-pl (02.05.2021)

  • Исправлена проблема при парсинге пустых данных XML и JSON подзаданий

1.11.6-beta (02.05.2021)

  • Исправлена проблема при парсинге пустых данных XML и JSON подзаданий

1.11.5-pl (02.05.2021)

  • Исправлена проблема с проверочным запуском конкретного поля при заполненном поле "Исключённые страницы"

1.11.5-beta (01.05.2021)

  • Исправлен баг, когда возвращалось только первое вхождение результата при пустом "Базовом теге" задания

1.11.4-beta (01.05.2021)

  • Добавлена возможность указать подзадаче заголовки

1.11.3-beta (01.05.2021)

  • Добавлена возможность любому полю задания указать флаг "Уникальное" или "Ссылка", кроме поля-галереи

1.11.2-beta (01.05.2021)

  • Добавлены наименования заданий в заголовки связанных с ним окон
  • Убрана подложка-затемнение у окон там, где это возможно

1.11.1-beta (30.04.2021)

  • Исправлена проблема с проверочным запуском при заполненном поле "Исключённые страницы"

1.11.0-beta (30.04.2021)

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

1.10.3-beta (23.03.2021)

  • В @INLINE-чанк при обработке полей задания добавлен массив $_parsed, где доступны все ранее обработанные значения полей, в том числе и основного задания, если в текущий момент обрабатываются поля подзадания
  • Исправлено определение начальной страницы пагинации в методе xpParser::parseTask

1.10.2-beta2 (22.03.2021)

  • Исправлена проблема с отображением подзаданий

1.10.2-beta (22.03.2021)

  • Добавлена возможность у JSON задания оставить поле "Базовый тег записей" пустым, тогда будет взят весь массив

1.10.1-beta (22.03.2021)

  • Добавлена возможность поиска ТВ-поля в списке полей, как "tv2", "tv|2", "key"

1.10.0-beta2 (19.03.2021)

  • Поправлено обновление со старой версии

1.10.0-beta (19.03.2021)

  • Добавлена пагинация для RSS/XML заданий
  • Добавлен новый способ пагинации
  • Добавлена возможность сначала собрать все данные со всех страниц, а потом перейти к действиям над ресурсами
  • Добавлена возможность использовать основной УРЛ задания для первой страницы пагинации
  • Добавлена возможность при запуске задания автоматически очищать список пройденных страниц пагинации
  • Исправлено дублирование сообщения о завершении парсинга при включённой пагинации
  • Исправлена проблема с перезаписью полей ресурса у основного задания значениями дочернего
  • Исправлена проверка JSON строки
  • Рефакторинг кода

1.9.0-beta (02.03.2021)

  • Добавлена поддержка JSON лент
  • Добавлена группировка заданий
  • Добавлена явная поддержка XML лент в лексиконы

1.8.17-beta (08.02.2021)

  • Добавлено синхронное скачивание изображений перед загрузкой их в процессор miniShop2/ms2Gallery

1.8.16-beta (23.12.2020)

  • Добавлены отсутствующие переводы на английский

1.8.15-beta (28.08.2020)

  • Добавлено событие плагина xParserOnTaskParseDone с параметрами: xParser $xp, xpParser $parser, array $task, array $stats

1.8.14-beta (05.07.2020)

  • Добавлено свойство minishop2|categories в список системных полей

1.8.13-beta (05.07.2020)

  • Добавлена проверка JSON строки в метод xpParser::sanitizeContent

1.8.12-beta (05.07.2020)

  • Добавлено событие плагина xParserOnFilterSourceItems с параметрами: xParser $xp, xpParser $parser, array $task, array $items

1.8.11-beta (26.06.2020)

  • Исправлен вызов события плагина xParserOnBeforeTaskParse
  • Исправлена проверка заполнения шаблона при сохранении задания

1.8.10-beta (03.02.2020)

  • Добавлена системная настройка xparser_socket_script_resource для указания URI скрипта для действий с ресурсами
  • Исправлен путь скрипта для действий с ресурсами в assets/components/xparser

1.8.9-beta2 (26.12.2019)

  • Исправлено формирование пути к файлу без расширения, если тот существует

1.8.9-beta (23.12.2019)

  • Добавлена проверка на существование для изображений без расширения

1.8.8-beta (11.12.2019)

  • Добавлена опция в задание: "Добавлять новые записи"
  • Добавлена опция в задание: "Дозаписывать данными из существующих записей"

1.8.7-beta2 (09.12.2019)

  • Поправлены лексиконы для системных настроек

1.8.7-beta (09.12.2019)

  • Добавлены настройки для демона: xparser_socket_url, xparser_socket_token, xparser_socket_count_resources

1.8.6-beta (09.12.2019)

  • Исправлена проверка на уникальность при парсинге

1.8.5-beta2 (30.11.2019)

  • Поправлено взаимодействие с xParserDaemon

1.8.5-beta (04.11.2019)

  • Добавлен статус демона в topbar списка заданий

1.8.4-pl (30.10.2019)

  • Поправлена работа с xParserDaemon

1.8.4-beta (24.10.2019)

  • Добавлена системная настройка xparser_rewrite_exists_images
  • Добавлен проброс действий с изображениями без расширения в xParserDaemon

1.8.3-pl (21.10.2019)

  • Исправлена подстановка путей к картинкам, если все изображения при парсинге имеются на сайте

1.8.3-beta (21.10.2019)

  • Добавлено дополнительное логирование
  • Добавлена возможность спарсить все записи в ленте, просто указав "0" в поле "Кол-во" у задания

1.8.2-beta (17.10.2019)

  • Добавлено засыпание на 20 секунд каждые 100 записей/картинок при получении оных через xParserDaemon
  • Поправлено формирование схемы УРЛ в xpDaemon::setResources

1.8.1-beta (17.10.2019)

  • Добавлен прогресс бар и частичное логирование действий в крон скрипт
  • Добавлен проброс действий с ресурсами в xParserDaemon

1.8.0-pl (16.10.2019)

  • Поправлено затирание дублированных изображений

1.8.0-beta2 (16.10.2019)

  • Поправлена проверка ключа записи при скачивании изображений

1.8.0-beta (16.10.2019)

  • Добавлена работа с NodeJS демоном xParserDaemon
  • Поправлено экранирование квадратных скобок при просмотре результатов полей
  • Поправлено скачивание изображений без расширения в синхронном режиме

1.7.3-beta (27.09.2019)

  • Добавлено свойство _reloadContext при запуске процессора на создание ресурса

1.7.2-pl2 (21.09.2019)

  • Поправлена проверка ссылки с пагинацией

1.7.2-pl (21.09.2019)

  • Поправлен вывод при проверке данных в поле
  • Поправлено формирование ссылки со страницей с номером 0

1.7.2-beta (13.09.2019)

  • Добавлено поле User Agent для заданий

1.7.1-pl (01.07.2019)

  • Добавлена английская версия
  • Поправлена передача УРЛ с номером страницы

1.7.0-pl (20.06.2019)

  • Поправлена сортировка полей задания

1.7.0-beta (20.06.2019)

  • Добавлена асинхронная загрузка источников подзаданий
  • Добавлена возможность скачивания изображения без расширения для конкретных полей задания
  • Добавлена возможность поиска по названию в списке полей задания
  • Поправлено получение используемой памяти скриптом при парсинге в виде пикового значения
  • Поправлена максимальная высота модального окна на страницах компонента
  • Поправлен внешний вид отображения таблицы заданий, стал более компактнее
  • Удалён устаревший QueryPath
  • Рефакторинг кода

1.6.10-pl (31.05.2019)

  • Поправлено указание опции асинхронности при создании задания

1.6.10-beta (31.05.2019)

  • Добавлена опция включения асинхронного скачивания файлов для заданий
  • Поправлено удаление временного файла

1.6.9-beta (26.04.2019)

  • Поправлена совместимость с MySQL 5.7

1.6.8-beta (29.12.2018)

  • Поправлен срез только первого значения для подзаданий
  • Поправлена регулярка нахождения УРЛов изображений

1.6.7-beta3 (06.12.2018)

  • Поправлен парсинг URL подзаданий с подстрокой "&"

1.6.7-beta2 (23.11.2018)

  • Поправлена совместимость с PHP 5.4 в xpParser

1.6.7-beta (10.10.2018)

  • Понижена версия evenement/evenement до ^2.0 для работы с PHP 5.4

1.6.6-beta (10.10.2018)

  • Добавлено подробное описание ошибки в логах при некорректном создании/обновлении ресурса
  • Поправлено формирование УРЛ при кривой передаче УРЛа источником при редиректе

1.6.5-beta2 (06.10.2018)

  • Поправлена передача кодировки в DomCrawler

1.6.5-beta (05.10.2018)

  • Поправлено определение кодировки с DomCrawler

1.6.4-beta (03.10.2018)

  • Добавлена настройка xparser_combo_fields_resource_exclude, в которой указываются поля ресурса для исключения из ComboBox "Системное поле"
  • Добавлена настройка xparser_combo_fields_minishop2_exclude, в которой указываются поля товара ms2 для исключения из ComboBox "Системное поле"
  • Поправлен метод проверки JSON строки

1.6.3-beta (13.06.2018)

  • Добавлено событие плагина xParserOnTaskItemParse с параметрами: xParser $xp, xpParser $parser, array $task, string $item, array $row
  • Добавлено событие плагина xParserOnBeforeTaskActions с параметрами: xParser $xp, xpParser $parser, array $task, array $rows
  • Переписан метод запроса к УРЛ, добавлено запоминание кода ответа сервера при первом обращении (без учёта редиректов)
  • Исправлен вызов события плагина xParserOnBeforeTaskParse
  • Исправлено затирание УРЛа в основной задаче при обращении к подзадаче

1.6.2-beta (13.06.2018)

  • Добавлено событие плагина xParserOnBeforeTaskParse с параметрами: xParser $xp, xpParser $parser, array $task, array $items, array $fields

1.6.1-beta (04.04.2018)

  • Добавлена возможность указывать miniShop2 свойства в качестве уникальных значений

1.6.0-beta2 (04.04.2018)

  • Исправлена 500 ошибка при некорректном синтаксисе xPath и CSS

1.6.0-beta (31.03.2018)

  • Добавлена библиотека ReactPHP для асинхронной загрузки изображений
  • Добавлена библиотека DomCrawler в качестве замены QueryPath

1.5.3-beta (03.03.2018)

  • Добавлена возможность указать обязательное заполнение для поля задания

1.5.2-beta2 (12.02.2018)

  • Исправлена ошибка шифрования соединения при запросе к некоторым сайтам на SSL

1.5.2-beta (11.12.2017)

  • Улучшена логика поиска базового тега ленты/записи в RSS задании

1.5.1-beta3 (26.11.2017)

  • Исправлена ошибка подгрузки данных в RSS задании

1.5.1-beta2 (17.11.2017)

  • Исправлен косяк с проставлением media_source у ресурсов для компонента ms2Gallery

1.5.1-beta (16.11.2017)

  • Добавлена настройка cron_username, для авторизация в пользователя при запуске cron скрипта
  • Исправлена ошибка "permission_denied" при запуске крон скрипта

1.5.0-beta (31.10.2017)

  • Добавлена поддержка miniShop2 свойств/опций
  • Добавлена поддержка miniShop2 галереи
  • Добавлена поддержка ms2Gallery
  • Добавлена возможность обновления записей
  • Добавлена возможность раскодировать JSON у полей задания (требуется для некоторых свойств ms2: size, tags и т.п.)
  • Добавлена подсветка Fenom синтаксиса в Ace у полей задания
  • Рефакторинг класса xpParser

1.4.1-beta (11.10.2017)

  • Добавлена пагинация и поиск по подстроке в поле Системное поле

1.4.0-beta2 (04.08.2017)

  • Поправлена проверка на уникальность по хешу

1.4.0-beta (02.08.2017)

  • Добавлена поддержка пагинации на доноре

1.3.0-beta3 (02.08.2017)

  • Добавлена передача языка клиента (ru-RU) в заголовках при обращении к источнику

1.3.0-beta2 (10.02.2017)

  • Восстановлена совместимость с PHP 5.3

1.3.0-beta (10.02.2017)

  • Добавлен выбор синтаксиса в конфигурации HTML задания
  • Добавлен синтаксис регулярных выражений
  • Исправлено некорректное получение списка всех заданий при парсинге кроном: теперь подзадания исключаются

1.2.4-beta (05.02.2017)

  • Добавлена возможность указать скачивание медиа для конкретного поля задания
  • Исправлена некорректная подстановка схемы УРЛ для сторонних УРЛов вида //domain.zone/path/

1.2.3-beta (01.02.2017)

  • Добавлен массив $_pls в параметры @INLINE чанка в системном поле, которая содержит массив значений, для получения нестандартных полей, например с двоеточием в ключе
  • Переписан метод xmlToArray на основе DOMDocument
  • Исправлен баг некорректного получения поля из XML с двоеточием в ключе
  • Исправлен баг с одновременным получением атрибутов и контента поля из XML

1.2.2-beta (19.01.2017)

  • Добавлена возможность указания кодировки страницы-источника

1.2.1-beta (17.01.2017)

  • Исправлен баг в подзадачах с переключением контекста на пустой
  • Исправлен баг в подзадачах с выборкой среза элементов массива

1.2.0-beta (15.01.2017)

  • Добавлена возможность совмещения заданий (запуск одного задания из другого)

1.1.2-beta (06.01.2017)

  • Исправлен баг с некорректным проставлением свойства "Показывать в дереве" у Тикетов
  • Добавлены системные поля: isfolder, show_in_tree, uri, uri_override

1.1.1-beta (05.01.2017)

  • Исправлен некорректный слив картинок с запятой и с кириллицей в УРЛе
  • Исправлен баг с записью уникального хеша ресурса в properties, если это ресурс Tickets
  • Исправлен баг с сохранением ТВ в ресурс Tickets
  • Исправлен баг HTML заданий, когда данные источника не клонировались

1.1.0-beta (28.12.2016)

  • Добавлен парсер HTML контента
  • Добавлено поле "От" и "Кол-во" для заданий
  • Переписаны процессоры добавления/обновления заданий
  • Переписаны грида/окна заданий на ExtJS
  • Переписан принцип связи объекта xpTask с субобъектами (xpTaskRss|xpTaskHtml)
  • Исправлен баг при парсинге RSS, когда в ленте есть только 1 запись
  • Рефакторинг кода класса xpParser

1.0.3-beta2 (02.12.2016)

  • Исправлена ошибка с длинным индексом поля url у объекта xpTaskRss

1.0.3-beta (02.12.2016)

  • В процессор mgr/task/parse добавлена логика для использования процессора из компонента Scheduler
  • Скрипт cron/parser.php переписан в соответствии с новой логикой процессора mgr/task/parse
  • В комплект добавлена библиотека mtdowling/cron-expression для обработки Cron синтаксиса в параметре "cron" при запуске процессора mgr/task/parse из компонента Scheduler
  • Исправлена ошибка добавления ресурса в отличный от web контекст, при запуске скрипта из консоли

1.0.2-beta2 (21.11.2016)

  • Исправлена ошибка перезаписи всего контента поля, если в нём найдена ссылка на медиа-контент и включён параметр "Скачивать медиа-контент"

1.0.2-beta (21.11.2016)

  • В параметры @INLINE чанка в системном поле добавлен параметр $_task с массивом задания
  • Исправлена ошибка переназначения parent и template, когда они указаны в виде поля задания
  • Исправлена ошибка присвоения ресурсу уникального хеша на основе выбранного поля в задании

1.0.1-beta (17.11.2016)

  • Добавлена возможность указать уникальное поле задания, по которому будет проверяться существование ресурса в базе

1.0.0-beta (14.11.2016)

  • Start

Последние обсуждения в сообществе MODX.pro