Скрипт для синхронизации цен в базе данных через API
Создаётся база данных последующему типу:
| ID | Цена | Наличие | Количество на складе | ... | ... | ... |
В неё вносятся товары из Walmart, некоторая информация о них: ID,
цена, наличие. С этими параметрами
программа будет работать. Также в базе
будут столбцы, которые будут редактироваться
человеком вручную. Например ID этого
товара в нашем интернет магазине, цена
в нашем магазине после учёта доставки
и наценки, и наименование товара.
Главная и единственная функция программы: обновление информации о цене
и наличии товаров в Walmart по их ID через
Walmart Open API. Работа с АПИ очень проста,
документации одна страница.
В одном запросе к АПИ мы можем указать до 20 товаров, ответ нам придёт
в XML или JSON.
Соответственно, программа должна это учитывать, и делать по одному
запросу на каждые 20 товаров. Если в базе
101 товар, то она должна сделать 6 запросов
(20+20+20+20+20+1)
В полученных ответах содержится полная информация о товарах, нас волнует
только информация о цене и о наличии
каждого товара. Если у каких-то товаров
поменялась инфа, то её надо обновить в
базе, а также обязательно пометить линию
(можно для этого использовать отдельный
столбец), чтобы человек мог выставить
фильтр и среагировать на обновления.
Было-бы хорошо, перед обновлением сохранять текущую версию базы. Что-то
вроде бекапа.
Вкратце суть программы –формирование запросов к API, обработка
ответов XML/JSON, обновление базы исходя
из итогов обработки.
Прочие тонкости:
В запросах указывается ключ к API, его хорошо-бы вывести в отдельный
конфиг, чтобы можно было быстро поменять.
API ограничивает количество запросов до 5 в секунду, во избежание
ошибок желательно ограничить программе их число до 1 в секунду, ибо если она обработает 2000 товаров за секунду, то вряд-ли Walmart ответит больше чем на 100, содержащиеся в первых пяти запросах.
Подробности:
Запрос к АПИ выглядит вот так:
http://api.walmartlabs.com/v1/items?ids=12417832,19336123&apiKey={apiKey}
ids – ID товаров. В один запрос можно поместить до 20 товаров.
ApiKey –Ключ АПИ, генерируется при регистрации.
Как выглядит ответ лучше глянуть здесь: https://developer.walmartlabs.com/docs
Из ответа мы игнорим всё, и находим параметры salePrice, availableOnline и
Stock.
Пользователь должен иметь доступ к базе через эксель, чтобы редактировать. Поэтому программа должна общаться с экселевским форматом.