Shell Frage - Aktuellen Sendernamen ermitteln

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

Shell Frage - Aktuellen Sendernamen ermitteln

Beitrag von Tommy »

Hi All,

Ich möchte mit

Code: Alles auswählen

wget -q http://127.0.0.1/control/zapto -O AKTSENDERID
wget -q http://127.0.0.1/control/channellist -O SENDERLISTE
SENDERID=`cat AKTSENDERID`
SENDERNAME=`grep SENDERID SENDERLISTE`
rm AKTSENDERID SENDERLISTE
echo $SENDERNAME

den aktuellen Sendernamen ermitteln. Nun gibt es aber in SENDERLISTE dubletten (vermutl durch Vorhanden sein einzelner Sender in mehreren Bouquets) die grep alle findet und in SENDERNAME schreibt. "grep -C 1" wird anscheinend nicht unterstützt. Für cat finde ich auch keinen Parameter der mir nur die erste Zeile einer Datei ausgibt. Sicher gibts ne einfache Lösung - ich komm blos nicht drauf :gruebel:

Ziel ist letztendlich nur den bereinigten Namen des aktuellen Senders zu bekommen - am besten mit Leerzeichen ="_" (13_TH_STREET) damit ich einen Verzeichnisnamen draus machen kann[/quote]
petb
Erleuchteter
Erleuchteter
Beiträge: 785
Registriert: Samstag 6. August 2005, 03:39

Beitrag von petb »

Hi,

wofür willst du denn einen Verzeichnisnamen aus dem aktuellen Sender machen ?

Tippe ich richtig, das du in der record.start das aufnahmeverzeichnis setzen willst oder.....?

Bye

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

Beitrag von Tommy »

ne - aber fast :lol:
Ich möchte in der recording.start die Timestamp und den aktuellen sender (+evtl. epg) sichern. Dann möchte ich in der recording.end den Sendernamen aufgreifen, das Verzeichnis (wenn nicht schon vorhanden) erstellen, anhand der Timestamp das gerade erstellte TS file finden und in das Senderverzeichnis verschieben. Mehr ist mit der shell glaube nicht möglich. Evtl könnte man noch gestückelte files zusammenfügen und mit den gesicherten epg infos den Dateinamen ändern.

Ist alles nur workaround bis da http://forum.tuxbox-cvs.sourceforge.net ... 9&start=27 mal jemand rangeht
---------------------------
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?
petb
Erleuchteter
Erleuchteter
Beiträge: 785
Registriert: Samstag 6. August 2005, 03:39

Beitrag von petb »

:D

dann haben wir zu 100% das gleiche Ziel.

Nur mein Workaround wollte ich bereits beim Programmieren des Timers ansetzen......
Ich wollte schauen das ich aus der timerd.conf die timer auslese, ändere und wieder schreibe, usw...
Und das Aufnahmeverzeichnis dabei so ändern das er das gleich ins richtige verzeichnis schreibt.....
Im Moment mach ich das von Hand in der timerd.conf.

Ich könnte mir vorstellen das deine Idee eventuell nicht klappt, weil ......
Du schaust auf sat1.....
die Box beginnt eine timergesteuerte Aufnahme auf pro sieben....
sie schaltet zwar um auf pro sieben,
aktualisiert aber den epg nicht....
zumindest bei mir bleibt im display und in der epg programminfo weiterhin sat1 stehen.....
:gruebel:

Cool das ich da einen Mitstreiter habe :P

Zu deinem grep problem, fällt mir nur head / tail ein, aber das gibts auf der Box nicht (kann auch sein das ich etwas verwechsel).
Kann man nicht dem vi per kommandozeile sagen er soll alle zeilen nach der ersten löschen so alla "dd 2-100" oder wie auch immer ..
Oder kann man nicht mir regular expressions was machen...
Gibts da nicht einen slash/stern/hochkommata Künstler der sich da besser auskennt als ich ?

Cool wäre es doch wenn der recod_dir string frei definierbar wäre.....
%s = sender
%d = Titel der Sendung, etc.
und man selbst definieren kann z.B. /mnt/filme/%s/%d.ts als kleines Beispiel.

Bye

PetB
robspr1
Einsteiger
Einsteiger
Beiträge: 203
Registriert: Mittwoch 27. April 2005, 09:37

Beitrag von robspr1 »

Code: Alles auswählen

read LINE </tmp/myfile
echo $LINE
gibt dir die erste Zeile der Datei /tmp/myfile aus.
Tommy
Tuxboxer
Tuxboxer
Beiträge: 4332
Registriert: Dienstag 7. Mai 2002, 17:04

Beitrag von Tommy »

