Giter Site home page Giter Site logo

wb-private-api's Issues

Данные о Продавце

Есть ли в планах добавление данных о Поставщиках?

Если нет, я могу попробовать сделать PR. Я правильно понимаю, что надо через Developer console определить запрос к этим данным и сделать обертку как по другим реализованным функциям модуля?

Как запустить тесты?

Здравствуйте, сабж в названии.
И ещё один вопрос, вб заблокировал запросы, можно как-то прикрутить использование прокси?

FAIL tests/WBPrivateAPI.test.js

[email protected] test
jest --verbose

PASS tests/Utils.test.js
Проверка утилит Card
✓ Проверка генерации URL на логотип бренда Brand.imageURL() (3 ms)
✓ Проверка генерации URL на фотографии карточек Card.imageURL() (1 ms)
✓ Проверка метода getBasketNumber() генерации Basket номера по Артикулу товара (10 ms)

PASS tests/SessionBuilder.test.js
Проверка класса SessionBuilder
✓ Проверка статичного метода .create() (4 ms)

PASS tests/WBCatalog.test.js
Проверка класса WBCatalog
✓ Проверка метода .page() по ключевому запросу "Очки женские" (874 ms)
✓ Проверка метода .getPosition() по ключевому запросу "Менструальные чаши" (290 ms)
✓ Проверка метода .getPosition() на ответ при ложном поиске (507 ms)

PASS tests/WBProduct.test.js
Проверка класса WBProduct
✓ Проверка метода .getStocks() на возврат данных об остатках товара на складах (627 ms)
✓ Проверка метода .getPromo() на возврат данных об участии в промо-акции (425 ms)
✓ Проверка метода .getFeedbacks() на возврат всех отзывов (919 ms)
✓ Проверка метода .getQuestions() на возврат всех вопросов (717 ms)

console.log
{
name: 'Платье',
catalog_type: 'preset',
catalog_value: 'preset=500060403',
normquery: 'платье',
context_metadata: {},
products: [
{
time1: 4,
time2: 34,
dist: 122,
id: 149647710,
root: 126758860,
kindId: 2,
brand: '365.SOWELL',
brandId: 429535,
siteBrandId: 439535,
colors: [Array],
subjectId: 69,
subjectParentId: 1,
name: 'Платье вечернее',
supplier: 'ИП Пучков Максим Сергеевич',
supplierId: 1145527,
supplierRating: 4.5,
priceU: 370000,
salePriceU: 149800,
sale: 59,
logisticsCost: 0,
returnCost: 0,
diffPrice: false,
saleConditions: 0,
pics: 29,
rating: 4,
reviewRating: 4.4,
feedbacks: 1332,
volume: 11,
viewFlags: 0,
sizes: [Array],
log: [Object]
}
]
}

  at Object.log (tests/WBPrivateAPI.test.js:50:13)

FAIL tests/WBPrivateAPI.test.js (9.105 s)
Проверка поиска рекламодателей
✓ Проверка рекламы по Поиску .getSearchAds() (419 ms)
✓ Проверка карусели внутри карточки .getCarouselAds() (277 ms)
Проверка поиска товаров WBPrivateAPI.search()
✓ Поиск количества товаров по ключевому запросу "Платье" (1282 ms)
✓ Поиск количества товаров (редких) по ключевому запросу "тату чебурашка" (107 ms)
✓ Поиск данных из фильтров по ключевому запросу "конструктор детский" (402 ms)
✕ Проверка получения Query Params по ключевому запросу "Платье" (285 ms)
✓ Проверка метода getQueryMetadata на запросы разных страниц (447 ms)
✓ Сбор 3 страниц товаров по ключевому запросу "Платье" (647 ms)
✓ Проверка фильтрации товаров по бренду и ключевому запросу "торшер" (180 ms)
✓ Проверка фильтрации товаров по поставщику и ключевому запросу "торшер" (182 ms)
✓ Проверка фильтрации товаров по бренду и по поставщику с ключевым запросом "торшер" (173 ms)
✓ Проверка совместимости с axios-retry (1650 ms)
✓ Проверка метода .getQueryMetadata на прохождение HTTP 429 ошибки (1383 ms)
✓ Проверка аргумента pageCount на понижение кол-ва страниц, если их меньше чем запрошено (202 ms)
✓ Проверка метода .keyHint(query) на вывод предположений по ключевому запросу "Платье" (59 ms)
✓ Проверка метода .searchSimilarByNm(productId) на возврат идентификаторов похожиш товаров (305 ms)
✓ Проверка метода .getPromos() на возврат текущих промо-акций (172 ms)
✓ Проверка метода .getListOfProducts() на возврат найденных товаров (249 ms)
Проверка выдачи данных по продавцу
✓ Проверка метода .getSupplierInfo() (42 ms)

