Skip to content

About

Backend Discord/API pour l'architecture LiveChat

Resources

Stars

1 star

Watchers

0 watching

Forks

Repository files navigation

LiveChatCaCaBox

Backend Discord/API pour l'architecture LiveChat EXE-only.

Documentation projet: ../README.md PRD: ../PRD.md

Projets liés (sources)

Rôle

  • Reçoit les commandes Discord.
  • Télécharge et normalise les médias (yt-dlp + ffmpeg).
  • Met en cache les assets (TTL 12h).
  • Expose les routes /overlay/*.
  • Expose la route /ingest (API simple pour raccourcis iOS).
  • Diffuse les événements socket vers les overlays appairés.

Démarrage rapide

cp .env.example .env
pnpm install
pnpm dev

Option TikTok restreint (login requis):

  • TIKTOK_COOKIE peut contenir un header cookie TikTok (name=value; name2=value2) pour tenter l'extraction avec un compte autorisé.

Quotas stockage média

  • MEDIA_CACHE_MAX_TOTAL_MB=5120 (5 Go): limite totale du cache non persistant.
  • MEDIA_BOARD_MAX_TOTAL_MB=15360 (15 Go): limite par serveur Discord pour la meme board persistante.

API iOS (/ingest)

Créer d'abord un ingest client token dans /admin (section Create Ingest Client), puis appeler:

curl -X POST "$API_URL/ingest" \
  -H "Authorization: Bearer $INGEST_CLIENT_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://vm.tiktok.com/ZNRfPWMaF/",
    "text": "hello depuis iOS",
    "forceRefresh": true
  }'

Payload minimal:

  • au moins un de url, media, text
  • forceRefresh optionnel (true pour ignorer le cache média et forcer re-download/re-transcode)
  • guildId, authorName, authorImage sont liés au token ingest client et ne doivent pas être envoyés.

Normalisation du volume

La normalisation loudness est activée par défaut pendant la transcode:

  • MEDIA_AUDIO_NORMALIZE_ENABLED=true
  • MEDIA_AUDIO_LOUDNORM_I=-18
  • MEDIA_AUDIO_LOUDNORM_LRA=11
  • MEDIA_AUDIO_LOUDNORM_TP=-1.5

Endpoints publics

  • GET / -> statut service minimal
  • GET /health -> healthcheck
  • GET /admin?token=<ADMIN_UI_TOKEN> -> panel admin local (token requis)

Admin panel local (/admin)

  • Activer avec ADMIN_UI_TOKEN dans .env.
  • ADMIN_UI_LOCAL_ONLY=true (défaut): accès limité loopback (127.0.0.1 / ::1).
  • ADMIN_UI_LOCAL_ONLY=false: accès LAN autorisé (token toujours requis).
  • Le panel expose:
    • guilds connues + nom Discord (si disponible)
    • overlays connectés/hors ligne
    • usage cache global et meme board par guild
    • actions admin: réglages guild, stop playback, création/révocation clients ingest, révocation clients overlay, gestion pairing codes

Les erreurs HTTP sont volontairement normalisées (not_found, request_error, internal_error) sans stack trace exposée.

Docker Hub (GitHub Actions)

Le workflow /.github/workflows/docker.yml build et pousse l'image sur Docker Hub:

  • sur push vers main
  • sur tag v*
  • en exécution manuelle (workflow_dispatch)

Secrets GitHub requis:

  • DOCKERHUB_USERNAME
  • DOCKERHUB_TOKEN (token d'accès Docker Hub)

Image publiée:

  • ${DOCKERHUB_USERNAME}/livechat-bot:latest
  • ${DOCKERHUB_USERNAME}/livechat-bot:sha-<commit>

About

Backend Discord/API pour l'architecture LiveChat

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages