Hi,
ich möchte über ein Shell script abfragen ob in vdr aktuell eine Aufnahme läuft oder nicht. Weiß wer wie ich das abfragen kann?
Hi,
ich möchte über ein Shell script abfragen ob in vdr aktuell eine Aufnahme läuft oder nicht. Weiß wer wie ich das abfragen kann?
Hi,
eine Variante wäre ein "Recording-Hook"-Skript => http://www.vdr-wiki.de/wiki/index.php/VDR_Optionen#record
#!/bin/bash
recording=0
configfile="/run/shm/vdr_recording.cnt"
if [ -r "$configfile" ]; then
source "$configfile"
fi
case "$1" in
before)
recording=$(( ${recording} + 1 ))
;;
after)
recording=$(( ${recording} - 1 ))
if [ ${recording} -lt 1 ]; then
recording=0
fi
;;
esac
echo "recording="${recording} > "$configfile"
Alles anzeigen
Ich nutze obige Variante um eine Aufnahme-LED per Shellscript anzusteuern ...
Du kannst auch über SVDRP mit LSTT die Timer auflisten lassen und in den Flags das tfRecording-Bit (0x0008) abfragen.
Die Flags sind die erste Zahl in den Timer-Daten, also in
250-2 1:3:MTWT---:2245:0045:5:5:Comedy~TV total:
z.B. die '1'.
Klaus
Das sagt doch aber nur aus, ob Timer gesetzt sind und nicht, ob gerade eine Aufnahme läuft?
Das sagt doch aber nur aus, ob Timer gesetzt sind und nicht, ob gerade eine Aufnahme läuft?
man 5 vdr:
TIMERS
The file timers.conf contains the timer setup. Each line contains one timer defini-
tion, with individual fields separated by ':' characters. Example:
1:10:-T-----:2058:2150:50:5:Quarks & Co:
The fields in a timer definition have the following meaning (from left to right):
Flags The individual bits in this field have the following meaning:
1 the timer is active (and will record if it hits)
2 this is an instant recording timer
4 this timer uses VPS
8 this timer is currently recording (may only be up-to-date with SVDRP)
Alles anzeigen
Das Format is das gleiche wie bei LSTT.
Klaus
Das Aufnahme-Flag ist aber u.U. nur über SVDR/LSTT aktuell.
Klaus
Ok, das kann sein, aber bisher hat es so gut geklappt. Beispiel aus einem alten Log:
Laufende Aufnahmen:
-rw-r--r-- 1 root root 0 29. Jan 20:08 /video/Once_Upon_A_Time_-_Es_war_einmal..#2E/Lacey_und_die_Erinnerung_an_Belle/2014-01-29.20.08.73-0.rec/.rec
-rw-r--r-- 1 root root 0 29. Jan 20:08 /video/Rizzoli_&_Isles/Enthüllungen/2014-01-29.20.08.62-0.rec/.rec
-rw-r--r-- 1 root root 0 29. Jan 19:57 /video/Star_Trek_-_Enterprise/Die_Xindi/2014-01-29.19.05.74-0.rec/.rec
-rw-r--r-- 1 root root 0 29. Jan 20:13 /video/Zapping/Zapping/2014-01-29.20.09.1-0.rec/.rec
Laufende Timer:
9:S19.2E-1-1041-11931:2014-01-29:2008:2120:50:99:Once Upon A Time - Es war einmal...~Lacey und die Erinnerung an Belle:<epgsearch><channel>73 - SUPER RTL HD</channel><searchtimer>Once Upon A Time</searchtimer><start>1391022480</start><stop>1391026800</stop><s-id>271</s-id><eventid>24284</eventid></epgsearch>
9:S19.2E-133-6-131:2014-01-29:2009:2015:29:99:Zapping~Zapping:<epgsearch><channel>1 - CinemaHD</channel><searchtimer>Zapping</searchtimer><start>1391022540</start><stop>1391022900</stop><s-id>221</s-id><eventid>28523</eventid></epgsearch>
9:S19.2E-1-1057-61201:2014-01-29:2008:2125:50:99:Rizzoli & Isles~Enthüllungen:<epgsearch><channel>62 - VOX HD</channel><searchtimer>Rizzoli & Isles</searchtimer><start>1391022480</start><stop>1391027100</stop><s-id>246</s-id><eventid>24996</eventid></epgsearch>
9:S19.2E-1-1109-5401:2014-01-29:1905:2023:50:99:Star Trek - Enterprise~Die Xindi:<epgsearch><channel>74 - TELE 5 HD</channel><searchtimer>Star Trek Enterprise </searchtimer><start>1391018700</start><stop>1391023380</stop><s-id>349</s-id><eventid>31219</eventid></epgsearch>
Alles anzeigen
Der zweite Teil ist die Abfrage mit grep
man 5 vdr:CodeAlles anzeigenTIMERS The file timers.conf contains the timer setup. Each line contains one timer defini- tion, with individual fields separated by ':' characters. Example: 1:10:-T-----:2058:2150:50:5:Quarks & Co: The fields in a timer definition have the following meaning (from left to right): Flags The individual bits in this field have the following meaning: 1 the timer is active (and will record if it hits) 2 this is an instant recording timer 4 this timer uses VPS 8 this timer is currently recording (may only be up-to-date with SVDRP)
Das Format is das gleiche wie bei LSTT.
Klaus
OK, THX.
So quick'n'dirty, müsste es so funktionieren.
Das Script scheint super zu funktionieren! Vielen Dank!
Weißt du auf die schnelle wie ich das Script anpassen muss, dass ich noch die Titel der Aufnahmen zurückgemeldet bekomme?
Woher bekomme ich den svdrpsend.pl für meinen Rechner, so das ich vdr über das Netzwerk auslesen kann?
...
Woher bekomme ich den svdrpsend.pl für meinen Rechner, so das ich vdr über das Netzwerk auslesen kann?
Wird mit jeder neuen VDR Version direkt mitgeliefert. (Sourcen)
[,,,] Weißt du auf die schnelle wie ich das Script anpassen muss, dass ich noch die Titel der Aufnahmen zurückgemeldet bekomme? ...
Es geht sogar noch viel einfacher;
#!/bin/bash
SVDRP="$(which svdrpsend)"
REC_LIST="$($SVDRP LSTT |grep ^250 |cut -c 7- |egrep "^[8-9]|^[1-9][0-9]" |cut -d ":" -f 8)"
COUNT="$($SVDRP LSTT |grep ^250 |cut -c 7- |egrep "^[8-9]|^[1-9][0-9]" |cut -d ":" -f 8 |wc -l)"
if [ $COUNT -gt 0 ] ; then
echo ""
echo "Es laufen im gerade $COUNT Aufnahmen"
echo ""
echo "Aufgenommen wird:"
echo "$REC_LIST"
echo ""
else
echo "Es laufen im gerade keine Aufnahmen"
fi
Alles anzeigen
Sieht dann z.B. so aus:
So sieht die Ausgabe schöner aus und ist grammatikalisch korrekt:
!/bin/bash
SVDRP="$(which svdrpsend)"
REC_LIST="$($SVDRP LSTT |grep ^250 |cut -c 7- |egrep "^[8-9]|^[1-9][0-9]" |cut -d ":" -f 8)"
COUNT="$($SVDRP LSTT |grep ^250 |cut -c 7- |egrep "^[8-9]|^[1-9][0-9]" |cut -d ":" -f 8 |wc -l)"
if [ $COUNT -gt 0 ] ; then
echo ""
if [ $COUNT -eq 1 ] ; then
echo "Es läuft gerade $COUNT Aufnahme"
else
echo "Es laufen gerade $COUNT Aufnahmen"
fi
echo ""
echo "Aufgenommen wird:"
echo "$REC_LIST"
echo ""
else
echo "Es laufen im gerade keine Aufnahmen"
fi
Alles anzeigen
vdr01_64 ~ # /rec.sh
Es laufen im gerade 2 Aufnahmen
Aufgenommen wird:
@Storage Wars - Die Geschäftemacher Machtwechsel
@Der Clan der Erdmännchen Dokumentation (GB 2010)
vdr01_64 ~ #
Alles anzeigen
vdr01_64 ~ # /rec.sh
Es läuft im gerade 1 Aufnahme
Aufgenommen wird:
@Der Clan der Erdmännchen Dokumentation (GB 2010)
vdr01_64 ~ #
Alles anzeigen
3PO
Vielen Dank für dein Script.
Leider funktioniert das hier nicht. Ich hatte Galileo direkt aufgenommen. Eine Idee warum es hier nicht will?
./vdr-recordings.sh
++ which svdrpsend
+ SVDRP=/usr/local/bin/svdrpsend
++ cut -d : -f 8
++ egrep '^[8-9]|^[1-9][0-9]'
++ cut -c 7-
++ grep '^250'
++ /usr/local/bin/svdrpsend LSTT
+ REC_LIST=
++ /usr/local/bin/svdrpsend LSTT
++ cut -d : -f 8
++ egrep '^[8-9]|^[1-9][0-9]'
++ wc -l
++ cut -c 7-
++ grep '^250'
+ COUNT=0
+ '[' 0 -gt 0 ']'
+ echo 'Es laufen gerade keine Aufnahmen'
Es laufen gerade keine Aufnahmen
Alles anzeigen
svdrpsend lstt
220 vdr SVDRP VideoDiskRecorder 2.1.5; Sat Mar 1 19:53:34 2014; UTF-8
250-1 1:28:2014-03-11:2325:0105:50:99:Mankells Wallander~Mankells Wallander - Das Schmetterling-Tattoo~2014.03.11-23|30-Di:<epgsearch><channel>28 - hr-fernsehen HD</channel><searchtimer>Mankells</searchtimer><start>1394576700</start><stop>1394582700</stop><s-id>141</s-id><eventid>39138</eventid></epgsearch>
250-2 1:2:2014-03-07:2225:2310:50:99:heute-show~Nachrichtensatire mit Oliver Welke:<epgsearch><channel>2 - ZDF HD</channel><searchtimer>heute-show</searchtimer><start>1394227500</start><stop>1394230200</stop><s-id>71</s-id><eventid>21460</eventid></epgsearch>
...
250 25 11:7:2014-03-01:1950:2250:50:99:@Galileo:
221 vdr closing connection
Hast ne Mail. Das sind alles autotimer von dem epgsearch Plugin.
Vielen Dank.
Ist angekommen.
Allerdings ist mit noch nicht klar, wo der Interschied zwischen:
250-1 ,,,
250-2 ...
und
250 1 ,,,
250 2 ...
ist??
Ein Minus zeigt eigentlich an, dass noch Zeilen kommen. Nur in der letzten Zeile ist keines.
Die Liste der Timer lassen sich natürlich auch über dbus2vdr abrufen. Das lässt sich über Python recht elegant ansprechen und man muss nicht so viel und komisch greppen.
https://github.com/flensrocker…r/blob/master/README#L380
dbus2vdr ist bei yavdr ja per default dabei...
Lars
Das passt jetzt ganz, ich hab aber gerade kein anderes Beispiel zur Hand.
https://github.com/flensrocker…master/bin/dbus-client.py
Lars
Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!