SlutParser viewer db:
Телефон Username Дата Текст поста Медиа Ссылки

Источники

Категория: в неё добавляются выбранные подписки (= таблица)

Добавленные источники

Загрузка…

Настройки

Безопасность

Пароль администратора
TOTP (двухфакторная аутентификация)
Passkey / биометрия
API-ключ экспорта

Параметры экспорта

Фоновая ротация

Тикер ротации работает всегда, но удаляет только записи, которые уже забрали через API (подтверждены ack) и которые старше срока хранения. Записи, которые ещё не выгружали, не удаляются никогда. Дополнительно ротация освобождает «зависшие» резервации (выгрузка началась, но ack не пришёл за RESERVATION_TTL) — чтобы их можно было выгрузить заново.

Обслуживание

Кэш приложения (PWA)
Приложение кэширует интерфейс (CSS/JS, иконки) через service worker — для офлайн-работы и скорости. После обновления панели может показываться старая версия из кэша. Кнопка очищает кэш и service worker и загружает свежую версию.

Как это работает

Что это и зачем

SlutParser — сервис, который читает указанные Telegram-каналы/чаты, извлекает из сообщений телефоны и контакты и складывает их в базу данных.

Эта панель даёт: поиск/просмотр собранного (вкладка «Данные»), управление источниками (вкладка «Источники») и машинную выгрузку по API (для интеграций). Сбор идёт фоновым резидентным сервисом — он висит в памяти и дозабирает свежие сообщения.

Как запустить сбор

  1. Откройте вкладку «Источники».
  2. В поле «Категория» впишите тему (например irkutsk) — это отдельная таблица.
  3. Найдите нужную подписку в списке и нажмите «+ в категорию».
  4. Резидентный сервис подхватит источник в начале ближайшего цикла и начнёт собирать — прогресс видно в нижней ленте («обработано / новых / дублей»).

Управление коллекциями

  • Тема = отдельная таблица. Группируйте источники по темам — данные пишутся раздельно.
  • Включение/выключение источника — тумблером в списке (сбор по нему останавливается/возобновляется).
  • Удаление источника не стирает уже собранные записи.
  • Во вкладке «Данные» переключайте таблицу-тему и фильтруйте: поиск по телефону/username/тексту, диапазон дат, тогл «с объявлением» (только записи с текстом).

Подключение и забор данных по API

Создайте API-ключ во вкладке «Настройки» → «API-ключ экспорта». Выгрузка двухфазная: export отдаёт батч и резервирует записи, ack подтверждает получение (после чего они помечаются и попадают под авторотацию).

# 0. Ваш ключ и адрес (ключ — из «Настройки»)
KEY="ВАШ_API_КЛЮЧ"
URL="https://sugar.lem-labs.ru:8443"

# 1. Запросить батч непомеченных записей.
#    Сервер резервирует их (exported_at) и возвращает batch_id + items[].
RESP=$(curl -s -H "X-API-Key: $KEY" \
  "$URL/api/export?table=slutparser&limit=500")

# 2. Сохранить батч в файл и достать batch_id из ответа.
echo "$RESP" > batch.json
BATCH=$(echo "$RESP" | grep -o '"batch_id":"[^"]*"' | cut -d'"' -f4)

# 3. Подтвердить получение → сервер ставит pulled_at для этого батча.
#    Без ack записи останутся «зарезервированы» и через RESERVATION_TTL
#    снова станут доступны для выгрузки (защита от потери при обрыве).
curl -s -X POST -H "X-API-Key: $KEY" \
  -H "Content-Type: application/json" \
  -d "{\"batch_id\":\"$BATCH\"}" \
  "$URL/api/ack?table=slutparser"

# Повторяйте шаги 1–3, пока в ответе count > 0 — так выгребается всё.

Готовый клиент slutpull делает этот цикл сам: slutpull --url $URL --key $KEY --table slutparser --loop --out ./export — export → сохранить → ack, пока есть данные.

В архиве: pull.sh, pull.py, pull.go (только stdlib) и README — задайте KEY и запускайте.