das liegt vermutl daran, das der sectionsd bei Aufnahme gestopt wird. Mir gehts hauptsächlich erst mal darum, das die Aufnahme in den Senderordner verschoben wird. Der Sender ist ja bekannt. Ich habe auch schon mal überlegt in der recording.start den sectionsd nochmal kurz einzuschalten (habe dort eh ein sleep5 um der HD einen Vorsprung beim aufwecken zu geben). Ob 5 sekunden zum epg laden rechen weis ich nicht. Auch weis ich nicht ob der sectionsd wirklich bei einer aufnahme so störend ist?! Vieleicht kann man den ja auch anlassen. Dann hätte man auf jeden fall in der recording.end ein EPG vom sender. Schade das die EPGid nicht in der Timer.conf mitgespeichert wird - dann hätte man was um nach der Aufnahme im EPG zu kramen :gruebel:
---------------------------
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?
petb
Erleuchteter
Erleuchteter
Beiträge: 785
Registriert: Samstag 6. August 2005, 03:39

Beitrag von petb »

Hmmm,

was ist denn das hier

Code: Alles auswählen

EVENT_INFO_EPG_ID_1=563521184631526
ist das nicht der EpgId ?

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

Beitrag von Tommy »

robspr1 hat geschrieben:

Code: Alles auswählen

read LINE </tmp/myfile
echo $LINE
gibt dir die erste Zeile der Datei /tmp/myfile aus.
Das hört sich gut an - hoffentlich ist read in der busybox :gruebel: teste ich heute abend gleich mal
---------------------------
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?
petb
Erleuchteter
Erleuchteter
Beiträge: 785
Registriert: Samstag 6. August 2005, 03:39

Beitrag von petb »

Ja, read ist drinne hab nachgeschaut.
Tommy
Tuxboxer
Tuxboxer
Beiträge: 4332
Registriert: Dienstag 7. Mai 2002, 17:04

Beitrag von Tommy »

petb hat geschrieben:Hmmm,

was ist denn das hier

Code: Alles auswählen

EVENT_INFO_EPG_ID_1=563521184631526
ist das nicht der EpgId ?

Bye
PetB
mhhh ich dachte die EPGid ist 12-stellig - könnte aber sein. Kannst Du mal im browser testen:

Code: Alles auswählen

http://<dbox>/control/epg?eventid=<id aus der timer.conf>
wenn da ein EPG kommt wärs genau das ;-)
---------------------------
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?
Houdini
Developer
Beiträge: 2183
Registriert: Mittwoch 10. Dezember 2003, 07:59

Beitrag von Houdini »

EVENT_INFO_EPG_ID_1=563521184631526

ist das nicht der EpgId ?
genau

Code: Alles auswählen

563521184631526 => 0x2  0085  0008 8AE6
                   tsid onid  sid  eventid
Houdini
petb
Erleuchteter
Erleuchteter
Beiträge: 785
Registriert: Samstag 6. August 2005, 03:39

Beitrag von petb »

Code: Alles auswählen

http://dboxip/control/epg?eventid=563521184631526
sagt uns:

Code: Alles auswählen

Grease 2
Musical
Die T-Birds sind eine coole Gang, die außer Rock 'n' Roll nur noch eines im Kopf haben: die Pink Ladies. Die sind mindestens so cool wie die Jungs. Doch ihre Anführerin Stephanie (Michelle Pfeiffer) verliebt sich in einen geheimnisvollen Fremden. -  Nostalgischer Rückblick auf die 60er-Jahre.
USA 1981. 110 Min. Von Patricia Birch. Mit Maxwell Caulfield, Michelle Pfeiffer.
Tommy
Tuxboxer
Tuxboxer
Beiträge: 4332
Registriert: Dienstag 7. Mai 2002, 17:04

Beitrag von Tommy »

OK Also:

