CapturePlugin Option:Sendungen, die beim Datenupdate entfern

Hier haben Plugin-Entwickler die Möglichkeit, sich auszutauschen.
Antworten
gaddis

CapturePlugin Option:Sendungen, die beim Datenupdate entfern

Beitrag von gaddis »

Hallo,

wäre es möglich das das CapturePlugin beim Löschen der Internen-CapturePlugin-Liste der Aufgenommen Sendungen, auch das Programm startet das mit den Parametern Löschen definiert ist? (Einfach starten und den ReturnCode !=0 ignorieren.)
(Option: "Sendungen, die beim Datenupdate entfernt wurden, automatisch löschen")

Bei Linux (crontab) und Windows Vista/XP pro (schtasks.exe) werden die Einträge im Scheduled-System bei Einmaliger-Ausführung nicht automatisch gelöscht. http://hilfe.tvbrowser.org/viewtopic.php?f=13&t=12494
ds10
Site Admin
Beiträge: 19101
Registriert: 23 Jun 2005, 12:36
Kontaktdaten:

Re: CapturePlugin Option:Sendungen, die beim Datenupdate entfern

Beitrag von ds10 »

Das sollten sie aber, denn so ist es programmiert und ich sehe auch keinen Fehler im Quellcode an der Stelle. Wenn der Haken gesetzt ist müsste es funktionieren.
"First they ignore you, then they ridicule you, then they fight you, then you win." - Mahatma Gandhi
Unterstütze die Weiterentwicklung von TV-Browser
gaddis

Re: CapturePlugin Option:Sendungen, die beim Datenupdate entfern

Beitrag von gaddis »

Benutze es schon seit Monaten, und es wird nicht das Programm gestartet das mit den Parametern Löschen definiert ist. Was funktioniert ist, bei der Liste der Aufnahmen, das Löschen-Gadget (Schredder-Symbol), wenn ich das manuell anklicke, wird das Programm mit den Parametern Löschen gestartet. Beim Datenupdate wird das aber wirklich nicht automatisch gemacht.
ds10
Site Admin
Beiträge: 19101
Registriert: 23 Jun 2005, 12:36
Kontaktdaten:

Re: CapturePlugin Option:Sendungen, die beim Datenupdate entfern

Beitrag von ds10 »

Wird denn die Liste mit den entfernten Sendungen nach dem Datenupdate angezeigt?
"First they ignore you, then they ridicule you, then they fight you, then you win." - Mahatma Gandhi
Unterstütze die Weiterentwicklung von TV-Browser
gaddis

Re: CapturePlugin Option:Sendungen, die beim Datenupdate entfern

Beitrag von gaddis »

Weis nicht so richtig was du meinst. In der CapturePlugin-Liste stehen Aufnahmen von Gestern bis Heute drinnen, nach einem Datenupdate werden alte Aufnahmen in der CapturePlugin-Liste gelöscht, aber es wird kein Programm zum löschen gestartet.
ds10
Site Admin
Beiträge: 19101
Registriert: 23 Jun 2005, 12:36
Kontaktdaten:

Re: CapturePlugin Option:Sendungen, die beim Datenupdate entfern

Beitrag von ds10 »

Das ist so auch nicht vorgesehen, wenn aber Sendungen, die in der Zukunft liegen, wegfallen wird eine Liste mit diesen weggefallenen Sendungen angezeigt und dann werden die Sendungen auch entfernt (d.h. das Löschen wird aufgerufen). Für abgelaufene Sendungen gilt das nicht, da ist das System eigentlich selber dran. Unter Windows kann man die Tasks schließlich so programmieren, dass sie sich selbst löschen, nachdem sie gelaufen sind. Ich denke nicht, dass dafür die Aufnahmesteuerung zuständig sein sollte.
"First they ignore you, then they ridicule you, then they fight you, then you win." - Mahatma Gandhi
Unterstütze die Weiterentwicklung von TV-Browser
gaddis

Re: CapturePlugin Option:Sendungen, die beim Datenupdate entfern

Beitrag von gaddis »

Stimmt schon, das wenn man in Windows das SchedulingSystem direkt programmiert geht das bestimmt. Ich benutze aber Windows Vista/XP Pro schtasks.exe und die Option "/Z" funktioniert nur mit "/ET Endzeit" und wenn die nach Mitternacht ist, und die Startzeit vorher ist, gibt es eine Fehlermeldung.

und "/ED Enddatum" funktioniert nicht mit "Zeitplantypen EINMAL"
und "/DU Dauer (HH:mm)" bringt mit "/Z" eine merkwürdige XML Fehlermeldung. Und das CapturePlugin hat kein {length_hour}

Bei Linux (crontab) gibt es keine Möglichkeit für Einmalige-Tasks ein automatisches löschen einzustellen.

Die Programme zum Ein- Austragen der Tasks im Scheduling-System (Linux/Windows) sind so klein, und schnell ausgeführt, das es kaum eine Verzögerung gibt. Und wenn das CapturePlugin-Standard-Treiber vielleicht für Scheduling gedacht ist, könnte es vielleicht beim Löschen der Internen-CapturePlugin-Aufnahme-Liste ein kleines externes Programm starten (ReturnCode !=0 ignorieren), das auch im OS-Scheduling-System die Aufnahme-Liste löscht. Wenn das CapturePlugin schon die Parameter für Aufnehmen und Löschen hat.
ds10
Site Admin
Beiträge: 19101
Registriert: 23 Jun 2005, 12:36
Kontaktdaten:

Re: CapturePlugin Option:Sendungen, die beim Datenupdate entfern

Beitrag von ds10 »

Also für Windows würde ich dir http://www.wintvcap-gui.de.vu/tvb/jt-install.exe empfehlen, das kann viel mehr als schtasks.exe. Eine Änderung im Plugin wird so schnell nichts werden.
"First they ignore you, then they ridicule you, then they fight you, then you win." - Mahatma Gandhi
Unterstütze die Weiterentwicklung von TV-Browser
gaddis

Re: CapturePlugin Option:Sendungen, die beim Datenupdate entfern

Beitrag von gaddis »

Mir ist jt.exe (von Windows 2000) bekannt, vielleicht werde ich noch für Windows XP Home/2000 die Parameter anpassen.
Für Linux sollte das CapturePlugin aber wirklich bei einem Datenupdate alte Aufnahmen mit dem Starten von einem Programm extern löschen können.

http://wiki.tvbrowser.org/index.php/%C3 ... _reagieren
Auf Datenupdates reagieren

TV-Browser informiert die Plugins mit 3 verschiedenen Methoden über Updates in den Daten. Ein Plugin kann dann auf dieses Update reagieren, indem es mindestens eine dieser Methoden überschreibt.

Code: Alles auswählen

ArrayList<Program> mMyMarkedPrograms = new ArrayList<Program>(); 

...

public void handleTvDataUpdateFinished() {
  Program[] oldList = mMyMarkedPrograms.toArray(new Program[mMyMarkedPrograms.size()]);
  mMyMarkedPrograms.clear();

  for(Program program : oldList) {
    if(program.getProgramState() == Program.WAS_DELETED_STATE) {
      /* Können wir einfach ignorieren, da TV-Browser diese Sendung bereits ent-markiert hat
       * würde das Plugin aber mit der Sendung noch was anderes machen müssen, zum Beispiel sie
       * aus einer Aufnahmeprogrammierung löschen, würde man dies jetzt hier machen. 
       */
    }
    else if(program.getProgramState() = Program.WAS_UPATED_STATE) {
      /* An einer Sendung mit der Status Program.WAS_UPDATE_STATE wurde während
       * des Datenupdates etwas verändert, von einer solchen Sendung müssen wird die neue Instanz
       * laden und unsere Liste hinzufügen. Markieren müssen wir die Sendung nicht, da dies TV-Browser
       * während des Datenupdates bereits gemacht hat.
       */
      mMyMarkedPrograms.add(getPluginManager().getProgram(program.getDate(),program.getID()));
    }
    else {
      /* Wenn wir hier landen, ist die Sendung weder gelöscht noch verändert worden, wir
       * können also die bisherige Instanz weiter benutzen, da dies weiterhin die Aktuelle ist.
       */
      mMyMarkedPrograms.add(program);
    }
  }
}
ds10
Site Admin
Beiträge: 19101
Registriert: 23 Jun 2005, 12:36
Kontaktdaten:

Re: CapturePlugin Option:Sendungen, die beim Datenupdate entfern

Beitrag von ds10 »

Nun das macht das Plugin längst, nur wenn man TV-Browser startet werden alte Daten automatisch gelöscht, zu dem Zeitpunkt sind aber noch keine Plugins geladen, damit diese nicht Daten von vorgestern auslesen können. Daher wird es nicht konsistent funktionieren die Tasks die bereits gelaufen sind zu löschen. Läuft TV-Browser durch wäre es machbar, wird TV-Browser aber seltener benutzt können alte Sendungen nicht mehr gelöscht werden da zu viele Informationen fehlen. Es müsste dann deutlich mehr vom Plugin selbst pro Sendung gespeichert werden, was den Speicherverbrauch von TV-Browser erhöht. Gibt es denn bei Crontab nicht eine Möglichkeit manuell alle vergangenen Einträge zu löschen? Wenn ja könntest du einfach eine weiteren Parameter für das Gerät einstellen, so dass man dann ab und zu die alten Einträge löscht (könnte man ja auch mit einem Shell-Skript verbinden).
"First they ignore you, then they ridicule you, then they fight you, then you win." - Mahatma Gandhi
Unterstütze die Weiterentwicklung von TV-Browser
gaddis

