ds10
Anmeldungsdatum: 20. September 2007
Beiträge: Zähle...
|
|
Heinrich_Schwietering
Wikiteam
(Themenstarter)
Anmeldungsdatum: 12. November 2005
Beiträge: 11290
Wohnort: Bremen
|
ds10 schrieb: Das Aufnehmen würde ich schon mit MPlayer festlegen, dazu kann man im deb-Paket die entsprechenden Abhängigkeiten unterbringen. Um das deb-Paket würde ich mich schon kümmern. Andere Distributionen kann man immer noch unterstützen, wenn es erstmal unter Ubuntu anständig läuft. (Auch beim TV-Browser-Installationspaket unterstützen wir zur Zeit nur deb, weil sich das so einfach per Ant-Skript erstellen lässt.)
Ant-Skript? Na, muss ich wohl mal forschen... Aber ok, eins nach dem anderen... Ich würde die Variante mit den Bash-Skripten bevorzugen, das ist im Normalfall auf allen System schon vorhanden.
Einverstanden, ist sicher einfacher Idee ist die Skripte nach /usr/share/tvbrecording zu installieren, dann kann man auch die Pfade in den Skripten entsprechend setzen, da sie dann auf allen Systemen gleich sind und ein Benutzer muss dort nichts mehr anpassen.
Ist das der Pfad, wo auch die Einstellungen für das Aufnahme-Plugin abgespeichert werden? Das wäre für das Paket meine nächste Frage gewesen: Wo speichert TV-Browser die Geräteeinstellungen? Problem ist nur das erste Anlegen der crontab für den entsprechenden Benutzer, aber vielleicht fällt dir noch was ein, wie das in den Skripten selbst gemacht werden kann.
Ja, dass das ein Problem sein kann hab ich auch erst gemerkt, als ich das ganze auf 'ner neuen Installation ausprobiert hab... Dein Deb werd' ich gleich mal runterladen und "auseinandernehmen" 😉 so long hank
|
ds10
Anmeldungsdatum: 20. September 2007
Beiträge: 99
|
Heinrich Schwietering schrieb: ds10 schrieb: Idee ist die Skripte nach /usr/share/tvbrecording zu installieren, dann kann man auch die Pfade in den Skripten entsprechend setzen, da sie dann auf allen Systemen gleich sind und ein Benutzer muss dort nichts mehr anpassen.
Ist das der Pfad, wo auch die Einstellungen für das Aufnahme-Plugin abgespeichert werden? Das wäre für das Paket meine nächste Frage gewesen: Wo speichert TV-Browser die Geräteeinstellungen?
Nein, das ist ein willkürlich festgelegter Verzeichnisname für die Aufnahme-Skripte. Die Einstellungen der Aufnahmesteuerung liegen in: ~\.tvbrowser\VERSION\CaptureDevices Das wird vom deb-Paket auch nicht berührt, dafür ist die MPlayer-recordings.tcf gedacht, da geht man einfach in die Aufnahmesteuerung und klickt auf Gerät importieren, wählt die tcf-Datei aus und hat danach das konfigurierte Gerät in der Liste (bis auf die Sendereinstellung). An den Einstellungsdateien kann man nicht direkt rumspielen, die sind im Dateiformat in dem TV-Browser das abspeichert und das ist nicht ganz so simpel 😉, weil da auch Objekte direkt gespeichert werden.
|
Heinrich_Schwietering
Wikiteam
(Themenstarter)
Anmeldungsdatum: 12. November 2005
Beiträge: 11290
Wohnort: Bremen
|
Hi! Funktioniert so weit gut! 👍 Könnte man die Gerätedatei nicht gleich mit in das .deb stecken, und an den benötigten Ort platzieren lassen? Oder muss das Importieren erst via Einstellung des Aufnahme-Plugins erfolgen? Ah, sehe gerade deine Antwort; das Gerät muss also grundsätzlich erst mal importiert werden. Trotzdem könnte es doch mit in das Paket, und in den Ordner mit den Skripten, oder? Wg. der crontab-Datei des Users muss ich noch mal etwas ausprobieren. Eigentlich sollte es sich so lösen lassen, dass das Skript vor der Erstellung des cron-jobs erstmal abtestet, ob die Datei existiert, und wenn nicht eine ensprechende - mit Dummy-Eintrag für eine Aufnahme"gestern", was auch immer - erstellt. Das perl-Skript scheint so etwas zu können. Jedenfalls hatte ich, als ich auf Karmic das erste mal versucht hab, das bash-Skript zu verwenden, erstmal eine Fehlermeldung, eben weil es keine crontab-Datei für mich gab. Die perl-Version hingegen funktionierte, und nachdem die Datei dann da war, ging dann natürlich auch die bash-Version. Eine Sache ist mir noch aufgefallen, müsste wenn die Skripte so im .deb landen, noch als Abhängigkeit mit aufgenommen werden: Für "Time-shift" hab' ich im Skript MPlayer als "Aufnahme-Gerät" und GNOME-Mplayer als "Wiedergabe-Gerät" eingesetzt. Das deshalb, weil das TVAufnahme-Skript beim Erreichen der Endzeit schlicht alle MPlayer abwürgt, also auch einen, der da eventuell gerade wiedergeben würde. GNOME-MPlayer lässt sich davon (im Gegensatz zu GMplayer oder SMplayer) nicht beeinflussen, so jedenfalls meine Erfahrungen... so long hank
|
ds10
Anmeldungsdatum: 20. September 2007
Beiträge: 99
|
Heinrich Schwietering schrieb: Könnte man die Gerätedatei nicht gleich mit in das .deb stecken, und an den benötigten Ort platzieren lassen? Oder muss das Importieren erst via Einstellung des Aufnahme-Plugins erfolgen? Ah, sehe gerade deine Antwort; das Gerät muss also grundsätzlich erst mal importiert werden. Trotzdem könnte es doch mit in das Paket, und in den Ordner mit den Skripten, oder?
Hielte ich für ungünstig, da man dann als Benutzer erst wieder in das Verzeichnis /usr/share/tvbrecordingscripts navigieren müsste um es zu importieren, da man zu Beginn des Imports im Benutzerverzeichnis ist. Wenn man im Artikel sieht, dass man zwei Dateien herunterladen muss, dann weiß man noch genau wo man die tcf-Datei abgespeichert hat und findet die sicher recht leicht, weil das irgendwo im Benutzerverzeichnis sein dürfte. Prinzipiell wäre es natürlich möglich die tcf-Datei auch im Paket mit zu liefern, aus Benutzersicht würde das aber gegen meine Faulheit sprechen. 😉 Vielleicht bauen wir ja auch irgendwann mal ein Internet-Import in die Aufnahmesteuerung ein, das würde das Handling für den Benutzer noch mehr vereinfachen, aber allzu bald wird das sicher nicht passieren.
Eine Sache ist mir noch aufgefallen, müsste wenn die Skripte so im .deb landen, noch als Abhängigkeit mit aufgenommen werden: Für "Time-shift" hab' ich im Skript MPlayer als "Aufnahme-Gerät" und GNOME-Mplayer als "Wiedergabe-Gerät" eingesetzt. Das deshalb, weil das TVAufnahme-Skript beim Erreichen der Endzeit schlicht alle MPlayer abwürgt, also auch einen, der da eventuell gerade wiedergeben würde. GNOME-MPlayer lässt sich davon (im Gegensatz zu GMplayer oder SMplayer) nicht beeinflussen, so jedenfalls meine Erfahrungen...
OK, das ist ja keine große Sache, die Abhängigkeiten anzupassen.
|
Heinrich_Schwietering
Wikiteam
(Themenstarter)
Anmeldungsdatum: 12. November 2005
Beiträge: 11290
Wohnort: Bremen
|
Hi! ds10 schrieb:
Hielte ich für ungünstig, da man dann als Benutzer erst wieder in das Verzeichnis /usr/share/tvbrecordingscripts navigieren müsste um es zu importieren, da man zu Beginn des Imports im Benutzerverzeichnis ist. Wenn man im Artikel sieht, dass man zwei Dateien herunterladen muss, dann weiß man noch genau wo man die tcf-Datei abgespeichert hat und findet die sicher recht leicht, weil das irgendwo im Benutzerverzeichnis sein dürfte. Prinzipiell wäre es natürlich möglich die tcf-Datei auch im Paket mit zu liefern, aus Benutzersicht würde das aber gegen meine Faulheit sprechen. 😉
Na, dann wäre es doch das einfachste, die tcf-Datei gleich ins Homeverzeichnis legen zu lassen; das ist zumindestens das, was sich standardmäßig öffnet, wenn ich ein Gerät importieren möchte... Wenn dann gleich nur die tcf-Dateien aus dem Verzeichnis angezeigt würden, wäre die Sache "deppendicht" für Oberfaule... 😉
OK, das ist ja keine große Sache, die Abhängigkeiten anzupassen.
Ja, müsste einfach mit in die Steuerdatei. so long hank
|
ds10
Anmeldungsdatum: 20. September 2007
Beiträge: 99
|
Heinrich Schwietering schrieb: Na, dann wäre es doch das einfachste, die tcf-Datei gleich ins Homeverzeichnis legen zu lassen; das ist zumindestens das, was sich standardmäßig öffnet, wenn ich ein Gerät importieren möchte... Wenn dann gleich nur die tcf-Dateien aus dem Verzeichnis angezeigt würden, wäre die Sache "deppendicht" für Oberfaule... 😉
Ich weiß jetzt nicht, ob das so in Ordnung wäre. Aus Sicht des Paketmanagers sind Benutzerverzeichnisse eher nichts, in denen er rumschreiben sollte. Man weiß nie, was der Benutzer mit den Dateien anstellt am Ende sind die dann plötzlich verschwunden, obwohl der Paketmanager die als existent kennt. Ich denke der Paketmanager sollte immer nur Systemeinstellungen verändern, also alles wo nur root Schreibrechte hat. Außerdem kommt noch dazu, dass ein Paket immer als root installiert wird und der hat als Homeverzeichnis /root und das wäre das Verzeichnis wo die Datei dann landen würde, da ~ bei root nunmal darauf verweist. Das normale Benutzerverzeichnis kenne ich ja nicht (heißt ja jeder anders 😉), kann es im deb-Paket daher auch nicht angeben. Es ist also sowohl ein Implementierungsproblem, als auch ein konzeptionelles Problem, die tcf-Datei per deb-Paket ins Benutzerverzeichnis zu kopieren. An dieser Stelle muss man vom Benutzer einfach verlangen, dass er das auch anders hinbekommt (sollte der auch, denn wenn man eine channels.conf erstellen konnte, dann wird man auch das Importieren der tcf-Datei noch schaffen, ansonsten einfach den Administrator fragen 😉).
|
Heinrich_Schwietering
Wikiteam
(Themenstarter)
Anmeldungsdatum: 12. November 2005
Beiträge: 11290
Wohnort: Bremen
|
Hi! ds10 schrieb:
Ich weiß jetzt nicht, ob das so in Ordnung wäre. Aus Sicht des Paketmanagers sind Benutzerverzeichnisse eher nichts, in denen er rumschreiben sollte. Man weiß nie, was der Benutzer mit den Dateien anstellt am Ende sind die dann plötzlich verschwunden, obwohl der Paketmanager die als existent kennt. Ich denke der Paketmanager sollte immer nur Systemeinstellungen verändern, also alles wo nur root Schreibrechte hat. Außerdem kommt noch dazu, dass ein Paket immer als root installiert wird und der hat als Homeverzeichnis /root und das wäre das Verzeichnis wo die Datei dann landen würde, da ~ bei root nunmal darauf verweist. Das normale Benutzerverzeichnis kenne ich ja nicht (heißt ja jeder anders 😉), kann es im deb-Paket daher auch nicht angeben.
Auch nicht per "$HOME"? Es ist also sowohl ein Implementierungsproblem, als auch ein konzeptionelles Problem, die tcf-Datei per deb-Paket ins Benutzerverzeichnis zu kopieren.
Naja, wenn ich es recht sehe, werden Teile/Konfiguration des TV-Browser selbst doch auch ohne Probleme ins Homeverzeichnis des angemeldeten Users gepackt - ich kann mich zumindest nicht entsinnen, den Ordner ~/.tvbrowser dort angelegt zu haben. Im Paket selbst ist er allerdings auch nicht verzeichnet, muss also danach "automatisch" passiert sein - vermutlich wohl beim Erstaufruf des TV-Browsers. An dieser Stelle muss man vom Benutzer einfach verlangen, dass er das auch anders hinbekommt (sollte der auch, denn wenn man eine channels.conf erstellen konnte, dann wird man auch das Importieren der tcf-Datei noch schaffen, ansonsten einfach den Administrator fragen 😉).
Ok, da hast du natürlich auch Recht, wer das schafft, findet vermutlich auch die .tcf-Datei wieder. 😀 Ich sehe mal, ob ich für die fehlende crontab-Datei noch eine einfache Lösung finde. so long hank
|
Heinrich_Schwietering
Wikiteam
(Themenstarter)
Anmeldungsdatum: 12. November 2005
Beiträge: 11290
Wohnort: Bremen
|
Hi! Um die Crontab-Datei für den User zu erstellen, wenn sie nicht existent ist, hab' ich jetzt folgende Lösung gebastelt: | if [ ! -a /var/spool/cron/crontab/$USER ] ; then
echo "0 0 1 1 * TEST" &> $VERZ/crontabinit.txt
crontab $VERZ/crontabinit.txt
rm $VERZ/crontabinit.txt
fi
|
Das an den Anfang des TVBrowserCron-Skriptes gestellt sollte das der Problem bei nicht-existenter Datei lösen; die crontabinit.txt-Datei wird dann gleich wieder gelöscht. Sie enthält einen "unschädlichen" Dummy-Befehl; theoretisch könnte man den auch wieder entfernen, so dass nur eine leere Datei zurückbleibt, aber der Eintrag stört auch nicht weiter. so long hank
|
ds10
Anmeldungsdatum: 20. September 2007
Beiträge: 99
|
Heinrich Schwietering schrieb: Auch nicht per "$HOME"?
Nein, $HOME zeigt auf /root wenn man ein Paket installiert.
Naja, wenn ich es recht sehe, werden Teile/Konfiguration des TV-Browser selbst doch auch ohne Probleme ins Homeverzeichnis des angemeldeten Users gepackt - ich kann mich zumindest nicht entsinnen, den Ordner ~/.tvbrowser dort angelegt zu haben. Im Paket selbst ist er allerdings auch nicht verzeichnet, muss also danach "automatisch" passiert sein - vermutlich wohl beim Erstaufruf des TV-Browsers.
Das macht nicht der Paketmanager, sondern TV-Browser beim ersten Start.
|
Heinrich_Schwietering
Wikiteam
(Themenstarter)
Anmeldungsdatum: 12. November 2005
Beiträge: 11290
Wohnort: Bremen
|
Hi! OK, OK, überzeugt... Den Crontab-Check könnten wir aber mit übernehmen, das funktioniert so, hab's gerade nochmal auf Karmic, und mit dem angepassten Skript aus deinem Paket überprüft (und dass .tvbrowser existent ist, muss wohl nicht extra überprüft werden... 😉 ) Ich schreibe die Änderung erstmal mit ins Wiki, wenn das ganze nochmal abgetestet ist, können wir das Pakte/Gerät ja dort verlinken. Ich hab' dazu aber noch eine andere Frage: ich hatte versucht, das ganze dahingehend zu erweitern, dass auch regelmäßige Aufnahmen gleich programmiert werden könnten (was ja für cron-jobs nahe liegend wäre) Leider bekomme ich dann regelmäßig (vorher gabs die auch beim ersten Aufruf einer neuem Skript-Version, aber nach einigen Aufrufen auch nicht mehr)
eine Fehlermeldung, java.lang.IllegalThreadStateException: process hasn't exited
at java.lang.UNIXProcess.exitValue(UNIXProcess.java:172)
at util.io.ExecutionHandler.exitValue(ExecutionHandler.java:216)
at captureplugin.drivers.defaultdriver.CaptureExecute.executeApplication(CaptureExecute.java:314)
at captureplugin.drivers.defaultdriver.CaptureExecute.execute(CaptureExecute.java:176)
at captureplugin.drivers.defaultdriver.CaptureExecute.addProgram(CaptureExecute.java:130)
at captureplugin.drivers.defaultdriver.DefaultDevice.add(DefaultDevice.java:214)
at captureplugin.CapturePlugin$2.actionPerformed(CapturePlugin.java:231)
at tvbrowser.core.plugin.ActionProxy.actionPerformed(ActionProxy.java:83)
at tvbrowser.extras.programinfo.TaskMenuAction$1.actionPerformed(TaskMenuAction.java:125)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
at java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:272)
at java.awt.Component.processMouseEvent(Component.java:6263)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)
at java.awt.Component.processEvent(Component.java:6028)
at java.awt.Container.processEvent(Container.java:2041)
at java.awt.Component.dispatchEventImpl(Component.java:4630)
at java.awt.Container.dispatchEventImpl(Container.java:2099)
at java.awt.Component.dispatchEvent(Component.java:4460)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4574)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4238)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168)
at java.awt.Container.dispatchEventImpl(Container.java:2085)
at java.awt.Window.dispatchEventImpl(Window.java:2475)
at java.awt.Component.dispatchEvent(Component.java:4460)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
at util.ui.textcomponentpopup.TextComponentPopupEventQueue.dispatchEvent(TextComponentPopupEventQueue.java:37)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:178)
at java.awt.Dialog$1.run(Dialog.java:1045)
at java.awt.Dialog$3.run(Dialog.java:1097)
at java.security.AccessController.doPrivileged(Native Method)
at java.awt.Dialog.show(Dialog.java:1095)
at java.awt.Component.show(Component.java:1563)
at java.awt.Component.setVisible(Component.java:1515)
at java.awt.Window.setVisible(Window.java:841)
at java.awt.Dialog.setVisible(Dialog.java:985)
at tvbrowser.extras.programinfo.ProgramInfoDialog$17.run(ProgramInfoDialog.java:720)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:597)
at util.ui.textcomponentpopup.TextComponentPopupEventQueue.dispatchEvent(TextComponentPopupEventQueue.java:37)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:122) Woran mag das liegen? so long hank
|
ds10
Anmeldungsdatum: 20. September 2007
Beiträge: 99
|
Das liegt daran, dass die Aufnahmesteuerung überprüft, ob das gestartete Programm zurück gibt, das stellt man in den weiteren Einstellungen des Geräts ein. Man kann das auch komplett abschalten, dann wird die Sendung sofort markiert.
|
Heinrich_Schwietering
Wikiteam
(Themenstarter)
Anmeldungsdatum: 12. November 2005
Beiträge: 11290
Wohnort: Bremen
|
Hi! Aha, aber das sollte doch eigentlich nicht so sein, oder?...Das Skriptes scheint "weiterzulaufen", jedenfalls öffnet sich das Zenity-Fenster mit den Auswahlmöglichkeiten irgendwo im Hintergrund... Also einfach angeben, dass keine Rückgabe erfolgen soll? Wär' ja aber gerade zum Testen ganz sinnvoll, dass eine Rückgabe kommt, anhand man dann ggf. feststellen könnte, ob/was nicht funktioniert. Naja, "lebenswichtig" ist es natürlich nicht... 😉 so long hank
|
ds10
Anmeldungsdatum: 20. September 2007
Beiträge: 99
|
Man kann die Wartezeit auch noch erhöhen, so dass die Bedienung der Abfragen auch zu schaffen ist.
Im Moment habe ich das auf 25 Sekunden festgelegt.
|
Heinrich_Schwietering
Wikiteam
(Themenstarter)
Anmeldungsdatum: 12. November 2005
Beiträge: 11290
Wohnort: Bremen
|
Hi! ds10 schrieb: Man kann die Wartezeit auch noch erhöhen, so dass die Bedienung der Abfragen auch zu schaffen ist.
Im Moment habe ich das auf 25 Sekunden festgelegt.
Danke für den Hinweis! Das könnte natürlich der Grund sein, dass es zu lange dauert, bis alle Eingabe-Abfragen abgearbeitet sind - für die Programmierung von regelmäßigen Terminen hatte ich noch einen Extra-Dialog eingebaut. Kann man das selbst festlegen, wie viel Zeit dazu ist? Und wenn ja, wo? so long hank
|