Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

VK Group Getter

Сервис для сбора данных из VK-групп: постов со стены и участников с подробным профилем.

Собирает аккуратно в базу sqlite , но можно легко переделать на любую другую БД потому что GORM.

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

Возможности

  • Приём URL группы VK (поддерживает vk.com, vk.ru, m.vk.com, и др.)
  • Скачивание постов со стены (до 1200 последних постов)
  • Скачивание участников группы с полными данными профиля
  • Отслеживание изменений состава участников (active / left)
  • Асинхронная обработка через встроенную очередь
  • Авторизация по API-ключу
  • Swagger UI для документации API

Стек

  • Go + Fiber — HTTP-сервер
  • SQLite + GORM — хранилище
  • VK SDK v3 — взаимодействие с VK API
  • Swagger (swaggo) — документация API

Быстрый старт

1. Настройка окружения

cp .env.example .env

Заполните переменные в .env:

Переменная Описание
VK_TOKEN Токен доступа VK API
DB_PATH Путь к файлу SQLite (напр. db.sqlite)
API_KEY Ключ для доступа к API сервиса
HOST Хост (по умолчанию localhost)
PORT Порт (по умолчанию 8080)

2. Запуск

go run cmd/app/main.go

Сервер стартует на http://localhost:8080.

3. Swagger UI

Откройте http://localhost:8080/swagger/index.html для просмотра документации API.

API

Добавление группы

POST /groups
X-API-Key: <your-api-key>
Content-Type: application/json

{
  "address": "https://vk.com/durov"
}

Ответ (201):

{
  "id": 1,
  "address": "durov"
}

После добавления группа автоматически ставится в очередь на обработку: загрузка постов и участников.

Health check

GET /health
{ "status": "ok" }

Модель данных

Таблица Описание
groups Группы VK (адрес, внешний ID, статистика)
vk_posts Посты со стен групп
vk_people Профили пользователей VK
group_people Связь группа-участник (со статусом и датой)

Обработка

При добавлении группы сервис:

  1. Разрешает экранное имя в числовой ID через utils.resolveScreenName
  2. Постранично скачивает посты со стены (с задержкой ~1.1с между запросами)
  3. Скачивает участников с расширенными полями профиля
  4. Помечает выбывших участников как left с указанием даты

Docker

Сборка образа

docker build -t vk-group-getter .

Запуск контейнера

docker run -d \
  --name vk-getter \
  -p 8080:8080 \
  -e VK_TOKEN=your_token \
  -e DB_PATH=./db.sqlite \
  -e API_KEY=your_api_key \
  -e PORT=8080 \
  -v $(pwd)/data/db.sqlite:/app/db.sqlite \
  vk-group-getter

Переменные окружения передаются через -e или через .env файл:

docker run -d \
  --name vk-getter \
  -p 8080:8080 \
  --env-file .env \
  -v $(pwd)/data:/app \
  vk-group-getter

Примечание: Порт настраивается через переменную PORT (по умолчанию 8080). При изменении порта не забудьте обновить соответствующий флаг -p:

docker run -d -p 9090:9090 -e PORT=9090 ... vk-group-getter

Docker Compose

docker compose up -d

Лицензия

MIT

About

Microservice to get post of VK group

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages