Cheese automatisch ein Foto aufnehmen und beenden lassen

Cheese automatisch ein Foto aufnehmen und beenden lassen

Ich verwende Cheese als meine Webcam-Software. Ich versuche, einen Weg zu finden, es zu haben:

  • Start
  • Klicken Sie auf ein Bild
  • Ausfahrt

wenn ein Skript ausgeführt wird. Das Skript sollte nicht nach Berechtigungen fragen und es sollte keine Unterbrechungen geben. Bisher

#!/bin/bash 
cheese

Ich konnte nur Schritt 1 ausführen. Wie mache ich die Schritte 2 und 3? Die Doc-Dateien erwähnen eine solche Option nicht und ich möchte den Quellcode nicht ändern. (Camorama stört mich auch nicht)

Antwort1

Voilà! Es folgen die Schritte 2 und 3:

Das funktioniert, obwohl es furchtbar zeitkritisch ist. Nehmen Sie die nötigen Anpassungen vor, und versuchen Sie, es ausführlich zu kommentieren, damit Sie sehen können, was vor sich geht.

Sie müssen installierenAbonnierendamit dies funktioniert, da wir Tastendrücke zum Aufnehmen des Bildes und zum Beenden simulieren (Paket 'Abonnieren')

Oh, und Sie müssen die 'Countdown'-Funktion in den Einstellungen, sonst wird das Programm wahrscheinlich per STRG-Q (Beenden) verlassen, bevor die Aufnahme tatsächlich gemacht wird.


#!/bin/bash
#
# L Nix <[email protected]>
# takeapic : take a photo with Cheese, using default settings, then exit
#
# start cheesing (2> because mine whines about cheesy stuff (ha!))
cheese 2>/dev/null &
# give WM some time to start up program (fails without this)
sleep 5
# set so we can determine if valid window(s) exist(s)
WINDOWIDS=""
# wait for up to 90 seconds (tweak this)
COUNTDOWN=90
while [ ${COUNTDOWN} -gt 0 ]; do
    WINDOWIDS=$(xdotool search --class "cheese" 2>/dev/null)
    if [ -n "${WINDOWIDS}" ]; then
        break
    fi
    sleep 1
    COUNTDOWN=$(( ${COUNTDOWN} - 1 ))
done
# did we get anything?
if [ -z "${WINDOWIDS}" ]; then
    echo "Cheese never started, something's wrong"
    exit 1
fi
# the shutter button is ALT-T
for WIDS in ${WINDOWIDS}; do
    # if you combine these like xdotool allows, it fails
    xdotool windowfocus ${WIDS} 2>/dev/null
    xdotool key alt+t 2>/dev/null
done
# pause a moment while taking photo
sleep 1
# now CTRL-Q out of the application
for WIDS in ${WINDOWIDS}; do
    xdotool windowfocus ${WIDS} 2>/dev/null
    xdotool key ctrl+q 2>/dev/null
done
#

verwandte Informationen