Элжур бот Предназначен для получения объявлений в телеграме в виде скриншота и html файла, а также присутствует возможность узнать какие объявления были удалены.
Go to file
2024-01-27 21:44:51 +03:00
.vscode golang-database-try 2024-01-27 21:44:51 +03:00
Golang/data golang-database-try 2024-01-27 21:44:51 +03:00
.gitignore golang-database-try 2024-01-27 21:44:51 +03:00
Dockerfile golang-database-try 2024-01-27 21:44:51 +03:00
env.example golang-database-try 2024-01-27 21:44:51 +03:00
go.mod golang-database-try 2024-01-27 21:44:51 +03:00
go.sum golang-database-try 2024-01-27 21:44:51 +03:00
LICENSE golang-database-try 2024-01-27 21:44:51 +03:00
main.go golang-database-try 2024-01-27 21:44:51 +03:00
README.md golang-database-try 2024-01-27 21:44:51 +03:00
sample.env golang-database-try 2024-01-27 21:44:51 +03:00
scaper.go golang-database-try 2024-01-27 21:44:51 +03:00
worker.go golang-database-try 2024-01-27 21:44:51 +03:00

Идея для нового метода обработки объявлений

  • Обрабатывать не как текст, а в виде объекта структуры объявления
  • Сохранять объявления в виде байт кода массива объявлений
  • Снова переделать функцию поиска различий для новых структур данных

Структура объявления board-item

  • active -- bool -- из названия класса
  • dates -- string pair -- дата-дата в формате ДД.ММ.ГГГГ (в будущем отправлять только с флажком "удалено раньше времени")
  • title -- string -- заголовок из класса board-item__title
  • content -- string -- текст из объявления. Ознакомьтесь с поддерживаемыми тегами и на тег br. Класс typography typography--links
  • attachments -- array из структур outline -- если есть вложения, класс button
  • creator -- string -- из класса b-href
  • receivers -- string -- строку собираем из всех получателей с разделителем ·
  • edit_pattern -- []int -- 6 значений 0 или 1 по изменениям
  • unique -- bool -- уникально ли объявление относительно нового / старого списка

edit pattern и unique заполняются после получения новых объявлений отдельной функцией, вызываемой во время генерации сообщения

Структура вложения outline

Берем класс button на разбор

  • title -- string -- заголовок
  • link -- string -- ссылка на контент
  • type -- string -- название вложенного класса по тегу i

Изменения в экспорте содержимого страницы get_content

  • С помощью указателей rod найти все объявления как указатели на объекты JS
  • отправить текст каждого объекта в функцию parse_post, принимающую текст и возвращающую объект структуры объявления с заполненными полями.
  • Собрать все структуры объявлений в массив и вернуть его

Изменения в обработке содержимого scape

  • Адаптация под новый get_content
  • Теперь возвращает массив

Изменения в get_difference

  • Теперь мы сравниваем два массива, формируем сообщение в формате string с html форматированием
  • Появился новый заголовок == новое объявление ->> целиком под заголовком появились объявления
  • Изменилось что-то в объявлении ->> заголовок + "изменилось <слой>" + новый слой, под заголовком изменились объявления
  • Пропал заголовок объявления раньше времени ->> целиком под заголовком удалено вручную

Изменения в работе с файлами get_file и update_file

  • Добавить вызов функции для работы с байткодом
  • Сохранить полученный байткод в файл

Бонус

  • Переименовать функции под стандарты golang

  • Пример: get_difference ->> GetDifference

  • Написать комментарии к коду

Комментарии ТУТ!

Элжур бот

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

Экспуатация проекта

Скачивание проекта
git clone https://git.soaska.ru/sosiska/eljur
cd eljur
Создание .env файла

Используйте sample.env, чтобы создать свой .env файл. env.example - пример, как может выглядеть файл .env

ELJUR_LOGIN=Vasya2005
ELJUR_PASSWORD=password_example
ELJUR_DOMAIN=2007

TG_TOKEN=123045678:ABCD_Uj3dQwUpDrf6e2-iCmI34v2SEGdZz0
TG_ID=1234567321
TG_API_URL=https://api.telegram.org/

Подготовка к запуску проекта

  1. Установите библиотеки:
go mod download
  1. Перенесите папку data:
cp -r Golang/data .
  1. Запустите проект:
go run .

Примечание:
Скомпилированный бинарник можно взять здесь. Используйте Эту команду как п.3 в случае использования скомпилированного бинарника:

curl https://git.soaska.ru/api/v4/projects/13/packages/generic/bin/2.0B/eljur-bot -o eljur-bot
./eljur-bot