bravegeek/allrival-sdk
Composer 安装命令:
composer require bravegeek/allrival-sdk
包简介
An SDK designed for easy usage of the allrival.com website's API
README 文档
README
An SDK designed for easy usage of the allrival.com website's API
SKD созданное для упрощенного взаимодействия с API сайта allrival.com
Документация к API
Установка
composer require bravegeek/allrival-sdk
Клиент
Класс AllrivalSDK\Client.php является точкой входа для взаимодействия с SDK.
В нем находятся менеджеры, через которых идет взаимодействие с API Allrival.
Менеджеры
В данном SDK представлены 5 типов менеджеров:
- Product Manager
- Company Manager
- Cluster Manager
- Report Manager
- Price history Manager
- Product Manager отвечает за добавление и удаление товаров. При передачи url
уже сохраненного товара сервер вернет полную информацию о нем.
Методы:
- addProduct
Принимает Url товара, который вы хотите сохранить. Возвращает информацию о сохраненном товаре
Примеры:// URL товара $productUrl = 'https://www.wildberries.ru/catalog/46369147/detail.aspx'; // Возвращает ProductType / array $createdProduct = $this->productManager->addProduct($productUrl); - deleteProduct
Принимает Url товара, который вы хотите удалить. Возвращает булево значение о результате удаления (true/false)
// Возвращает true / false $result = $this->productManager->deleteProduct($productUrl);
- Company Manager отвечает за получение всей информации о компании и её конкурентах на сайте Allrival а также удаление компании вместе с продуктами по её ID
Методы:
- getYourCompanyInfo
Возвращает информацию о вашей компании и её конкурентах
Примеры:// Возвращает CompanyType / array $result = $this->companyManager->getYourCompanyInfo(); - removeProductsByCompanyId
Удаляет компанию вместе с продуктами по её ID
$id = ...; // Id вашей компании // Возвращает true / false $result = $this->companyManager->removeProductsByCompanyId($id)
- Cluster Manager отвечает за создание/удаление сопоставлений по ID Вашего продукта и ID продукта конкурента.
Если будут переданы неправильные ID продуктов (оба ID вашей компании, оба ID компании конкурента) менеджер выкинет BadRequestException с информацией о неправильных ID. Методы:
- createMatching
Принимает параметры ID продукта вашей компании и ID продукта компании конкурента.
В случае успеха, возвращает о созданном сопоставлении.
$yourProductId = ...; // Id продукта вашей компании $rivalProductId = ...; // Id продукта компании конкурента // Возвращает ClusterType / array $createdMatching = $this->clusterManager->createMatching($yourProductId, $rivalProductId); - deleteMatching
Принимает параметры ID продукта вашей компании и ID продукта компании конкурента.
В случае успеха, возвращает об удаленном сопоставлении.
$yourProductId = ...; // Id продукта вашей компании $rivalProductId = ...; // Id продукта компании конкурента // Возвращает ClusterType / array $deletedMatching = $this->clusterManager->deleteMatching($yourProductId, $rivalProductId);
Методы:
- getYourProducts
Принимает произвольное количество фильтров и возвращает выгрузку ваших продуктов на основе фильтров.// $filters - массив фильтров для выгрузки // Возвращает ReportType содержащий массив продуктов и информацию о пагинации $result = $this->reportManager->getYourProducts(...$filters); - getRivalProducts
Принимает произвольное количество фильтров и возвращает выгрузку продуктов конкурентов на основе фильтров.// $filters - массив фильтров для выгрузки // Возвращает ReportType содержащий массив продуктов и информацию о пагинации $result = $this->reportManager->getRivalProducts(...$filters); - getSimilars
Принимает произвольное количество фильтров и возвращает выгрузку сопоставлений ваших товаров с товарами конкурентов на основе фильтров.// $filters - массив фильтров для выгрузки // Возвращает ReportType содержащий массив ваших товаров и массив совпавших товаров конкурентов и информацию о пагинации $result = $this->reportManager->getSimilars(...$filters); - setFilters
Сохраняет переданные фильтры для использования в последующих запросах// $filters - массив фильтров для выгрузки $this->reportManager->setFilters(...$filters); - addFilter
Добавляет переданный фильтр к массиву уже сохраненных фильтров// $filter - фильтр для выгрузки $this->reportManager->setFilters($filter); - removeFilter
Удаляет переданный фильтр из массива уже сохраненных фильтров по его названию// $filter - фильтр для выгрузки // Может быть как строкой так и FilterInterface $this->reportManager->removeFilter($filter); - replaceFilter
Заменяет существующий сохраненный фильтр переданным// $filter - фильтр для выгрузки (FilterInterface) $this->reportManager->replaceFilter($filter); - resetFilters
Очищает сохраненные фильтры, добавленные через setFilters()$this->reportManager->resetFilters();
Фильтры
Каждый фильтр наследуется от соответствующего типа фильтра. Существует 8 видов фильтров:
- BooleanFilter - Фильтр для булевых типов фильтров (где есть выбор да/нет)
- EmptyTypeFilter - Без указания типа фильтра, принимает только явные значения
- EmptyTypeMultipleValuesFilter - Для фильтров с выбором нескольких значений (тэги, города, категории и т.д.) и без типа фильтра
- InequalityFilter - Фильтр для сравнения числовых значений
- MembershipFilter - Фильтр для строковых значений. Позволяет указать принадлежит ли одна строка другой или сравнить их
- MultipleValuesFilter - Для типов фильтров с выбором нескольких значений (города, категории и компании) с выбором типа фильтра
- OnlyExplicitValuesFilter - Фильтр без указания типа, принимает только явные значения. Примеры параметров можно посмотреть в личном кабинете allrival.com
- TimePeriodFilter - Фильтр для работы с датой и временем
Примеры
-
Получение ваших товаров на основе фильтров
// $apiKey - API ключ из личного кабинета Allrival $apiKey = ...; // Создаем клиент $client = new Client($apiKey); // Создаем массив нужных фильтров $filters = [ new PriceFilter(50, PriceFilter::GREATER_THAN), new NameFilter('Товар', NameFilter::CONTAINS), new SimilarProductPriceFilter(50, SimilarProductPriceFilter::GREATER_THAN), new WithBestPriceFilter(WithBestPriceFilter::YES), new RivalsCompanyFilter(111), ]; // Добавляем фильтры в клиент для последующих запросов $client->setFilters(...$filters); /** * Получаем выгрузку ваших продуктов с фильтрами * * @var $report ReportType */ $report = $this->reportManager->getYourProducts(); // Массив с вашими продуктами $products = $report->getItems(); // Информация о пагинации $pagination = $report->getPagination(); // Количество ваших продуктов на странице $itemsCount = $pagination->getItemsCount(); // Общее количество ваших продуктов $itemsTotalCount = $pagination->getItemsTotalCount(); // Общее количество страниц $pagesCount = $pagination->getPagesCount(); // Делаем что-нибудь с продуктами // ... -
Добавление и удаление товаров
// $apiKey - API ключ из личного кабинета Allrival $apiKey = ...; // Создаем клиент $client = new Client($apiKey); // Ссылка на товар $createdProductUrl = ...; // Получаем добавленный продукт в виде ProductType $createdProduct = $this->productManager->addProduct($createdProductUrl); // Делаем что-то с добавленным товаром ... .... ..... // URL удаляемого товара $deletedProductUrl = ...; // Информация об удалении товара (true/false) $isDeleted = $this->productManager->deleteProduct($deletedProductUrl); -
Получение истории цен
// Id продукта, у которого хотим получить историю цен $productId = ...; /** * @var PriceHistoryType $priceHistory */ $priceHistory = $this->priceHistoryManager->getPriceHistory($productId); // Может быть UNIX-time, строкой или DateTime $date = ...; // Получаем цену в указанный момент времени $price = $priceHistory->getByDate($date); // Возвращает массив с историей цен $priceHistoryArray = $priceHistory->getHistory(); -
Создание и удаление сопоставлений
// Id продукта из вашей компании $yourProductIdForCreatedMatch = ...; // Id продукта из компании конкурента $rivalProductIdForCreatedMatch = ...; /** * @var ClusterType $createdMatching */ $createdMatching = $this->clusterManager->createMatching($yourProductIdForCreatedMatch, $rivalProductIdForCreatedMatch); ... .... ..... // Id продукта из вашей компании $yourProductIdForDeletedMatch = ...; // Id продукта из компании конкурента $rivalProductIdForDeletedMatch = ...; /** * @var ClusterType $deletedMatching */ $deletedMatching = $this->clusterManager->deleteMatching($yourProductIdForDeletedMatch, $rivalProductIdForDeletedMatch);
Больше примеров использования находятся в папке ./tests
bravegeek/allrival-sdk 适用场景与选型建议
bravegeek/allrival-sdk 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 1.12k 次下载、GitHub Stars 达 1, 最近一次更新时间为 2023 年 06 月 22 日, 在 PHP 生态内属于活跃度较高的组件。
它主要适用于以下技术方向: 「php」 「sdk」 「parsing」 「web scraping」 「allrival」 「products matching」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。
我们在过去多个企业项目中使用过 bravegeek/allrival-sdk 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 bravegeek/allrival-sdk 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
与 bravegeek/allrival-sdk 相关的其它包
同方向 / 同关键字的高下载量 PHP Composer 包推荐,方便对比选型:
A port of the PEAR Net_HL7 library to PHP5.3+
An MT940 bank statement parser for PHP
Html5 stream tokenizer/reader (not using libxml)
Rudl UDP cluster logging library (PSR4 compliant)
Scrapping TOP10 Yandex Market Reviews
Class for building, parsing, signing, signature checking, encrypting and decrypting URLs
统计信息
- 总下载量: 1.12k
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 1
- 点击次数: 3
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2023-06-22