Полу-автоматический скрипт для покупки подарков
Планируются реализации для виртуалок, desktop-приложений, Android-приложений и так далее. Данный код (при желании) можно подогнать под любую задачу.
Работу по проверке магазина подарков и будущей покупки подарков выполняют worker'ы, каждый из них запускается в своем контейнере, машине или на отдельном смартфоне
Вместо парсинга DOM-элементов (то есть поиска HTML-блоков), выполняется поиск по визуальным составляющим (в скриншотах). Есть минусы, например - повышенные требования к ресурсам, НО! Поиск по скриншотам упрощает настройку и открывает возможности для интеграции с OCR / аналитическими нейросетями
Код построен так, что бы worker'ы могли иметь разные реализации (Android-приложение, Chrome-клиент Telegram Web и так далее). То есть даже на парковке работать будет.
Периодически worker'ы отправляют ping на центральный сервер (main worker). Для их общения используются вебсокеты с self-signed certs (защищенное TCP соединение). Если worker перестает посылать ping, админ сразу получает уведомление.
На данный момент реализован Chrome-клиент Telegram Web под Linux Desktop, то есть необходима машина Linux с графической средой.
Покупка подарков не реализована, только уведомление о новых подарках (если включен 1 воркер - уведомление приходит раз в 15 секунд, если 2 - то 7,5 секунд, и так далее)
- Запуск
main:
$ git clone https://github.com/JuniorAww/tgifts
cd TGifts
bash ./how-to-get-certs.md
bun .- Запуск
worker:
$ cd worker/web-python
python3 index.py- Команды бота (
main):
/fetch worker_name - отобразить последний скриншот от воркера и время ping'а
/add worker_name - разрешить подключение для нового воркера
/click worker_name x,y - отправить команду для нажатия и отобразить скриншот
/save worker_name image_name - сохранить изображение у воркера worker_name
- Алгоритм в
main workerдля распределения времени парсинга
(Объяснение) Что бы время между проверками шопа подарков разнымиworker'амибыло минимально, нужно "распределять" работу - то есть давать команду сначала воркеру А, затем воркеру Б. Сейчас они работают асинхронно (сервер не регулирует) - OCR поиск текста
- Worker под Android-клиент или виртуалку
- Упростить работу с ботом