Plugin Shellscript für Aufnahmestatus für WL-HDD

Network Attached Storage
alux
Interessierter
Interessierter
Beiträge: 27
Registriert: Donnerstag 19. Februar 2004, 22:42

Plugin Shellscript für Aufnahmestatus für WL-HDD

Beitrag von alux »

Hallo,

ich habe mir ein Shellscript für den Aufnahmestatus in Verbindung
mit meiner WL-HDD (sicher auch für andere verwendbar) gechrieben und als Plugin eingebunden.
(dbox2 mit yadi neutrino)

Folgende Anzeige (erlischt nach paar Sekunden wieder) erscheint nach Ausführung über die Fernbedienung: (z.B.)

TS Aufnahme:
Sender: ProSieben
Sendung: TV Total
Status: gestartet
Size: 855 MB
Diskfree: 45640 MB

hier das Shellscript:

***************************

#!/bin/sh

cd /var/plugins
wget -q http://192.168.0.100/control/setmode?status -O zzz
s=`cat zzz | dos2unix`
if [ $s = on ]
then
status=`echo gestartet`
else
text=`echo Keine%20TS%20Aufnahme%20aktiv%20!`
wget -q http://192.168.0.100/control/message?popup=$text -O yyy
rm -f yyy zzz
exit 0
fi
wget -q http://192.168.0.100/control/zapto -O yyy
sender=`cat yyy`
wget -q http://192.168.0.100/control/epg -O zzz
grep $sender zzz > yyy
vi yyy << EOF >/dev/null
:2,\$d
:w
:q
EOF
rm -f sendung
rm -f anstalt
rm -f program
wget -q http://192.168.0.100/control/channellist -O zzz
grep $sender zzz > xxx
vi xxx << EOF >/dev/null
:2,\$d
:w
:q
EOF
z=0
for i in `cat xxx`
do
z=`expr $z + 1`
if [ $z = 1 ]
then
:
else
echo "${i}%20\c" >> anstalt
echo "${i}_\c" >> sendung
fi
done
z=0
for i in `cat yyy`
do
z=`expr $z + 1`
if [ $z = 1 ] || [ $z = 2 ]
then
:
else
echo "${i}%20\c" >> program
echo "${i}_\c" >> sendung
fi
done
vi sendung << EOF >/dev/null
:s/-/_/g
:w
:q
EOF
ls -s /mnt/filme/aufnahme/*.ts | grep `cat sendung` >sss
size=0
for i in `cat sss`
do
size=`echo $i`
break
done
aaa=`cat anstalt`
ppp=`cat program`
size=`expr $size / 2048`
df | grep "/mnt/filme" > ggg
asize=0
z=0
for i in `cat ggg`
do
z=`expr $z + 1`
if [ $z = 4 ]
then
asize=`echo $i`
break
fi
done
asize=`expr $asize / 1024`
echo $asize
text=`echo TS%20Aufnahme:%0aSender:%20$aaa%0aSendung:%20$ppp%0aStatus:%20$status%0aSize:%20$size%20MB%0aDiskfree:%20$asize%20MB`
wget -q http://192.168.0.100/control/message?popup=$text -O yyy
rm -f yyy xxx zzz program anstalt
rm -f sss sendung ggg

****************************************

Ich hoffe es kann jemmand gebrauchen

Gruß
alux
petgun
Tuxboxer
Tuxboxer
Beiträge: 5001
Registriert: Montag 11. November 2002, 15:26

Beitrag von petgun »

Hi,
superklasse! Kann man fuer die DboxIP/Aufnahmeverzeichnis noch eine Variable definieren und das Skript dementsprechend aendern? Dann muesste man nur an einer Stelle editieren...

vielen Dank,
peter
alux
Interessierter
Interessierter
Beiträge: 27
Registriert: Donnerstag 19. Februar 2004, 22:42

Beitrag von alux »

Hallo,

durch die Anregung von petgun hier noch ein universellers
Shellscript mit folgenden Variablen, die Ihr für eure Belange
anpassen müßt:

z.B.:

IP=192.168.0.100
TSPFAD=/mnt/filme/aufnahme (dort stehen ts Dateien)
MOUNTPFAD=/mnt/filme

hier nun das neue Scipt:

***********************************************

#!/bin/sh

# Bitte hier für Eure Belange anpassen

IP=192.168.0.100
TSPFAD=/mnt/filme/aufnahme
MOUNTPFAD=/mnt/filme

cd /var/plugins
wget -q http://$IP/control/setmode?status -O zzz
s=`cat zzz | dos2unix`
if [ $s = on ]
then
status=`echo gestartet`
else
text=`echo Keine%20TS%20Aufnahme%20aktiv%20!`
wget -q http://$IP/control/message?popup=$text -O yyy
rm -f yyy zzz
exit 0
fi
wget -q http://$IP/control/zapto -O yyy
sender=`cat yyy`
wget -q http://$IP/control/epg -O zzz
grep $sender zzz > yyy
vi yyy << EOF >/dev/null
:2,\$d
:w
:q
EOF
rm -f sendung
rm -f anstalt
rm -f program
wget -q http://$IP/control/channellist -O zzz
grep $sender zzz > xxx
vi xxx << EOF >/dev/null
:2,\$d
:w
:q
EOF
z=0
for i in `cat xxx`
do
z=`expr $z + 1`
if [ $z = 1 ]
then
:
else
echo "${i}%20\c" >> anstalt
echo "${i}_\c" >> sendung
fi
done
z=0
for i in `cat yyy`
do
z=`expr $z + 1`
if [ $z = 1 ] || [ $z = 2 ]
then
:
else
echo "${i}%20\c" >> program
echo "${i}_\c" >> sendung
fi
done
vi sendung << EOF >/dev/null
:s/-/_/g
:w
:q
EOF
ls -s $TSPFAD/*.ts | grep `cat sendung` >sss
size=0
for i in `cat sss`
do
size=`echo $i`
break
done
aaa=`cat anstalt`
ppp=`cat program`
size=`expr $size / 2048`
df | grep $MOUNTPFAD > ggg
asize=0
z=0
for i in `cat ggg`
do
z=`expr $z + 1`
if [ $z = 4 ]
then
asize=`echo $i`
break
fi
done
asize=`expr $asize / 1024`
echo $asize
text=`echo TS%20Aufnahme:%0aSender:%20$aaa%0aSendung:%20$ppp%0aStatus:%20$status%0aSize:%20$size%20MB%0aSpeicherplatz:%20$asize%20MB`
wget -q http://$IP/control/message?popup=$text -O yyy
rm -f yyy xxx zzz program anstalt
rm -f sss sendung ggg

***********************************************

Kann es jetzt leider nicht testen, aber es sollte so anwendbar sein.

Gruß
alux
Tommy
Tuxboxer
Tuxboxer
Beiträge: 4332
Registriert: Dienstag 7. Mai 2002, 17:04

Beitrag von Tommy »

... wie binde ich das nun ein? Einfach skript.sh in /plugins speichern?
---------------------------
Alle weiteren Infos findest Du im WIKI
Bitte vor dem posten Boardregeln lesen und verstehen!
Wie erstelle ich ein Bootlog? Wo finde ich die FAQ?
Tommy
Tuxboxer
Tuxboxer
Beiträge: 4332
Registriert: Dienstag 7. Mai 2002, 17:04

Beitrag von Tommy »

---------------------------
Alle weiteren Infos findest Du im WIKI
Bitte vor dem posten Boardregeln lesen und verstehen!
Wie erstelle ich ein Bootlog? Wo finde ich die FAQ?
Tommy
Tuxboxer
Tuxboxer
Beiträge: 4332
Registriert: Dienstag 7. Mai 2002, 17:04

Beitrag von Tommy »

@alux:
Ich hoffe es kann jemmand gebrauchen
Vllt baust Du es hier mit ein?
http://wiki.tuxbox-cvs.sourceforge.net/ ... ahme_check
---------------------------
Alle weiteren Infos findest Du im WIKI
Bitte vor dem posten Boardregeln lesen und verstehen!
Wie erstelle ich ein Bootlog? Wo finde ich die FAQ?
Tommy
Tuxboxer
Tuxboxer
Beiträge: 4332
Registriert: Dienstag 7. Mai 2002, 17:04

Beitrag von Tommy »

@alux:

habe das skript gestern getestet (Version 2 mit Variablen). Das einzige was korrekt funktioniert ist die Anzeige das keine Aufnahme läuft.
Wenn eine Aufnahme läuft sieht es so aus als ob das skript eine ganze Weile (3-5sek) "rödelt" und dann für nicht sichtbare millisekunden etwas versucht einzublenden (kurzes Flackern) Vllt kannst Du die Version mit den Variablen nochmal testen.

Was ist der Unterschied zwischen MOUNTPFAD und TSPFAD. Ich habe auf meinem Eisfair die Freigabe /public/stream die unter /mnt/movie auf der Box gemountet ist. Was trage ich nun in den Variablen ein? Mit oder ohne slash vorn und hinten?
---------------------------
Alle weiteren Infos findest Du im WIKI
Bitte vor dem posten Boardregeln lesen und verstehen!
Wie erstelle ich ein Bootlog? Wo finde ich die FAQ?
alux
Interessierter
Interessierter
Beiträge: 27
Registriert: Donnerstag 19. Februar 2004, 22:42

Beitrag von alux »

Hallo,

ich habe das Tool wahrscheinlich zu schnell reingestellt. Die Umlaut
Problematik habe ich noch in Arbeit. Die aufgenommenen ts Files
sind ohne Umlaute (mit Unterstrich) und deshalb unproblematisch.
Die Sendungsnamen beinhalten aber Umlaute und Sonderzeichen,
welche die Probleme machen. In Abhängigkeit von der Einstellung ISO oder UTF-8 im Neutrino (zumindest bei yadi) muß ich das Program noch austesten. Das Shellskript ist außerdem nicht so fix (etwa 30 Sekunden bis zur Anzeige), ein fertiges C-Programm wäre da schneller.

Wegen der Umlaute und Sonderzeichen verklemmt sich das Skript
in der jetzigen Version oder zeigt falsche Werte an.
(ich vergleiche Aufnahmefilenamen mit Sendungsnamen und muß
den Sendungsnamen erst wie den Aufnahmefilenamen abbilden)


Eine Aufnahme, wo der Sendungsname keine Umlaute oder
Sonderzeichen (. : ....) enthät, sollte aber auch mit der jetzigen
Version schon gehen.

MOUNTPFAD ist der Pfad der gemounteten Ethernet-HD (z.B.: wl-hdd)
auf der dbox.

TSPFAD ist der volle Pfad von der dbox aus, wo die ts Files zu
finden sind. (d.h. wenn du von der dbox aus ein ls auf den TSPFAD
machst muß du die aufgenommenen ts Files sehen)

Sorry,
wenn ich eine Umlaut taugliche stabile Version habe setze ich sie
wieder hier ins Forum. ( die 30 Sekunden bis zur Anzeige werden
aber bleiben, wegen der Shellprogrammierung)


alux
Tommy
Tuxboxer
Tuxboxer
Beiträge: 4332
Registriert: Dienstag 7. Mai 2002, 17:04

Beitrag von Tommy »

Das ist doch ein Wort :lol: - Der Platz im WIKI ist ja schon reserviert

sag mal in Zeile 8 status=`echo gestartet` muß da nicht "text=" statt status rein?
---------------------------
Alle weiteren Infos findest Du im WIKI
Bitte vor dem posten Boardregeln lesen und verstehen!
Wie erstelle ich ein Bootlog? Wo finde ich die FAQ?
Tommy
Tuxboxer
Tuxboxer
Beiträge: 4332
Registriert: Dienstag 7. Mai 2002, 17:04

Beitrag von Tommy »

@alux:

ich weis ja nicht ob Du da noch dran bist aber wäre es nicht einfacher statt den Sendungsnamen nachzubauen die Timestamp nachzubauen und aus den TS files die passende Zeitangabe zu picken?

Code: Alles auswählen

date +%Y%m%d_%H%M
das datum s.o. in der recording.start erzeugen und in der recording.end mit den TS files vergleichen. Schon hast Du das gerade angelegte file. Der Timestamp ist auf jeden Fall immer im Dateinamen enthalten. Ich versuche auf die Art gerade Senderordner zu erstellen und nach der Aufnahme die TS Files dorthin zu verklappen - der Übersicht halber
---------------------------
Alle weiteren Infos findest Du im WIKI
Bitte vor dem posten Boardregeln lesen und verstehen!
Wie erstelle ich ein Bootlog? Wo finde ich die FAQ?
tha_haze
Einsteiger
Einsteiger
Beiträge: 249
Registriert: Samstag 8. Mai 2004, 20:14

Beitrag von tha_haze »

Wäre es nicht leichter statt z.B.

Code: Alles auswählen

wget -q http://$IP/control/zapto -O yyy 
sender=`cat yyy`
folgendes zu schreiben

Code: Alles auswählen

sender = `wget -q http://$IP/control/zapto -O -`
Man beachte das - hinter dem -O welches wget nach stdout ausgeben lässt.