Элжур бот
Предназначен для получения объявлений в телеграме в виде скриншота и html файла,
а также присутствует возможность узнать какие объявления были удалены.
.vscode | ||
Golang/data | ||
.gitignore | ||
Dockerfile | ||
env.example | ||
go.mod | ||
go.sum | ||
LICENSE | ||
main.go | ||
README.md | ||
sample.env | ||
scaper.go | ||
worker.go |
Идея для нового метода обработки объявлений
- Обрабатывать не как текст, а в виде объекта структуры объявления
- Сохранять объявления в виде байт кода массива объявлений
- Снова переделать функцию поиска различий для новых структур данных
Структура объявления 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/
Подготовка к запуску проекта
- Установите библиотеки:
go mod download
- Перенесите папку data:
cp -r Golang/data .
- Запустите проект:
go run .
Примечание:
Скомпилированный бинарник можно взять здесь. Используйте Эту команду как п.3 в случае использования скомпилированного бинарника:
curl https://git.soaska.ru/api/v4/projects/13/packages/generic/bin/2.0B/eljur-bot -o eljur-bot
./eljur-bot