● Проверка поиска товаров WBPrivateAPI.search() › Проверка получения Query Params по ключевому запросу "Платье"

expect(received).toBe(expected) // Object.is equality

Expected: "subject"
Received: "preset"

  50 |     console.log(metadata)
  51 |     expect(typeof metadata === "object").toBeTruthy();
> 52 |     expect(catalog_type).toBe("subject");
     |                          ^
  53 |     expect(catalog_value).toBe("subject=69;70;2905;4000;4855;4857");
  54 |   });
  55 |

  at Object.toBe (tests/WBPrivateAPI.test.js:52:26)

Test Suites: 1 failed, 4 passed, 5 total
Tests: 1 failed, 29 passed, 30 total
Snapshots: 0 total
Time: 9.412 s, estimated 41 s
Ran all test suites.

Не получаю данные по городам!

Starting search in destination: HABAROVSK
Received catalog for HABAROVSK: []
No products found or invalid catalog data for HABAROVSK
Starting search in destination: NOVOSIBIRSK
Received catalog for NOVOSIBIRSK: []
No products found or invalid catalog data for NOVOSIBIRSK
Starting search in destination: EKATERINBURG
Received catalog for EKATERINBURG: []
No products found or invalid catalog data for EKATERINBURG

const express = require('express');
const { WBPrivateAPI, Constants } = require('wb-private-api');
const app = express();
app.use(express.json());

app.post('/search', async (req, res) => {
const { keyword, productId } = req.body;

let results = {};
for (let destinationKey in Constants.DESTINATIONS) {
    console.log(`Starting search in destination: ${destinationKey}`);
    const destination = Constants.DESTINATIONS[destinationKey];
    const wbapi = new WBPrivateAPI({ destination });

    try {
        const catalog = await wbapi.search(keyword, 20, 5);
        console.log(`Received catalog for ${destinationKey}:`, JSON.stringify(catalog, null, 2));

        if (!catalog || !catalog.products || catalog.products.length === 0) {
            console.log(`No products found or invalid catalog data for ${destinationKey}`);
            results[destinationKey] = 'Invalid catalog data or no products found';
        } else {
            const position = catalog.products.findIndex(product => product.id === productId);
            results[destinationKey] = position >= 0 ? position : 'Product not found';
        }
    } catch (error) {
        console.error(`Error during searching in ${destinationKey}:`, error);
        results[destinationKey] = 'Error during search';
    }
}

res.json(results);

});

const PORT = 3000;
app.listen(PORT, () => {
console.log(Server running on port ${PORT});
});

import requests

data = {
"keyword": "сумка через плечо",
"productId": 174119251,
}

response = requests.post("http://localhost:3000/search", json=data)
results = response.json()
print(results)

{'KRASNODAR': 20, 'MOSCOW': 11, 'KAZAHSTAN': 7, 'HABAROVSK': 'Invalid catalog data or no products found', 'NOVOSIBIRSK': 'Invalid catalog data or no products found', 'EKATERINBURG': 'Invalid catalog data or no products found'}

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.