Auto-detection DSLR: bascule automatique quand branche/rebranche
- Verification toutes les 5s si un DSLR est disponible - Bascule auto de webcam/simulation vers DSLR - Reconnexion auto si le DSLR est deconnecte Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -13,7 +13,11 @@ from backend.config import (
|
||||
RACINE, DOSSIER_PHOTOS, DOSSIER_EXPORTS, DOSSIER_OVERLAYS, DOSSIER_FONDS, DOSSIER_ANIMATIONS,
|
||||
charger_config, sauvegarder_config, mettre_a_jour_config,
|
||||
)
|
||||
from backend.camera import camera
|
||||
from backend.camera import camera, GPHOTO2_DISPONIBLE
|
||||
try:
|
||||
import gphoto2 as gp
|
||||
except ImportError:
|
||||
gp = None
|
||||
from backend.gallery import lister_photos, compter_photos, supprimer_photo, vider_galerie
|
||||
from backend.effects import appliquer_filtre, appliquer_overlay, chroma_key, lister_overlays, lister_fonds, FILTRES
|
||||
from backend.collage import creer_strip, creer_collage, creer_impression_strip
|
||||
@@ -29,12 +33,35 @@ log = logging.getLogger("photobooth")
|
||||
clients_ws: list[WebSocket] = []
|
||||
|
||||
|
||||
async def surveiller_dslr():
|
||||
"""Verifie periodiquement si un DSLR est branche et bascule dessus."""
|
||||
while True:
|
||||
await asyncio.sleep(5)
|
||||
try:
|
||||
if camera.mode != "gphoto2" and GPHOTO2_DISPONIBLE:
|
||||
dslrs = gp.Camera.autodetect()
|
||||
if len(dslrs) > 0:
|
||||
log.info(f"DSLR detecte : {dslrs[0][0]}, bascule automatique")
|
||||
camera.connecter(source="gphoto2")
|
||||
elif camera.mode == "gphoto2":
|
||||
# Verifier que le DSLR repond encore
|
||||
try:
|
||||
camera.camera.get_summary()
|
||||
except Exception:
|
||||
log.warning("DSLR deconnecte, reconnexion...")
|
||||
camera.connecter()
|
||||
except Exception:
|
||||
pass
|
||||
|
||||
|
||||
@asynccontextmanager
|
||||
async def lifespan(app: FastAPI):
|
||||
"""Demarrage et arret de l'application."""
|
||||
log.info("Demarrage du photobooth")
|
||||
camera.connecter()
|
||||
task = asyncio.create_task(surveiller_dslr())
|
||||
yield
|
||||
task.cancel()
|
||||
log.info("Arret du photobooth")
|
||||
camera.deconnecter()
|
||||
|
||||
|
||||
Reference in New Issue
Block a user