Re: CapturePlugin Option:Sendungen, die beim Datenupdate entfern

Beitrag von gaddis »

Bei OpenSUSE z.B. gibt es Schell-scripts die von cron Täglich, Wöchentlich, Monatlich als root Benutzer ausgeführt werden, weis jetzt nicht wie ich am einfachsten die ganzen User-crontab-files finde, und auch noch auf Aktualität überprüfen kann. In cron ist das automatische Löschen einfach nicht vorgesehen. Und Windows könnte das theoretisch auch automatisch machen, wenn eine Aufgabe nur Einmal an einem bestimmten Tag ausgeführt werden soll, wenn der PC z.B. Aus war, oder der User nicht angemeldet war, löscht Windows die verpasste Aufgabe auch nicht.
gaddis

Re: CapturePlugin Option:Sendungen, die beim Datenupdate entfern

Beitrag von gaddis »

Also wenn das stimmt das, das CapturePlugin keine Daten mehr von Vorgestern und älter hat.
z. B.: {clean(channel_name)}{start_year}-{start_month}-{start_day}_{start_hour}h{start_minute}

Das Benutze ich bei schtasks.exe als /TN Aufgabenname
Der Aufgabenname wird zum Löschen benötigt, wenn der feststeht ist ein Löschen in Windows kein Problem, auch wenn die Aufgabe nie ausgeführt wurde (PC Aus, oder der User nicht angemeldet war).

Wie wäre es mit diesem Vorschlag:
Das CapturePlugin erzeugt eine ID-Nummer die als Aufgabenname verwendet werden kann, und startet dann dann automatisch bei einem Datenupdate das externe Programm mit den Lösch-Parametern?

Und ich versuche das Shell-Script für Linux so umzuschreiben, das automatisch alle crontab-Einträge älter wie ein Monat gelöscht werden.
ds10
Site Admin
Beiträge: 19101
Registriert: 23 Jun 2005, 12:36
Kontaktdaten:

Re: CapturePlugin Option:Sendungen, die beim Datenupdate entfern

Beitrag von ds10 »

Im Moment wird das nichts werden, aber du kannst ja auch unter Windows ein Skript erstellen, was bei Programmierung von Aufnahmen alle 10 Tage (oder was auch immer) überprüft, ob noch alte Tasks vorhanden sind und die dann gegebenenfalls löscht. Ich finde es auch nicht wirklich wichtig, dass immer gleich alle abgelaufenen Tasks gelöscht sind, die laufen ja sowieso nicht mehr und stören daher kaum (wenn überhaupt kommt es höchstens zu einer kleinen Verlangsamung des Systems).
"First they ignore you, then they ridicule you, then they fight you, then you win." - Mahatma Gandhi
Unterstütze die Weiterentwicklung von TV-Browser
Benutzeravatar
fingerhut
Platin Member
Beiträge: 2923
Registriert: 03 Feb 2005, 10:18
Wohnort: Nürnberg

Re: CapturePlugin Option:Sendungen, die beim Datenupdate entfern

Beitrag von fingerhut »

Kannst dir mal anschauen und wenn du willst für dich anpassen.

Ich wollte damit nur ein paar Sachen ausprobieren die ich für eine anders Script benötigt habe.

PS Der Tasksname darf keine Leerzeichen enthalten.
Dateianhänge
deleteNoScheduleTasks.zip
(4.62 KiB) 354-mal heruntergeladen
[wiki=Hauptseite]Handbuch (TV-Browser)[/wiki]
gaddis

Re: CapturePlugin Option:Sendungen, die beim Datenupdate entfern

Beitrag von gaddis »

Oh danke, das Du dir so viel Mühe gemacht hast. Ich hätte das mit "schtasks /query /FO TABLE /NH" & "findstr" (ähnlich wie Linux "grep") gemacht.
Aber vielleicht ist das mit TV-Browser v3.0 nicht mehr nötig. Habe Bananeweizen eine kleine Änderung im CapturePlugin.java vorgeschlagen. Das CapturePlugin würde dann automatisch alle Scheduled-Aufnahmen von Vorgestern oder älter beim Start von TV-Browser löschen.
Antworten