188 lines
6.8 KiB
Bash
188 lines
6.8 KiB
Bash
#!/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
|