recording.start:
-Timestamp speichern
-Anhand der Timestamp aus der Timer.conf die EPGid holen + speichern
-[hoffen das EPG verfügbar] anhand der EPGid das EPG speichern (falls nicht Flag setzen
-Aktuellen Sender speichern

recording.end
- EPG falls Flag versuchen nochmal zu holen
- prüfen ob Senderordner vorhanden (wenn nicht anlegen)
- anhand der Timestamp die aktuelle Aufnahme finden und in den Senderordner verschieben
- evtl. dabei den Sendernamen aus dem Dateinamen entfernen und andere Dateinamenmodifikationen anhand des gespeicherten EPG durchführen
- den ganzen Müll (temp files) entfernen :lol:
---------------------------
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?
petb
Erleuchteter
Erleuchteter
Beiträge: 785
Registriert: Samstag 6. August 2005, 03:39

Beitrag von petb »

Tommy hat geschrieben:OK Also:

recording.start:
-Timestamp speichern
Kommt der timestamp aus dem System ?
Ist es sicher das der immer passt ?
Sekundenübergang ?
-Anhand der Timestamp aus der Timer.conf die EPGid holen + speichern
-[hoffen das EPG verfügbar] anhand der EPGid das EPG speichern (falls nicht Flag setzen
-Aktuellen Sender speichern

recording.end
- EPG falls Flag versuchen nochmal zu holen
sectionsd: läuft der hier schon wieder ?

- prüfen ob Senderordner vorhanden (wenn nicht anlegen)
- anhand der Timestamp die aktuelle Aufnahme finden und in den Senderordner verschieben
- evtl. dabei den Sendernamen aus dem Dateinamen entfernen und andere Dateinamenmodifikationen anhand des gespeicherten EPG durchführen
- den ganzen Müll (temp files) entfernen :lol:
Ich würd mich freuen wenns klappt ! :lol:

Äh, warum nehmen wir nicht einfach die daten aus dem XML File der Aufnahme ?

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

Beitrag von Tommy »

mach mal im telnet:

Code: Alles auswählen

date +%Y%m%d_%H%M 
und vergleiche mit nem TS Namen :o

die Aufnahmen starten IMO immer zur vollen Minute d.h. wir haben eine Minute Zeit den Timestamp zu sichern. Minutengenaue suche im Dateinamen sollte reichen.

ich weis nicht ob der sectionsd unbedingt laufen muß wenn man sich per wget das EPG holt oder ob der nhtpd das woanders herzaubert.
Ob in der recording.end der sectionsd schon wieder läuft weis ich nicht ->testen (abfrage einbauen wget http://dbox/control/zapto?statussectionsd
)
edit:
zum XML - wenn EPG nicht da = XML leer
außerdem ist es schwerer das XML zu parsen als die Zeilenweise Datei die über den nhtpd kommt
---------------------------
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?
Houdini
Developer
Beiträge: 2183
Registriert: Mittwoch 10. Dezember 2003, 07:59

Beitrag von Houdini »

ch weis nicht ob der sectionsd unbedingt laufen muß wenn man sich per wget das EPG holt oder ob der nhtpd das woanders herzaubert.
Wenn mich nicht alles täuscht wird beim sectionsd nur der scan prozess angehalten,
der Task der die EPG Infos liefert läuft weiter, die zu dem Zeitpunkt schon vorhandenen Infos/Events können immer abgeholt werden.
- was noch zu überprüfen ist -

Houdini
Frank0711
Interessierter
Interessierter
Beiträge: 75
Registriert: Samstag 8. Februar 2003, 09:57

Beitrag von Frank0711 »

Grade getestet:

Code: Alles auswählen


#!/bin/sh
wget -O /tmp/zapto -q "http://127.0.0.1/control/zapto"
wget -O /tmp/channellist -q http://127.0.0.1/control/channellist
zapto=$(cat /tmp/zapto)
channel=$(cat /tmp/channellist | grep $zapto | cut -d " " -f 2- | cut -d "
" -f1)
echo "$channel"

Der Zeilenumbruch bei
channel=$(cat /tmp/channellist | grep $zapto | cut -d " " -f 2- | cut -d "
" -f1)
ist beabsichtigt! Der letzte Cut teilt nach Zeilen und gibt dann nur die Erste aus.
petb
Erleuchteter
Erleuchteter
Beiträge: 785
Registriert: Samstag 6. August 2005, 03:39

Beitrag von petb »

Hmm,

dann passt aber folgendes nicht....
Wenn die programmierte Aufnahme beginnt, schalter die Box auf den Aufnahmekanal.

Wenn ich aber z.B.:mit dem ? schauen will was gerade läuft,
sehe ich die Infos vom Kanal der vor der Aufnahme lief.
Nicht die von dem Kanal den ich gerade sehe und von dem ich aufnehme.
An diese EPG-Info komme ich in diesem Beispiel nicht dran.

@Tommy
zum XML - wenn EPG nicht da = XML leer
außerdem ist es schwerer das XML zu parsen als die Zeilenweise Datei die über den nhtpd kommt
Ja, dann sollte in der timerd.conf nicht nur der Sendername sondern eben der EPG oder zumindest der Titel der Sendung bereits gespeichert werden.
Dann wäre es auch kein Problem wenn die Box kurzfristig umschaltet und keine neuen EPG Infos da sind.
Trotzdem kann die Box dann den Dateinamen mit EPG-Titel anlegen, da er ja in der timerd.conf vorhanden ist....

Bye
PetB