npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

nodejs-realtypult-partner-lib

v1.0.7

Published

API библиотека для интеграции с RealtyPult

Downloads

11

Readme

nodejs-realtypult-partner-lib CircleCI

API библиотека для интеграции с RealtyPult. Подключение портала недвижимости к партнерской программе.

Нужна версия для PHP?

https://github.com/bushev/php-realtypult-partner-lib

Как установить

npm install nodejs-realtypult-partner-lib --save

Как пользоваться


const Importer = require('../index').Importer;

let importer = new Importer({
    // Ссылка на XML фид из личного кабинета партнера
    xmlFeedUrl: 'https://realtypult.ru/api/xml/export/partner/FORMAT/TOKEN',

    // Файл отчета, будет создаваться автоматически, ссылку на него нужно вставить в кабинете партнера
    reportFileLocation: '/var/www/my-site/public/rm-report.xml',

    // Формат XML фида ('realtypult' или 'yandex')
    format: 'realtypult',

    // Функция будет вызвана для каждого объявления из XML фида
    onItem: onItem,

    // Функция будет вызвана когда весь XML фид будет обработан
    onEnd: onEnd,

    // Функция будет вызвана в случае непредвиденной критической ошибки
    onError: onError
});

/**
 * Обработчик одного объявления
 *
 * Требуется реализовать алгоритм:
 *
 * 1. Проверить (по item.id) размещали ли вы это объявления ранее
 *
 * Если не размещали:
 *      2.1 Сохраните объявление в вашей базе данных (не забудьте скачать себе изображения объекта)
 *      2.2 Вызовите функцию `callback` и передайте в нее ссылку на объявление на вашем сайте,
 *          Например: callback({url: 'http://your-site.ru/item1'})
 *
 * Если размещали:
 *      2.1 Проверьте, изменилось ли обновление, если да то обновите его в вашей базе данных
 *          (не забудьте про изображения)
 *      2.2 Получите из вашей базы данных количество просмотров этого объявления (рекомендуется)
 *      2.2 Вызовите функцию `callback` и передайте в нее ссылку на объявление на вашем сайте,
 *          и количество просмотров (рекомендуется)
 *          Например: callback({url: 'http://your-site.ru/item1', views: 15})
 *
 *
 * В случае если на каком-либо этапе вы понимаете что это объявление не может
 * быть обработано корректно, вызовите функцию `callback` и передайте ей сообщение об ошибке
 * Например: callback({error: 'Произошел технический сбой'});
 *
 * Помните, что сообщение об ошибке увидит конечный пользователь!
 *
 * Примеры частых ошибок:
 *
 * > "Произошел технический сбой (проблема с базой данных, нет места на диске, и тп.)"
 * > "Не удалось определить адрес объекта"
 * > И тп.
 *
 * В случае если в вашей базе данных есть очень похожее объявление, вызовите `callback` и
 * передайте в него ссылку на это объявление (размещать это объявление не нужно)
 * Например: callback({similarUrl: 'http://your-site.ru/item2'});
 *
 * В случае если вы не можете разместить объявление в силу нарушений ваших правил,
 * вызовите `callback` и передайте в него сообщение пользователю
 * Например: callback({rejectReason: 'Номер телефона заблокирован'});
 *
 * Помните, что сообщение об отклонении увидит конечный пользователь!
 *
 * Примеры частых ошибок:
 *
 * > "Номер телефона заблокирован"
 * > "Слишком низкая цена для этого объявления"
 * > И тп.
 *
 * @param item     - объект содержащий всю информацию об объявлении
 * @param callback - функция, которую нужно вызвать когда обработка объявления завершена,
 *                   и передать в нее результат обработки
 */
function onItem(item, callback) {

    console.log(`Обрабатываю объявление: ${item.id}`);

    console.log(item);

    // Успешно размещено
    // callback({url: 'http://your-site.ru/item1', views: 15});

    // ИЛИ

    // Проблема с доступом к базе данных / Недостаточно памяти
    // callback({error: 'Произошел технический сбой'});

    // ИЛИ

    // Объявление дубликат
    // callback({similarUrl: 'http://your-site.ru/item2'});

    // ИЛИ

    // Не соответствует правилам вашего портала
    // callback({rejectReason: 'Номер телефона заблокирован'});
}

/**
 * Обработчик конца импорта
 *
 * Здесь нужно удалить из вашей базы данных все объявления которые отсутствовали в XML фиде
 * (не забудьте удалить изображения)
 *
 * @param report
 * @param report.location            - Путь до файла с готовым отчетом (ссылку на него нужно вставить в
 *                                     личный кабинет партнера)
 * @param report.statistics.total    - Общее число объявление в фиде
 * @param report.statistics.success  - Число объявление обработанных успешно
 * @param report.statistics.rejected - Число объявление отклоненных от публикации
 * @param report.statistics.errors   - Число объявление обработанных с ошибками
 */
function onEnd(report) {

    console.log('Обработка XML фида завершена!');
    console.log(report);
}

/**
 * Обработчик критической ошибки импорта XML фида
 *
 * @param error
 */
function onError(error) {

    console.log(error);
}

// Запускаем импорт
importer.run();

Код этого примера находится тут.