first commit
🚀 Deploy — JH Photomaton / 🔍 Vérification (push) Has been cancelled
🚀 Deploy — JH Photomaton / 🍓 Deploy sur le Pi (push) Has been cancelled

This commit is contained in:
2026-07-16 00:55:29 +02:00
commit 209f81aa3d
100 changed files with 17682 additions and 0 deletions
+187
View File
@@ -0,0 +1,187 @@
#!/bin/bash
# =============================================================================
# switch-quality.sh - Basculer la qualite d'image de photobooth-app
# =============================================================================
# Usage:
# bash switch-quality.sh high # Qualite haute (4608x3072, quality 100)
# bash switch-quality.sh low # Qualite basse (2304x1536, quality 90)
# bash switch-quality.sh status # Afficher la config actuelle
# =============================================================================
set -uo pipefail
API_URL="http://127.0.0.1:8083"
API_USER="admin"
API_PASS="PhotoBooth2026!"
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m'
# --- Obtenir le token ---
get_token() {
curl -s -X POST "${API_URL}/api/admin/auth/token" \
-H "Content-Type: application/x-www-form-urlencoded" \
-d "grant_type=password&username=${API_USER}&password=${API_PASS}" \
| python3 -c 'import sys,json;print(json.load(sys.stdin)["access_token"])'
}
# --- Lire la config actuelle ---
get_config() {
local token="$1"
curl -s "${API_URL}/api/admin/config/app" \
-H "Authorization: Bearer ${token}"
}
# --- Appliquer une config ---
set_config() {
local token="$1"
local config="$2"
curl -s -X PATCH "${API_URL}/api/admin/config/app" \
-H "Authorization: Bearer ${token}" \
-H "Content-Type: application/json" \
-d "${config}"
}
# --- Afficher le statut ---
show_status() {
local token
token=$(get_token)
local config
config=$(get_config "$token")
local capture_w capture_h preview_w preview_h full_still preview_still quality
capture_w=$(echo "$config" | python3 -c 'import sys,json;c=json.load(sys.stdin);print(c["backends"]["group_backends"][0]["backend_config"]["CAPTURE_CAM_RESOLUTION_WIDTH"])')
capture_h=$(echo "$config" | python3 -c 'import sys,json;c=json.load(sys.stdin);print(c["backends"]["group_backends"][0]["backend_config"]["CAPTURE_CAM_RESOLUTION_HEIGHT"])')
preview_w=$(echo "$config" | python3 -c 'import sys,json;c=json.load(sys.stdin);print(c["backends"]["group_backends"][0]["backend_config"]["PREVIEW_CAM_RESOLUTION_WIDTH"])')
preview_h=$(echo "$config" | python3 -c 'import sys,json;c=json.load(sys.stdin);print(c["backends"]["group_backends"][0]["backend_config"]["PREVIEW_CAM_RESOLUTION_HEIGHT"])')
full_still=$(echo "$config" | python3 -c 'import sys,json;c=json.load(sys.stdin);print(c["mediaprocessing"]["full_still_length"])')
preview_still=$(echo "$config" | python3 -c 'import sys,json;c=json.load(sys.stdin);print(c["mediaprocessing"]["preview_still_length"])')
quality=$(echo "$config" | python3 -c 'import sys,json;c=json.load(sys.stdin);print(c["backends"]["group_backends"][0]["backend_config"]["original_still_quality"])')
echo "=== Configuration actuelle ==="
echo " Capture: ${capture_w}x${capture_h}"
echo " Preview: ${preview_w}x${preview_h}"
echo " Full still: ${full_still}"
echo " Preview still: ${preview_still}"
echo " JPEG quality: ${quality}"
if [ "$capture_w" -ge 4000 ]; then
echo -e " Mode: ${GREEN}HAUTE QUALITE${NC}"
else
echo -e " Mode: ${YELLOW}BASSE QUALITE (economie RAM)${NC}"
fi
}
# --- Appliquer haute qualite ---
set_high() {
local token
token=$(get_token)
echo "Passage en HAUTE QUALITE..."
# Config backends (camera)
set_config "$token" '{
"backends": {
"group_backends": [{
"enabled": true,
"description": "pi camera module V3",
"backend_config": {
"orientation": "1: 0°",
"backend_type": "Picamera2",
"camera_num": 0,
"CAPTURE_CAM_RESOLUTION_WIDTH": 4608,
"CAPTURE_CAM_RESOLUTION_HEIGHT": 3072,
"PREVIEW_CAM_RESOLUTION_WIDTH": 2304,
"PREVIEW_CAM_RESOLUTION_HEIGHT": 1536,
"LIVEVIEW_RESOLUTION_WIDTH": 750,
"LIVEVIEW_RESOLUTION_HEIGHT": 500,
"framerate_still_mode": 20,
"framerate_video_mode": 25,
"frame_skip_count": 4,
"optimized_lowlight_short_exposure": false,
"videostream_quality": "MEDIUM",
"original_still_quality": 100
}
}]
},
"mediaprocessing": {
"full_still_length": 4608,
"preview_still_length": 2304,
"thumbnail_still_length": 960
}
}' > /dev/null
echo -e "${GREEN}HAUTE QUALITE activee${NC}"
echo " Capture: 4608x3072, Quality: 100"
echo " ATTENTION: consomme plus de RAM"
echo ""
echo "Redemarrage de photobooth-app necessaire :"
echo " systemctl --user restart photobooth-app"
}
# --- Appliquer basse qualite ---
set_low() {
local token
token=$(get_token)
echo "Passage en BASSE QUALITE (economie RAM)..."
set_config "$token" '{
"backends": {
"group_backends": [{
"enabled": true,
"description": "pi camera module V3",
"backend_config": {
"orientation": "1: 0°",
"backend_type": "Picamera2",
"camera_num": 0,
"CAPTURE_CAM_RESOLUTION_WIDTH": 2304,
"CAPTURE_CAM_RESOLUTION_HEIGHT": 1536,
"PREVIEW_CAM_RESOLUTION_WIDTH": 1152,
"PREVIEW_CAM_RESOLUTION_HEIGHT": 768,
"LIVEVIEW_RESOLUTION_WIDTH": 750,
"LIVEVIEW_RESOLUTION_HEIGHT": 500,
"framerate_still_mode": 20,
"framerate_video_mode": 25,
"frame_skip_count": 4,
"optimized_lowlight_short_exposure": false,
"videostream_quality": "MEDIUM",
"original_still_quality": 90
}
}]
},
"mediaprocessing": {
"full_still_length": 2304,
"preview_still_length": 1200,
"thumbnail_still_length": 480
}
}' > /dev/null
echo -e "${YELLOW}BASSE QUALITE activee${NC}"
echo " Capture: 2304x1536, Quality: 90"
echo " Economie RAM optimale"
echo ""
echo "Redemarrage de photobooth-app necessaire :"
echo " systemctl --user restart photobooth-app"
}
# --- Main ---
case "${1:-status}" in
high|haute|hq)
set_high
;;
low|basse|lq)
set_low
;;
status|info)
show_status
;;
*)
echo "Usage: $0 {high|low|status}"
echo " high - Haute qualite (4608x3072, quality 100)"
echo " low - Basse qualite (2304x1536, quality 90)"
echo " status - Afficher la configuration actuelle"
exit 1
;;
esac