Парсинг букмекерской конторы с отправкой результатов в телеграм

Sdílet
Vložit
  • čas přidán 24. 07. 2024
  • Скринкаст выполнения реального заказа по парсингу букмекера и отправки результатов парсинга в телеграм.
    Поблагодарить и поддержать канал:
    pay.cloudtips.ru/p/118e1f87
    Тайм-коды:
    00:00 Ставим задачу
    02:22 Изучаем сайт букмекера
    06:47 Пишем парсер
    42:14 Регистрируем телеграм-бота
    43:32 Отправляем сообщение в телеграм
    46:12 Пишем проверку в базе данных
    54:41 О хостинге для скрипта
    56:05 Выводы
    Ссылка на хостинг Бегет beget.com/ru/p640166/vps#vps-...
    Скрипт отправки сообщения в телеграм gist.github.com/DxDiagDx/af33...
    Телеграм-чат про парсинг:
    t.me/proparsing
    Для связи пишите:
    Почта lukin@usota.ru
    WhatsApp +79053311246
    Телеграм @lukin_ea
    Профиль на профи.ру:
    profi.ru/profile/LukinEA8/?ut...

Komentáře • 126

  • @хастлер
    @хастлер Před 2 lety +2

    Евгений, спасибо вам большое, я на ютубе довольно часто смотрю видео по пайтону , ваше видео я считаю самым полезным из всех, которых я посмотрел!

    • @usota
      @usota  Před 2 lety

      Спасибо за высокую оценку!

  • @Keefear
    @Keefear Před 2 lety +1

    Интересное видео . Не смотря на то , что давно занимаюсь подобным , всегда приятно посмотреть , а как пишут другие и научиться чему-то новому 👍

  • @vikacherry1312
    @vikacherry1312 Před rokem +1

    Спасибо от души! Отличное видео! как раз то что я искал!

  • @Ctac7878
    @Ctac7878 Před 2 lety

    Евгений
    Прекрасное дело делаете, ясно, чётко. С отличным звуком и дикцией.
    Спасибо большое

    • @usota
      @usota  Před 2 lety

      Спасибо, приятно )

  • @sanskritjyotish9326
    @sanskritjyotish9326 Před 2 lety +1

    Лайкище однозначно! Интересовало примерно тоже самое, только на угловые)

  • @HyiPizdaSkovoroda
    @HyiPizdaSkovoroda Před 2 lety +15

    То что ты показал это в первую очередь опыт работы, а это бесценно, спасибо тебе добрый человек, что делишься с нами своим опытом работы )

    • @usota
      @usota  Před 2 lety +2

      Спасибо 🙏

  • @betnews-8616
    @betnews-8616 Před rokem +2

    С нетерпением жду новые видео, желательно по парсингу или по базам данных

    • @usota
      @usota  Před rokem +1

      Спасибо, скоро будет видео по практике парсинга поставщика с авторизацией в базу данных.

  • @mrsairax
    @mrsairax Před 2 lety +15

    Отличное видео! По подаче, хотелось бы, чтобы экранный приоритет сместился на код, может стоит окно с Вашим присутствием установить где-нибудь в углу экрана? ну и, для удобства, исходники по урокам было бы неплохо где-то выкладывать. Спасибо за проделанную работу!

    • @usota
      @usota  Před 2 lety +4

      Спасибо за высокую оценку! Ваши пожелания учту, это очень важно. Для каких-то инструкций я всегда дам ссылку на исходник. В этом же видео важнее смысл решения задачи, а не код. Тем более код сырой и без рефакторинга.

    • @mrsairax
      @mrsairax Před 2 lety +3

      @@usota Ваше видео мне очень помогло! Изучаю Пайтон и уже написал несколько простеньких парсеров с Телеграмом. Возникла задача парсить несколько поисковых выдачей на ebay. с записью в БД и проверкой уникальности и отправку в Телеграмм. Но т.к еще не сильно понимаю как код дробить на несколько составных частей (функций) приходилось писать "код-в-ряд")) и естественно, когда строк больше 150, то очень легко ошибиться во вложенных циклах. Благодаря этому видео оптимизировал свой код, разбил по функциям и все прекрасно заработало! Спасибо большое!

    • @dimamihalev2986
      @dimamihalev2986 Před 2 lety +2

      @@usota Евгений, покажу код парсинга с обходом клаудфларе

  • @rethen2122
    @rethen2122 Před rokem +1

    Спасибо!

  • @user-bo2gp3pi4k
    @user-bo2gp3pi4k Před 9 měsíci +2

    Но как узнать какой именно запрос искать!? на другом бк у меня не получается найти этот самый гет!?

  • @ShooterStar
    @ShooterStar Před 2 lety

    так же можно было и игру сделать ключем, а значения все 3 жк. Но а так, очень крутое видео, в закладки однозначно. Есть о чем подумать. Еще бы научиться делать так, чтобы бк не забанила)))))

  • @wanwight5593
    @wanwight5593 Před 2 lety +3

    когда попытался сделать чтобы отправлялись все желтые карточки вместе с первым, вторым таймом. Пытался все из функции search_db пустить цикл дальше, но он там прерывается из за id. Надо использовать search_db для проверки наличия id игры в БД и забирать либо Правду, либо Ложь и дальше от этого либо прерывать цикл, либо дать скрипту отправить данные с этой игры. Трудно быть новичком.

  • @stasyaooo
    @stasyaooo Před 2 lety +2

    На самом деле это первый парсер в Ютубе если не ошибаюсь 1xbet который работает на запросах)

  • @user-th5wu7es3n
    @user-th5wu7es3n Před 2 lety +3

    Ничего не понял но мне понравилось.

  • @romandavydov3888
    @romandavydov3888 Před 2 lety +1

    Евгений, спасибо за видео. Очень понятно, очень доходчиво. Сделал все как в вашем видео работает. Могли бы подсказать как находить JSON ответы по другим видам спорта: теннис, волейбол , баскетбол и др.

    • @user-ze2ds2lq1u
      @user-ze2ds2lq1u Před 2 lety

      Тоже интересна данная тема

    • @mizzzantropbogg6800
      @mizzzantropbogg6800 Před 2 lety

      params = (
      ('sports', '3'),
      ('count', '150'),
      ('mode', '4'),
      ('country', '82'),
      ('partner', '78'),
      ('getEmpty', 'true'),
      ('noFilterBlockEvent', 'true'),
      )
      Вот для баскетбола. Значение sports меняй и будет другой вид спорта

    • @rootroot1668
      @rootroot1668 Před 2 lety

      Роман а для чего он тебе ? В каких целях используешь ? Польза от него ?

  • @elji3178
    @elji3178 Před 2 lety +1

    ничего не понимаю, но очень интересно

  • @ShooterStar
    @ShooterStar Před 2 lety

    да и в if же можно сразу передать 2 сравнения с and. И сразу сформировать в одном if правильный словарь

    • @usota
      @usota  Před 2 lety +1

      Да, возможно так лучше.

  • @vaka984
    @vaka984 Před 2 lety +3

    Интересное видео, спасибо! Подскажите а можно ли сделать автоставку через питон? Или это все дело отслеживается?

    • @usota
      @usota  Před 2 lety +2

      Спасибо. Честно, о ставках ничего не знаю 🤷‍♀️ Но думаю, отслеживается.

    • @elji3178
      @elji3178 Před 2 lety

      отслеживается. но есть люди которые делают такие программы, и работают неплохо. но просят за них хорошую сумму

  • @ruhinhmdov9139
    @ruhinhmdov9139 Před rokem +1

    Супер видео,Евгений👍👍👍👍👍. Хотел спросить,где можно найти,скачать архив коэф?

    • @usota
      @usota  Před rokem

      Спасибо. По поводу архивов не знаю, возможно на флешскоре

    • @ruhinhmdov9139
      @ruhinhmdov9139 Před rokem +1

      @@usota очень хочу найти архив коэф. БК

  • @MurzikM
    @MurzikM Před 2 lety +4

    Евгений, сделайте пожалуйста подробное видео про WebScraper на примере какого либо интернет магазина, то есть как парсить товары массово. Будет очень полезным, т .к. такой информации толком ни где нет. Заранее спасибо!

    • @usota
      @usota  Před 2 lety +2

      Спасибо за предложение, давайте сделаем - напишите, на примере какого интернет-магазина показать работу парсера и я запишу по нему видео.

    • @MurzikM
      @MurzikM Před 2 lety +2

      @@usota Мой ответ удалили похоже) Евгений, успели название сайта скопировать?

    • @usota
      @usota  Před 2 lety +2

      Нет, напишите на почту lukin@usota.ru

    • @MurzikM
      @MurzikM Před 2 lety +3

      @@usota Отправил. Буду ждать видео)

  • @LOGOSTT
    @LOGOSTT Před 2 lety +3

    25:59 нельзя ли в этом месте вместо "IF" применить конструкцию match/case?

    • @usota
      @usota  Před 2 lety +1

      Да, я думаю можно, спасибо попробуем)

  • @crew2005
    @crew2005 Před 8 měsíci

    Как сделать что бы парсился баланс аккаунта? И обновлялся в режиме реального времени

  • @rabotavsem_biz
    @rabotavsem_biz Před rokem +1

    Подскажи момент, в случае изменения коэф, бот же не пришлет новое значение? тк в базе данный матч уже есть

    • @usota
      @usota  Před rokem

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

  • @LOGOSTT
    @LOGOSTT Před 2 lety +2

    35:57 я не спец. в Python, но полагаю, что так вычислять время не дальновидно. А если у заказчика другой часовой пояс?

    • @usota
      @usota  Před 2 lety +1

      В этом коде ещё очень много недальновидных вещей)

  • @bellyi1
    @bellyi1 Před rokem +1

    Интересно конечно, но я видимо олух. Дальше if в строке не продвинулся, вообще не пойму как эти знаки типа равно и нижнего подчёркивания писать(((

  • @user-mz6bg7cf6g
    @user-mz6bg7cf6g Před 2 lety +2

    молодец, прикольно), только токен то зачем было светить от бота?)

    • @usota
      @usota  Před 2 lety +2

      Спасибо, тренировочного бота не жалко)

  • @user-dy9pm5dz6s
    @user-dy9pm5dz6s Před 2 lety +3

    скажите пожалуйста что за расширение для построения json деревьев

    • @usota
      @usota  Před 2 lety +2

      JSON Formatter

  • @user-bg8cx9ez4z
    @user-bg8cx9ez4z Před rokem +1

    спасибо за видео, начал парсить в лайве, нашел все коэффициенты и статистику, но не могу найти текущую минуту матча

    • @usota
      @usota  Před rokem

      Могу ошибаться, но скорее всего время представлено в формате timestamp, например 1667746800 будет как 2022-11-06 18:00:00. Если вопрос не в этом, а в каком ключе лежит время, пошедшее с начала матча, то так не вспомню. Но оно там есть точно )

    • @user-bg8cx9ez4z
      @user-bg8cx9ez4z Před rokem +1

      @@usota спасибо. так и есть.

  • @crexlight
    @crexlight Před 2 lety +4

    3:20 а не могли бы вы пожалуйста сказать что за расшриение?

    • @crexlight
      @crexlight Před 2 lety +3

      "JSON Formatter" уже нашёл, спасибо

  • @Alex163-1
    @Alex163-1 Před 2 lety +3

    Отличное видео! 👍
    Как раз ищу исполнителя на подобный скрипт. Примерная цена?

    • @usota
      @usota  Před 2 lety +2

      Спасибо за оценку! Ценник начинается от 10 тыс. А вообще цена зависит от задачи, пишите, обсудим. Контакты в описании.

    • @Alex163-1
      @Alex163-1 Před 2 lety +1

      @@usota 👌👌👌

  • @user-cx2nu1fn8z
    @user-cx2nu1fn8z Před 2 lety

    Здравствуйте, можно ли создать телеграмм бота по прогрузам букмекерских контор? Если да, то сколько будет стоит ежемесячное обслуживание? Я не программист, по этому надеюсь Вы отнесётесь с понимаем если мой вопрос очень глупый))

    • @usota
      @usota  Před 2 lety +1

      Здравствуйте, на 2022 год стоимость ежемесячного парсинга сайта стоит от 3000 до 10000₽. Но всё зависит от сайта БК, объема данных и т.д. Все индивидуально. И я, к сожалению, не знаю что такое прогрузы, поэтому может это не получится. Но ценовой диапазон примерно такой.

  • @betnews-8616
    @betnews-8616 Před rokem +2

    Вот и беда подкралась откуда не ждали. Три дня копал статистику с сайта и кучу полезностей , как вдруг скрипт перестал забирать json с сайта...
    {'Error': '', 'ErrorCode': 0, 'Guid': '', 'Id': 0, 'Success': True, 'Value': []}

    • @usota
      @usota  Před rokem +2

      Возможно ваш IP временно заблокировали, попробуйте использовать прокси, чтобы подменить IP-адрес

  • @alisik2020
    @alisik2020 Před 2 lety

    Добрый день, спасибо за видео!
    На стадии получения json ответа с сайта, pycharm выдаёт ошибку JSONDecodeError. Не подскажите что не так? Сделал всё по аналогии как у вас

    • @usota
      @usota  Před 2 lety

      Посмотрите, что лежит в response.text, возможно проблема в результате, который возвращает запрос.

  • @LOGOSTT
    @LOGOSTT Před 2 lety +2

    Как изменить ранее отправленное сообщение в Телеграм, например, если изменились "ставки'?

    • @usota
      @usota  Před 2 lety +1

      Отправить новое?

    • @LOGOSTT
      @LOGOSTT Před 2 lety +1

      @@usota вопрос не для данной конкретной задачи, а для других случаев.
      *Например, такой*
      1) Поступил звонок в офис, мне в телеграмм система отправила сообщение:
      _30-12-2021 __13:45:22__ Поступил звонок с номера 777-77-77._
      2) На звонок ответил другой сотрудник, требуется изменить ранее отправленное мне сообщение:
      _30-12-2021 __13:45:22__ Поступил звонок с номера 777-77-77._
      _13:45:30__ Ответил аб.1501._

    • @usota
      @usota  Před 2 lety +1

      Хороший вопрос. Я бы смотрел в сторону метода editMessageText. Поделитесь решением, если получится реализовать, буду благодарен 😊

  • @lukipiv7143
    @lukipiv7143 Před 2 lety

    Евгений, здравствуйте.Как загрузить бота на хостинг чтобы тот отправлял сигнал каждые 5 минут?

    • @usota
      @usota  Před 2 lety

      В этом видео Парсинг недвижимости Авито, Циан, Яндекс. Часть IV (Запуск на сервере)
      czcams.com/video/hCWoTYjTC-E/video.html есть пример, как запускать скрипт на сервере по расписанию

  • @CreatorDreamer
    @CreatorDreamer Před 2 lety +1

    Добрый день. Подскажите каким образом следить за информацией чаще чем 1 раз в минуту?
    К примеру котировки валют.
    Так как не правильным будет заходить на сайт, получать информацию, выходить и затем опять входить.
    Я думаю, что нужно войти на сайт и просто обновлять данные, но как это сделать?

    • @usota
      @usota  Před 2 lety

      Добрый день. Вы можете создать сессию и в её рамках работать с сайтом. Это есть в библиотеке requests. Частоту запросов вы задаёте сами, но на ответ нужно дать хотя бы 2 сек. Вобщем делать запросы каждые 3 сек. максимум.

    • @user-ec3ty2rf9f
      @user-ec3ty2rf9f Před rokem

      ​@@usotaА при таком частом обращении, сервер не забанит наш IP?

    • @usota
      @usota  Před rokem

      Зависит от настроек сервера. Например WB не обращает внимания на частые запросы, а более щепетильные сайты банят уже на второй запрос. Поэтому стоит использовать прокси. А вобще пересмотреть задачу - нужны ли такие частые запросы… не фигнёй ли мы занимаемся?)

    • @CreatorDreamer
      @CreatorDreamer Před rokem +1

      @@usota Благодарю тезка. За прошедший год поднял свои скилы, так что уже сам API пишу. И понимают. В любом случае круто, что ответил. Дай Бог процветания

    • @usota
      @usota  Před rokem

      Крутые результаты 💪🤝

  • @user-ft3hj2fd5q
    @user-ft3hj2fd5q Před rokem +1

    Доброго времени Евгений! За сколько выполнили этот заказ, если не секрет, для понимания оплаты труда на такую работу)

    • @usota
      @usota  Před rokem

      У меня цена за парсер БК в 2022 году - 30 тыс.руб. Как правило на написание парсера уходит 2-3 дня, а вот на тестирование, доработку и сопровождение - минимум месяц.

    • @user-ft3hj2fd5q
      @user-ft3hj2fd5q Před rokem

      @@usota ваш профиль на профи ру не отображается. сколько берете за доработку данного проекта

    • @usota
      @usota  Před rokem

      @@user-ft3hj2fd5q спасибо, починил. Давайте свяжемся в телеграмм или ватсап, я сейчас не могу взять заказ, поэтому и суммы не называю, но может чем помогу.

    • @user-ft3hj2fd5q
      @user-ft3hj2fd5q Před rokem +1

      @@usota я не по поводу заказа. сам хочу заняться парсингом, сейчас смотрю ваши вводные уроки по веб скрепперу, и вникаю в html/css. увидимся в вашем телеграмме, всех благ)

    • @usota
      @usota  Před rokem

      С удовольствием помогу коллеге, до встречи 🤝

  • @Aleksandr.Sv.istorija
    @Aleksandr.Sv.istorija Před rokem +1

    Когда печатаю result = response.json() то выдает ошибку и выделяет json

  • @nickklick5824
    @nickklick5824 Před 2 lety

    Евгений подскажите пожалуйста, как выбрать нужный запрос, если сайт отдает много данных, когда мы запрашиваем через network.
    Есть ли какой-то лайфхак?
    (Надеюсь вы меня поняли. Заранее извиняюсь, если вопрос глупый, я ещё только учусь)

    • @usota
      @usota  Před 2 lety +1

      Есть два способа найти нужный запрос быстрее:
      1) в консоли разработчика в строке фильтра вместо All выбрать Fetch/XHR, чтобы оставить только запросы;
      2) тамже в консоли сделать экспорт HAR и парсить уже его.
      Понимаю, что звучит ещё не понятнее, но пару часов гугления и у вас новый крутой инструмент, с помощью которого открываются новые возможности парсинга)

    • @nickklick5824
      @nickklick5824 Před 2 lety

      @@usota спасибо! Лучший! Вроде понял, буду пробовать) жду новые видео от Вас👍

    • @nickklick5824
      @nickklick5824 Před 2 lety

      @@usota а стоит ли обращать внимание на размер запроса? Или не всегда нужный запрос весит больше?

    • @usota
      @usota  Před 2 lety

      Да, как вариант, можно отсортировать по размеру запроса и проверять сначала наибольшие. Но насколько выше вероятность быстро найти нужный, пока не знаю.

    • @nickklick5824
      @nickklick5824 Před 2 lety

      @@usota в любом случае спасибо)

  • @Aleksandr.Sv.istorija

    Какое расширение для дерева используешь?

    • @usota
      @usota  Před rokem

      Первое попавшееся в магазине расширений ) JSON Formated - что-то такое

  • @yumir
    @yumir Před 2 lety +1

    Почему бы не использовать json в роли БД?

    • @usota
      @usota  Před 2 lety +1

      Вы правы, можно и JSON. Для хранения одного поля это не принципиально.

    • @yumir
      @yumir Před 2 lety +1

      @@usota хотел задать следующий вопрос: при стандартном использовании функции json.dump() у меня неправильно обрабатывается кириллица. Как это можно решить?

    • @usota
      @usota  Před 2 lety +1

      Используйте ensure_ascii=False

  • @Zonder_Play
    @Zonder_Play Před 4 měsíci +1

    А как парсить все игры без ограничения в 50 штук?

    • @usota
      @usota  Před 4 měsíci

      В цикле выбираем по 50 штук, пока не соберем все

    • @Zonder_Play
      @Zonder_Play Před 4 měsíci

      Это то понятно что в цикле, но сервер через get запрос отправляет 50 игр, но их куда больше, если менять параметр count это не помогает, сервер игнорирует это, все остальные игры(я так понял) сайт получает другим запросом, который не со страницы сайта мы не можем отправить. Если есть возможность по очереди прогружать игры, то как это сделать

  • @user-pm4zf3nh7d
    @user-pm4zf3nh7d Před rokem +1

    Сайт для каждого аккаунта отдаёт свои данные и коэффициенты (порезанный акканут, например)

    • @usota
      @usota  Před rokem

      А мы же парсим без авторизации

    • @user-pm4zf3nh7d
      @user-pm4zf3nh7d Před rokem +1

      @@usota так я о том же, что у заказчика будут другие коэффициенты и, возможно, замки на то, что без авторизации открыто

    • @usota
      @usota  Před rokem

      Согласен, это тоже нужно учитывать при разработке проекта

  • @ShooterStar
    @ShooterStar Před 2 lety

    в словаре надо было ключем сделать значение тотала, а value уже кэфы, потом же проще было бы парсить все это и передавать

    • @usota
      @usota  Před 2 lety

      Надо было, спасибо.

  • @blackinlove9547
    @blackinlove9547 Před 2 lety +1

    Не реклама 😅 (шутка)

  • @MultiBigkush
    @MultiBigkush Před 2 lety +1

    Приветствую! А как вы зациклили весь код, чтобы он каждую минуту отправлял данные в телеграм? Не увидел это в коде

    • @MultiBigkush
      @MultiBigkush Před 2 lety +1

      В конце услышал, что настраиваете на сервере запуск скрипта по расписанию. А если, к примеру, нужно парсить в реальном времени, думаю, что лучше это через циклы делать в python. ИМХО.

    • @usota
      @usota  Před 2 lety +1

      Приветствую, код не зацикливаю. Код запускается по расписанию, которое задаю на сервере. С помощью cron задаю гибкое расписание, например запускать парсер ежедневно с 8 до 22 каждую минуту.

  • @AlexPetrov
    @AlexPetrov Před 2 lety +1

    "Перед тем как начнём поставьте лайк или дизлайк" - где логика?

    • @usota
      @usota  Před 2 lety +2

      Вы серьезно?

    • @AlexPetrov
      @AlexPetrov Před 2 lety +1

      @@usota Я материал оцениваю только ПОСЛЕ просмотра. Не так надо?

  • @leelvan
    @leelvan Před 2 lety

    Зачем нам ваше лицо на четверть экрана?

    • @usota
      @usota  Před 2 lety +3

      Не на четверть, а на треть.

    • @leelvan
      @leelvan Před 2 lety

      @@usota да, прошу прощения. Зачем нам ваше лицо на треть экрана?

  • @evgeniy7480
    @evgeniy7480 Před rokem +1

    Них... не понял но очень инттересно)+

  • @merlin7411
    @merlin7411 Před rokem

    Горе программист, пишущий в столбик. Садись Иванов, 2.

  • @betnews-8616
    @betnews-8616 Před rokem +1

    эх в конце видео что то пошло у меня не так, все проверил уже , но ничего не помогает. выдает ошибку - ValueError: invalid literal for int() with base 10: '' там где мы проверяли сообщения на повторную отправку. как я понял, что то происходит с интерпритацией в строку нашего гейм айди. а что не так уже бьюсь второй час и флоат попробовал уже
    def search_db(game_id, yellow_card):
    with open('db.txt', 'r') as file:
    for item in file.readlines():
    line = item.strip()
    if int(line) != game_id:
    get_message(yellow_card)
    with open('db.txt', 'a') as file:
    file.write(f'
    {game_id}')

    • @betnews-8616
      @betnews-8616 Před rokem

      помогите пожалуйста кто-нибудь понять в чем загвоздка. Спасибо большое

    • @usota
      @usota  Před rokem +1

      Это моя ошибка, использовать текстовый файл в качестве базы данных. Лучше использовать SQLite. Но если вам для обучения, то лучше использовать CSV.

    • @betnews-8616
      @betnews-8616 Před rokem +1

      @@usota спасибо большое!

  • @romandavydov3888
    @romandavydov3888 Před 2 lety

    Евгений, спасибо за видео. Очень понятно, очень доходчиво. Сделал все как в вашем видео работает. Могли бы подсказать как находить JSON ответы по другим видам спорта: теннис, волейбол , баскетбол и др.

    • @usota
      @usota  Před 2 lety +1

      Спасибо за обратную связь)
      По другим видам спорта ищем по аналогии. Кстати, в видео про парсинг Озон, я рассказываю, как искать нужный JSON, если их очень много. Если коротко - в консоли разработчика скачиваем har-файл и в нём ищем нужные данные, как в обычном json.

    • @romandavydov3888
      @romandavydov3888 Před 2 lety

      @@usota Спасибо про Ozon еще не смотрел. Буду изучать.