АЛГОРИТМ ВЗАИМОДЕЙСТВИЯ ЮЗЕРА С БОТОМ Старт Бот: Введите артикул для мониторинга (осталось артикулов - 3) кнопки (1){ОТПРАВИТЬ(инлайн 50%)} (2){ОТМЕНА(инлайн 50%)} (3){ТЕКСТ ТЕКСТ 100%}<-должен быть отдельный файлик, где можно менять названия кнопок и ссылку на 3й(будет вести на другого бота) Юзер: ...вводит артикул, нажимает {ОТПРАВИТЬ} Бот сохраняет артикул привязывая его к данному пользователю Бот: Введите Название к артикулу [артикул] Юзер: ...вводит название, нажимает {ОТПРАВИТЬ} Бот: Артикул [артикул] [название] добавлен в монитор. Введите ключевое слово для мониторинга позиций артикула [артикул] (осталось 3 ключевых слова) кнопки (1){ОТПРАВИТЬ(инлайн 50%)} (2){ОТМЕНА(инлайн 50%)} (3){ТЕКСТ 100%} Юзер: ...вводит ключевой запрос, нажимает {ОТПРАВИТЬ} Бот: [Ключевое слово] добавлен к [артикул]. Введите ключевое слово для мониторинга позиций артикула [артикул] (осталось 2 ключевых слова) кнопки (1){ОТПРАВИТЬ(инлайн 50%)} (2){ОТМЕНА(инлайн 50%)} (3){ТЕКСТ 100%} {ОТМЕНА} просто останавливает добавление ключевых слов. Выводит сообщение, что: [артикул] взят на мониторинг по: [Ключевое слово] [Ключевое слово] Идёт сбор данных... Как только парсинг закончен, данное сообщение удаляется. А сообщение с данными выдаётся. Такое же сообщение выходит при достижении максимального количества ключевых запросов (3) к артикулу. Вообще должен быть файл с шаблонами к каждому сообщению. Дабы можно было менять в любое время. В меню - 1. кнопка добавить артикул - если макс число артикулов, то другая с текстом и ссылкой (которые можно изменить через файлик) 2. кнопки артикулов, которые добавлены - по ним пользователь может редактировать запросы у артикулов. 3. (3){ТЕКСТ 100%} ПАРСИНГ Два вида: Раз в сутки и каждый час. Расписание: Раз в сутки в 00:10 Каждый час с 07:00 до 23:00 РАЗ В СУТКИ - ПОЛНЫЙ ПАРСИНГ всех гео: мск (основное гео данные хранятся за 5 дней) спб, кзн, кдр, нск, екб - данные только за сегодня По каждому артикулу парсится: 1. Результат выдачи по каждому кс по каждому гео. 2. Частотность запросов по кс 3. Берутся категории и по ним делается парсинг позиций выдаче по всем гео 4. Отзывы рейтинг 5. Отзывы кол-во 6. Остатки Раз в сутки: -----0. Удаляем все сообщения за прошлые сутки. -----1. Результат выдачи по каждому кс по каждому гео. Запрос: https://search.wb.ru/exactmatch/ru/common/v4/search?appType=1&couponsGeo={-Variable.couponsGeo-}&curr=rub&dest={-Variable.dest-}&emp=0&lang=ru&locale=ru&page={-Variable.page-}&query={-Variable.keyword-}®=1®ions=68,64,83,4,38,80,33,70,82,86,30,69,22,66,31,40,1,48&resultset=catalog&sort=popular&spp=16 {-Variable.couponsGeo-} - разные для разного гео. {-Variable.dest-} - разные для разного гео. {-Variable.regions-} - разные для разного гео. {-Variable.page-} - на какой странице ищем. Начинаем с первой. Дальше идём, пока не найдём, либо регулярка выдаст ошибку, это значит, что страницы с выдачей закончились и следовательно нашего товара в выдаче по ключу нет, ставим "НЕТ" в ячейку на данный момент времени и ключу {-Variable.keyword-} - Ключевой запрос по которому ищем. (пример:робот-пылесос) (?<=[0-9],"id":)([\s\S]+?)(?=,"root":) 6170053 - пример того что ищем ГЕО ПЕРЕМЕННЫЕ мск {-Variable.couponsGeo-} 12,3,18,15,21 {-Variable.dest-} -1029256,-102269,-2162196,-1257786 спб {-Variable.couponsGeo-} 12,7,3,6,5,18,21 {-Variable.dest-} -1216601,-337422,-1114902,-1198057 кдр {-Variable.couponsGeo-} 2,7,3,6,19,21,8 {-Variable.dest-} -1059500,-108082,-269701,12358065 кзн {-Variable.couponsGeo-} 12,7,3,6,18,22,21 {-Variable.dest-} -1075831,-79374,-367666,-2133462 нск {-Variable.couponsGeo-} 2,12,7,3,6,21,16 {-Variable.dest-} -1221148,-140294,-1751445,-364763 екб {-Variable.couponsGeo-} 2,12,7,3,6,13,21 {-Variable.dest-} -1113276,-79379,-1104258,-5803327 Каждый результат записывается в формате 1с23 1с=страница 23-позиция, позиции идут с 0, так что нужно добавлять единичку Так же в зависимости от предидущего значения ставится стрелка, если позиция выросла-вверх, упала-вниз, то же место - ничего v5c2 - ^4c82 - ^4c74 - v5c10 -----2 .Частотность запросов по кс https://trending-searches.wb.ru/api?itemsPerPage=10&offset=0&period=month&query={-Variable.keyword-}&sort=desc {-Variable.keyword-} - ключевой запрос ----3. Берутся категории и по ним делается парсинг позиций в выдаче по всем гео Чтобы взять названия категорий: (у меня несколько криво, нужно будет найти, как сделать только запросами он в крошках там выполняет что-то чтобы их подтянуть, но я не знаю что) 1. Переходим. https://www.wildberries.ru/catalog/{-Variable.sku-}/detail.aspx {-Variable.sku-} - артикул 2. Берём инфу из крошек https://prnt.sc/ylJrcBcZJKsN - скрин - это название второй категории и основа для названия первой 3. Берём ссылку на вторую категорию и как основу для первой https://prnt.sc/lSfqXW2eaTIu - {-Variable.cat2_link-} Вот именно эти пункты выше нужно сделать только запросом, я не знаю, как ими вытащить эту инфу. 4. https://wbx-content-v2.wbstatic.net/ru/{-Variable.sku-}.json (?<="subj_name":")([\s\S]+?)(?=",) - название для первой категории - берём то что добыли во втором пункте и добавляем это (?<="subject_id":)([\s\S]+?)(?=,) - этот айди пригодится дальше для формирования ссылки на первую категорию 5. https://www.wildberries.ru/webapi/menu/main-menu-ru-ru.json (?<="url":"{-Variable.cat2_link-}","shard":")([\s\S]+?)(?=") - {-Variable.shard-} (?<="url":"{-Variable.cat2_link-}","shard":"{-Variable.shard-}","query":"subject=)([\s\S]+?)(?=") - {-Variable.xsubject_added-} Первая категория https://catalog.wb.ru/catalog/{-Variable.shard-}/catalog?appType=1&couponsGeo={-Variable.couponsGeo-}&curr=rub&dest={-Variable.dest-}&emp=0&lang=ru&locale=ru&page={-Variable.page-}&pricemarginCoeff=1.0®=1®ions=68,64,83,4,38,80,33,70,82,86,30,69,22,66,31,40,1,48&sort=popular&spp=19&subject={-Variable.xsubject_added-} Вторая категория https://catalog.wb.ru/catalog/{-Variable.shard-}/catalog?appType=1&couponsGeo={-Variable.couponsGeo-}&curr=rub&dest={-Variable.dest-}&emp=0&lang=ru&locale=ru&page={-Variable.page-}&pricemarginCoeff=1.0®=1®ions=68,64,83,4,38,80,33,70,82,86,30,69,22,66,31,40,1,48&sort=popular&spp=19&subject= {-Variable.page-} - страница, начинаем с первой Каждый результат записывается в формате 1с23 1с=страница 23-позиция, позиции идут с 0, так что нужно добавлять единичку Так же в зависимости от предидущего значения ставится стрелка, если позиция выросла-вверх, упала-вниз, то же место - ничего v5c2 - ^4c82 - ^4c74 - v5c10 ---4. Отзывы рейтинг https://wbx-content-v2.wbstatic.net/ru/{-Variable.sku-}.json (?<={"imt_id":)([\s\S]+?)(?=,") - {-Variable.imtId-} methodPOST: https://public-feedbacks.wildberries.ru/api/v1/summary/full (?<="valuation":")([\s\S]+?)(?=",) ---5. Отзывы кол-во (?<="feedbackCount":)([\s\S]+?)(?=,") (из прошлого запроса) ---6. Остатки https://wbxcatalog-ru.wildberries.ru/nm-2-card/catalog?spp=0®ions=83,75,64,4,38,30,33,70,71,22,31,66,68,82,48,40,1,69,80&stores=117673,122258,122259,125238,125239,125240,6159,507,3158,117501,120602,120762,6158,121709,124731,159402,2737,130744,117986,1733,686,132043&pricemarginCoeff=1.0®=0&appType=1&offlineBonus=0&onlineBonus=0&emp=0&locale=ru&lang=ru&curr=rub&couponsGeo=12,3,18,15,21&dest=-1029256,-102269,-1252558,-1250618&nm={-Variable.sku-} (?<=qty":)([0-9]+?)(?=}) - брать всё общее (после сложения списка) дальше по складам распределить (?<="stocks":\[\{)([\s\S]+?)(?=\],"time1") (?<="wh":)([\s\S]+?)(?=\}) - все пары складов (?<=)([\s\S]*)(?=,") - код склада (?<=":)([\s\S]*)(?=) - кол-во Код склада и название wh":507 - Подольск "wh":117986 - Казань "wh":120762 - Электросталь "wh":2737 - Санкт-Петербург "wh":159402 - Санкт-Петербург 2 "wh":130744 - Краснодар "wh":2737 - Екатеринбург "wh":686 - Новосибирск "wh":1193 - Хабаровск По складам хранить последний р-т. По общему кол-ву данные за 5 дней Формат данных 300(10) где (10)= 310(прошлый результат)-300(сегодня)