BeanShell Produktionsjahr - Exception

Antwort erstellen


Diese Frage dient dazu, das automatisierte Versenden von Formularen durch Spam-Bots zu verhindern.

BBCode ist eingeschaltet
[img] ist eingeschaltet
[url] ist eingeschaltet
Smileys sind ausgeschaltet

Die letzten Beiträge des Themas

Ich habe die Datenschutzerklärung gelesen und bin damit einverstanden.

   

Ansicht erweitern Die letzten Beiträge des Themas: BeanShell Produktionsjahr - Exception

Re: BeanShell Produktionsjahr - Exception

von ds10 » 11 Jul 2020, 13:51

Es gibt übrigens einen guten Grund, warum bestimmte Filter von der Suche nach Lieblingssendungen ausgeschlossen sind. Bei den entsprechenden Filter besteht die Gefahr, dass eine Endlosschleife einprogrammiert wird und TV-Browser dann einfriert. Da du die Einschränkung jetzt aufgehoben hast, solltest du besonders darauf achten, solche Endlosschleifen nicht einzubauen.

Re: BeanShell Produktionsjahr - Exception

von drophex » 11 Jul 2020, 09:42

Hey, danke Dir vielmals, es funktioniert :-)
Jetzt hab ich einen Lieblinssendungseintrag, die mir Dokus/Reportagen ab dem Produktionsjahr 2017 auf 3sat und Arte liefert :-)

LG
drophex

Re: BeanShell Produktionsjahr - Exception

von ds10 » 10 Jul 2020, 23:22

BeanShell-Filter sind grundsätzlich von der Verwendung in der Suche nach Lieblingssendungen ausgeschlossen. Wenn du einen BeanShell-Filter verwenden möchtest, dann kannst du die Datei settings.prop im Homeverzeichnis mit einem Editor öffnen (wenn TV-Browser nicht läuft) und am Ende eine neue Zeile mit folgenden Text hinzufügen:

Code: Alles auswählen

favoriteBlockedFilterComponents=

Re: BeanShell Produktionsjahr - Exception

von drophex » 10 Jul 2020, 23:06

Sorry, die Code-Formatierung hat nicht funktioniert und ich kann nicht editieren ^^

Re: BeanShell Produktionsjahr - Exception

von drophex » 10 Jul 2020, 23:04

Hi ds10,

danke für die schnelle Antwort. Ich stelle mich eventuell etwas blöd an. Ich habs jetzt wie folgt abgeändert:

Code: Alles auswählen

import devplugin.beanshell.BeanShellProgramFilterIf;
import devplugin.Program;
import devplugin.ProgramFieldType;

accept(Program p) {

	try {
		int year = p.getIntField(ProgramFieldType.PRODUCTION_YEAR_TYPE);
		if (year != null && year > 2017) {
		return true;
		}
	}
	catch(Exception e) {
		return false;
	}
	return false;
}

return (BeanShellProgramFilterIf) this;
Syntax wird jetzt als OK angenommen. Aber Tv-Browser sagt mir anschließend, dass der gewählte Filter nicht für eine Suche verwendet werden kann?

LG drophex

Re: BeanShell Produktionsjahr - Exception

von ds10 » 10 Jul 2020, 22:17

Du nutzt da eine ziemlich alte API, in neueren Versionen kann das bedeuten, dass bestimmte Methoden nicht mehr existieren. Außerdem ist der Zugriff auf die genannte Methode protected, d.h. da könntest du gar nicht ohne Reflection drauf zugreifen.

Du musst stattdessen die Methode für int-Felder benutzen:

Code: Alles auswählen

p.getIntField(ProgramFieldType.PRODUCTION_YEAR_TYPE)

BeanShell Produktionsjahr - Exception

von drophex » 10 Jul 2020, 21:36

Hi, ich hab ein Problem mit BeanShell. Ich versuche, einen Filter zu basteln, der mir nur Sendungen liefert, die ab z.B. 2017 produziert wurden.
Mein Code sieht so aus:

Code: Alles auswählen

import devplugin.beanshell.BeanShellProgramFilterIf;
import devplugin.Program;
import devplugin.ProgramFieldType;

accept(Program p) {

	int year = p.gettField(ProgramFieldType.PRODUCTION_YEAR_TYPE);
	if (year != null && year > 2017) {

	return true;
	}
}

return (BeanShellProgramFilterIf) this;
Leider bekomme ich eine Exception, Grund schein folgendes zu sein:

Code: Alles auswählen

Typed variable declaration : Error in method invocation: Method gettField( devplugin.ProgramFieldType ) not found in class'tvdataservice.MutableProgram' : at Line: 7 : in file: inline evaluation of: ``import devplugin.beanshell.BeanShellProgramFilterIf; import devplugin.Program; i . . . '' : p .gettField ( ProgramFieldType .PRODUCTION_YEAR_TYPE ) 
In der API Doku steht aber die Funktion drin:
www_tvbrowser_org/dev/api/tvbrowser_v2.7.6/doc/tvdataservice/MutableProgram.html#getIntField(devplugin.ProgramFieldType)

Bitte um Hilfe. Was mach ich denn falsch :/

LG Drophex

Nach oben