wb-private-api
Version:
Wildberries Private API
137 lines (88 loc) • 7.2 kB
Markdown
   

NodeJS модуль. Работает через приватное API Wildberries
<p align="center"><h3>🍒 wb-private-api</h3></p>
> <p>Разработано при спонсировании:</p>
> <p><img src="https://github.com/glmn/glmn/assets/1326151/549b8bed-60c3-4f6e-8f5a-8592c63467b6" height="35"></p>
> <p><img src="https://github.com/glmn/glmn/assets/1326151/5f38f86c-7014-4e73-8fa1-c6657a902826" height="12"> <b><a href="https://neuromarket.online/?utm_source=github&utm_medium=wb-private-api&utm_content=description">Нейромаркет</a></b> - Глубокий Анализ товаров на Wildberries.</p>
Установка: `npm i wb-private-api`
После установки рекомендую протестировать работоспособность

Если все результаты положительные, значит библиотека полностью работоспособна и сервера WB отвечают верно. В случае, если каки-либо тесты отрицательные, прошу создать обращение https://github.com/glmn/wb-private-api/issues
## Пример работы
### Вывод данных о первом товаре из поисковой выдачи по ключевому слову
```js
import { WBPrivateAPI, Constants } from "wb-private-api";
const keyword = "HotWheels";
/*
* Select destination and init WBPrivateAPI with it
* You can find more destionations in Constants.DESTINATIONS
*/
const destination = Constants.DESTINATIONS.MOSCOW;
const wbapi = new WBPrivateAPI({ destination });
const initiate = async () => {
/*
* Search and Grab first 2 pages
* with specified keyword
*/
const catalog = await wbapi.search(keyword, 2);
const product = catalog.products[0];
/*
* Returning all Stocks with Warehouses Ids
* Then you can compare these Ids
* using Constants.WAREHOUSES
*/
const stocks = await product.getStocks();
/* No comments here :P */
const feedbacks = await product.getFeedbacks();
const questions = await product.getQuestions();
};
initiate();
```
### Вывод рекламодателей из поисковой выдачи по ключевому слову
```js
import { WBPrivateAPI, Constants } from "wb-private-api";
const keyword = "Менструальные чаши";
/*
* Select destination and init WBPrivateAPI with it
* You can find more destionations in Constants.DESTINATIONS
*/
const destination = Constants.DESTINATIONS.MOSCOW;
const wbapi = new WBPrivateAPI({ destination });
const initiate = async () => {
/*
* Search ads in search results
* with specified keyword
*/
const { pages, prioritySubjects, adverts } = await wbapi.getSearchAds(
keyword
);
// Ads positions on each page
console.log(pages);
// Subjects ordered by priority
console.log(prioritySubjects);
// Adverts including CPM
console.log(adverts);
};
initiate();
```
## `WBPrivateAPI` методы
`.search(keyword, pageCount, retries = 0, filters = [])` - Поиск всех товаров по Ключевому слову `keyword`. `pageCount` отвечает за кол-во необходимых страниц для прохода. Если `pageCount = 0`, то будет взяты все страницы или `100`, если их больше. `retries` отвечает за количество попыток выполнить запрос, если в ответ был получен статус 5хх или 429. `filters` это массив с объектами вида `[{type: 'fbrand' value: 11399 }]`, необходим для фильтрации поисковой выдачи по брендам, поставщикам, цене и т.д. Метод возвращает объект `WBCatalog`
`.getSearchAds(keyword)` - Поиск рекламодателей (в разделе Поиск) по Ключевому слову
`.getCarouselAds(keyword)` - Поиск рекламодателей внутри карточке в каруселе "Рекламный блок"
`.keyHint(query)` - Возвращает список подсказок из поиска WB по фразе `query`
`.searchSimilarByNm(productId)` - Возвращает список похожих товаров (как в разделе "Похожие товары" внутри карточки на WB)
`.getPromos()` - Возвращает массив текущих промо-акций на WB
`.getListOfProducts(productIds)` - Возвращает массив найденных артикулов на WB с деталями (Не оборачивается в WBProduct)
## `WBCatalog` методы
`.page(number)` - Возвращает массив товаров с заданной страницы (массив состоит из объектов `WBProduct`)
`.getPosition(productId)` - Возвращает номер позиции по заданному SKU. Если такого SKU в выдаче нет, то вернёт `-1`
## `WBProduct` методы
`.create(id)` - Статичный метод. Использовать в виде `WBProduct.create(id)`. Где `id` = `Артикул товара`. Метод асинхронный, поэтому перед вызовом используйте `await`. Вернет объект `WBProduct`
`.totalStocks` - Вернёт сумму остатков товара со всех складов (!) предварительно вызвать `.getStocks()`)
`.getStocks()` - Присвоет (и вернет) свойству `stocks` массив с данными об остатках на складе
`.getPromo()` - Присвоет (и вернет) свойству `promo` объект с данными об участии в промо-акции
`.getFeedbacks()` - Присвоет (и вернет) свойству `feedbacks` массив со всеми отзывами `WBFeedback` о товаре
`.getQuestions()` - Присвоет (и вернет) свойству `questions` массив со всеми вопросами `WBQuestion` о товаре
## `WBFeedback` методы
`.getPhotos(size='min')` - Вернет ссылки на все фотографии в текущем отзыве. `size` по умолчанию = `min`. Заменить на `full` если необходим большой размер