К содержимому

Документация

PHP SDK: Wildberries: карточки и регионы

Источник доступен сценариям сайта с готовым решением Wildberries. При создании каждого сценария выберите его товары, регионы и, если нужно, параметры поиска. Настройки сценариев хранятся отдельно: создание нового не меняет выбор товаров у уже работающего сценария.

Методы

products

products(): array возвращает список артикулов, выбранных для этого сценария, строками.

regions

regions(): array возвращает список выбранных регионов. У каждого есть id, name и code. Если регионов несколько, сценарий должен обойти каждый из них. Цена может различаться.

cards

cards(array $ids, string $regionId): array получает до 50 карточек за один вызов. Передайте id одного из регионов, полученных через regions(). Можно запросить выбранные артикулы и товары, которые сценарий уже нашёл через search() или analogs(). Результат содержит id, title, brand, supplier, price_rub, base_price_rub, discount_percent, stock_total, available, sizes, rating, feedbacks, supplier_rating, subject_id, url. Цена может быть null; отсутствие карточки означает, что товар не найден в регионе.

categoryQuery

categoryQuery(): string возвращает фразу категории из формы создания сценария.

maxPages

maxPages(): int возвращает выбранную глубину поиска от 1 до 20 страниц.

search

search(string $regionId, int $page): array получает живую выдачу выбранной категории. Результат содержит cards, total и page; по 100 товаров на странице. Метод доступен только сценарию «Ассортимент категории», а запрос и число страниц ограничены его настройками.

analogs

analogs(string $regionId): array ищет похожие карточки по названию своей карточки, оставляет товары того же предмета и запоминает новые. Возвращает own_id, ids (все отслеживаемые аналоги), new_ids, found_now и поисковую фразу query. Вызовите его при каждом запуске сценария, чтобы список пополнялся.

details

details(string $id): array читает описание, характеристики, состав, категорию, артикул продавца, сведения о сертификате и цвета выбранного или найденного товара. Эти данные берутся из публичной карточки и обновляются не чаще раза в сутки. Если карточка временно недоступна, метод сообщает об ошибке; текущая цена и наличие от этого не меняются.

detailsMany

detailsMany(array $ids): array принимает до 50 артикулов за вызов и возвращает массив описаний по артикулам. Если отдельная карточка временно недоступна, её не будет в ответе; остальные товары продолжат обрабатываться. Используйте этот метод для больших сравнений.

title

title(array $card): string возвращает название из полученной карточки.

characteristics

characteristics(array $card): array возвращает характеристики из переданного массива. Для полной карточки вызовите details($id) и прочитайте ключ characteristics его ответа.

Пример

<?php
function run(\Sdk\Context $ctx): void
{
    $source = $ctx->wildberries();
    $ids = $source->products();
    foreach ($source->regions() as $region) {
        foreach (array_chunk($ids, 50) as $batch) {
            foreach ($source->cards($batch, $region['id']) as $card) {
                if ($card['price_rub'] === null) {
                    continue;
                }
                $ctx->emit([
                    'wb_id' => $card['id'],
                    'wb_region_id' => $region['id'],
                    'title' => $source->title($card),
                    'price_rub' => $card['price_rub'],
                ], $card['id'].':'.$region['id']);
            }
        }
    }
}

Подсказки в редакторе показывают сигнатуру и назначение метода. Проверка кода выделяет синтаксические ошибки и очевидно неверные типы аргументов. Для сложных выражений итоговую проверку выполняет PHP при пробном прогоне.

Фотографии товаров

В схеме записей доступны типы image для основного фото и gallery для списка до 50 фотографий. Сценарий передаёт URL или список URL; после боевого сбора фотографии сохраняются в выбранное хранилище, а запись содержит приватные ссылки с размерами и форматом. В пробном прогоне файлы не выгружаются.

Готовые сценарии Wildberries заполняют main_image и gallery. В таблице их можно показывать отдельными столбцами, а в карточке открывать через галерею с увеличением. Хранилище меняется в настройках сайта: по умолчанию используется Akmelo, можно выбрать S3 своего пространства. Личный сценарий не получает доступ к хранилищу другой команды. На своём агенте фотографии по умолчанию остаются локально.