first commit
This commit is contained in:
@@ -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
|
||||
Reference in New Issue
Block a user