Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings
Open more actions menu

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
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

Morty Proxy This is a proxified and sanitized view of the page, visit original site.