forked from Shinonome/dots-hyprland
fix(musicRecognition): restore 2s interval and fix songrec process leak
This commit is contained in:
@@ -1,8 +1,9 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
INTERVAL=10
|
INTERVAL=2
|
||||||
TOTAL_DURATION=30
|
TOTAL_DURATION=30
|
||||||
SOURCE_TYPE="monitor" # monitor | input
|
SOURCE_TYPE="monitor" # monitor | input
|
||||||
|
FIFO=$(mktemp -u /tmp/songrec_out_XXXXXX)
|
||||||
|
|
||||||
while getopts "i:t:s:" opt; do
|
while getopts "i:t:s:" opt; do
|
||||||
case $opt in
|
case $opt in
|
||||||
@@ -30,19 +31,25 @@ if [ -z "$AUDIO_DEVICE" ] || ! pactl list short sources | grep -q "$AUDIO_DEVICE
|
|||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
mkfifo "$FIFO"
|
||||||
|
|
||||||
cleanup() {
|
cleanup() {
|
||||||
kill "$SONGREC_PID" 2>/dev/null || true
|
kill "$SONGREC_PID" 2>/dev/null || true
|
||||||
|
wait "$SONGREC_PID" 2>/dev/null
|
||||||
|
rm -f "$FIFO"
|
||||||
}
|
}
|
||||||
trap cleanup EXIT
|
trap cleanup EXIT
|
||||||
|
|
||||||
songrec listen --audio-device "$AUDIO_DEVICE" --request-interval "$INTERVAL" --json --disable-mpris | while IFS= read -r line; do
|
songrec listen --audio-device "$AUDIO_DEVICE" --request-interval "$INTERVAL" --json --disable-mpris > "$FIFO" &
|
||||||
if echo "$line" | grep -q '"matches": \['; then
|
|
||||||
echo "$line"
|
|
||||||
kill "$SONGREC_PID" 2>/dev/null || true
|
|
||||||
exit 0
|
|
||||||
fi
|
|
||||||
done &
|
|
||||||
SONGREC_PID=$!
|
SONGREC_PID=$!
|
||||||
|
|
||||||
sleep "$TOTAL_DURATION"
|
( sleep "$TOTAL_DURATION" && kill "$SONGREC_PID" 2>/dev/null ) &
|
||||||
|
|
||||||
|
while IFS= read -r line; do
|
||||||
|
if echo "$line" | grep -q '"matches": \['; then
|
||||||
|
echo "$line"
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
done < "$FIFO"
|
||||||
|
|
||||||
exit 0
|
exit 0
|
||||||
|
|||||||
Reference in New Issue
Block a user