FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: Jakl am 03 Juli 2020, 16:57:10

Titel: Reading enthält XML, darin ist der Link zu einem Bild, das möchte ich Anzeigen
Beitrag von: Jakl am 03 Juli 2020, 16:57:10
Hallo,

ich habe mich wirklich schon hoch und runter gesucht, finde aber keine Lösung.

Mit wird ein Reeding mit XML gefüllt. Darin ist ein Link, den ich gerne als Bild anzeigen würde. Wie extrahiere ich aus dem Reading den link?

Hier der Wert des Readings:

<p>
<img src="https://assets.amuniversal.com/ee6a3ca08d7f013808e1005056a9545d" alt="Dilbert by Scott Adams on Fri, 03 Jul 2020" title="Dilbert by Scott Adams on Fri, 03 Jul 2020">
</p>
<p>
<a href="https://dilbert.com/strip/2020-07-03">Source</a> -
<a href="https://www.patreon.com/bePatron?u=6855838">Patreon</a>
</p>


Ich brauch den Wert aus dem src Attribut. Daraus möchte ich ein eigenes Reading machen und das als Wert einer Weblink Definition anhängen.

Kann mir jemand helfen?
Danke und Gruß,
Jakl
Titel: Antw:Reading enthält XML, darin ist der Link zu einem Bild, das möchte ich Anzeigen
Beitrag von: Otto123 am 03 Juli 2020, 17:38:51
Hi,

als Denkansatz ein Oneliner für die FHEM Kommandozeile:
{my $in = '<img src="https://assets.amuniversal.com/ee6a3ca08d7f013808e1005056a9545d" alt="Dilbert by Scott Adams on Fri, 03 Jul 2020" title="Dilbert by Scott Adams on Fri, 03 Jul 2020">';;my @a = split('"', $in);;return $a[1]}

Musst Du bloß my $in=ReadingsVal() umbauen.

Gruß Otto
Titel: Antw:Reading enthält XML, darin ist der Link zu einem Bild, das möchte ich Anzeigen
Beitrag von: TomLee am 03 Juli 2020, 18:26:33
Gleich in devstateIcon umsetzen wenns nicht unbedingt eine Weblink Definition sein muss  :)

Für den RAW-Import:

attr <devicename> devStateIcon {my $url = ReadingsVal($name,"url","undef");;my @a = split('"', $url);;\
"<img src='$a[1]' style='width:80px;;height:80px;;'>" }


Gruß

Thomas
Titel: Antw:Reading enthält XML, darin ist der Link zu einem Bild, das möchte ich Anzeigen
Beitrag von: betateilchen am 03 Juli 2020, 18:41:45
Damit kriegst Du spätestens dann ein Problem, wenn der default-Wert von ReadingsVal() gezogen wird.

Ich würde das Ganze mittels regex lösen.
Titel: Antw:Reading enthält XML, darin ist der Link zu einem Bild, das möchte ich Anzeigen
Beitrag von: TomLee am 03 Juli 2020, 19:05:01
Wenn das Reading sich nicht grundsätzlich ändert und es bei dem split bleiben kann könnte man doch darüber nachdenken den default-Wert auch anzupassen:
ReadingsVal('url','url','"fhem/www/images/openautomation/scene_making_love.svg"')

Der default-Wert ist aber doch weniger das Problem, in dem Reading wird doch wohl immer was drinstehen und das Reading selbst auch existieren.
Nur ausführen wenn die Anzahl der Elemente 1 ergibt wär wohl eher angesagt.




oder so mit einem regexp:

attr url devStateIcon { my $rep = 'fhem/www/images/fhemSVG/rc_BLANK.svg';
my $img = ReadingsVal('url','url',$rep) =~ m,<img.*?src="(.*?)"[^\>]+>, ? $1 : $rep;"<img src='$img' style='width:80px;height:80px;'>"}
Titel: Antw:Reading enthält XML, darin ist der Link zu einem Bild, das möchte ich Anzeigen
Beitrag von: Jakl am 06 Juli 2020, 11:04:16
Vielen Dank. Der Denkanstoß hat geholfen... ;-)

Ich habe mir ein UserReading angelegt, was mit den Beispielen von euch den Link befüllt. Und darauf reagiere ich mit einem Notify das per defmod den Weblink aktualisiert.