Page 1 of 1

.

Posted: Wed 15 May 2013, 10:40
by simargl
.

Posted: Wed 15 May 2013, 11:24
by Karl Godt
probably try to use grep -m1 or grep | tail -n1 so if more than one line in /tmp/output it piks the first or the last , so if tail at the very end might be already get one single line after all the sed edits .

cat /tmp/output | grep is seen everywhere, but grep /tmp/output should do it also .

Posted: Wed 15 May 2013, 12:09
by simargl
.

Posted: Wed 15 May 2013, 12:15
by Karl Godt
while [ "$(pidof yad)" ]; do
Sometimes seems not to work as it could.
Probably missing a break, since the test for "$(pidof yad)" might only run once at while begin.
Probably needs additionally a
[ "$(pidof yad)" ] || break
inside it to stop the current loop. Otherwise you'll probably have multiple instances of the while loop running .
like

Code: Select all

while [ "$(pidof yad)" ]; do
  sleep 5s
  [ -f /tmp/output ] || break
  [ "$(pidof yad)" ] || break
  NEW_TITLE=$(grep 'StreamTitle' /tmp/output | tail -n1 | sed 's|ICY Info: StreamTitle=||g' | sed 's/;[^-]*$//' | sed s/"'"/" "/g)
  if [[ "$NEW_TITLE" != "$TITLE" ]]; then
    notify-send -i simple-radio "$action" "$NEW_TITLE"
    TITLE="$NEW_TITLE"
  fi
done

Posted: Wed 15 May 2013, 12:32
by simargl
.

Posted: Wed 15 May 2013, 14:48
by Karl Godt
No GUI freak here, and know nothing about yad.

You have yad GUI and yad --notification .

Probably this is confusing things , so running a new instance of the yad gui would prevent the loop from exiting/breaking.

Otherwise yad --notification might need killall -9 which almost every time succeeds .

You should remove the >/dev/null s to have a better view on things .

Re: lost inside while loop

Posted: Wed 15 May 2013, 15:47
by PANZERKOPF
simargl wrote: like variable $action
IIRC:
Loop runs as a separate process so all variables inside it are not visible by parent process.

Posted: Thu 16 May 2013, 05:30
by technosaurus
Please don't poll for file changes.

Code: Select all

touch /tmp/file #make sure it exists
inotifyd - /tmp/file:c |while read DUMMY; do
    echo actions to do when file is changed
done &
inotifyd will be dormant (using almost no resources) until awakened by an inotify event from the kernel (no polling) - you can get 500 events in 1 second or have the process running dormant for days and it would pop right up as soon as the file changes
Note: inotifyd can monitor stuff other than just changes (:c) including entire directories

Posted: Thu 16 May 2013, 07:45
by simargl
.