RegEx: Nur Abfahrtzeiten aus "Departure"

Begonnen von d0m2011, 13 Januar 2019, 13:21:59

Vorheriges Thema - Nächstes Thema

d0m2011

Hallo zusammen,

ich nutze gerade das PlugIn Departure um meine Abfahrtzeiten auf meinem Tablet Ui anzuzeigen.
Mich stört, dass beide Richtungen der Haltestelle angezeigt werden und, dass die Optik nicht ganz zu meinem Layout passt.
Daher würde ich gerne nur die Abfahrtzeiten (verbleibende Minuten), wirklich nur die Zahl, einzeln mit RegEx extrahieren.

Nur leider bekomme ich es nicht ganz hin.
Folgender Input steht zu Verfügung:
[["6","Hans-Löffler-Straße","14"],["6","Barbarossaplatz","16"],["6","Hans-Löffler-Straße","34"],["6","Barbarossaplatz","36"],["6","Hans-Löffler-Straße","54"],["6","Barbarossaplatz","56"],["6","Hans-Löffler-Straße","74"],["6","Barbarossaplatz","76"],["6","Hans-Löffler-Straße","94"],["6","Barbarossaplatz","96"]]

Die Daten hole ich von hier:
https://transport.stefan-biermann.de/publictransportapi/rest/departure/FHEM?from=220211&provider=Bahn

Nun möchte ich nur die Abfahrtzeit bzw. verbleibenden Minuten Richtung Barbarossaplatz.
-> Kann ich nicht nach Barbarossaplatz suchen die Zahl danach ausgeben?
["6","Barbarossaplatz","16"]

Hoffe ihr könnt mir helfen denn mit RegEx komme ich nicht klar.

Grüße und Danke euch.

KernSani

Ich würde mal sowas probieren:


Barbarossaplatz".*?"(.*?)"


und dann auf https://regex101.com/ gehen und üben ;-)
RasPi: RFXTRX, HM, zigbee2mqtt, mySensors, JeeLink, miLight, squeezbox, Alexa, Siri, ...

crusader

Zitat von: d0m2011 am 13 Januar 2019, 13:21:59

Folgender Input steht zu Verfügung:
[["6","Hans-Löffler-Straße","14"],["6","Barbarossaplatz","16"],["6","Hans-Löffler-Straße","34"],["6","Barbarossaplatz","36"],["6","Hans-Löffler-Straße","54"],["6","Barbarossaplatz","56"],["6","Hans-Löffler-Straße","74"],["6","Barbarossaplatz","76"],["6","Hans-Löffler-Straße","94"],["6","Barbarossaplatz","96"]]

-> Kann ich nicht nach Barbarossaplatz suchen die Zahl danach ausgeben?
["6","Barbarossaplatz","16"]


Klar:
my ($waittime) = ($input =~ /\["6","Barbarossaplatz","(\d+)"\]/)


d0m2011

Ah sehr gut, vielen Dank.
Eigentlich genügt ja nur eine Abfahrtzeit, also die nächste.

Ich finde das Tool Departure ja eigentlich gar nicht schlecht.
Nur leider aktualisiert es sich nicht am Tablet. Wenn dann muss immer die komplette Seite neu geladen werden.

fhemtobi

#4
Hi zusammen,

da mir das Forum immer sehr geholfen hat, möchte ich auch mal was zurückgeben.

Ich stand auch vor dem Problem "nur eine Linie" & "nur eine Richtung".

Ich habe es statt mit einem RegEx mit JS direkt im DIV gelöst. Dann nutzt man zwar ein neues, eigenes Widget und nicht das Departure - für mich aber völlig ausreichen und man kann es ja noch stylen. Ich brauche es, damit ganz prominent oben im Tablet-UI die nächsten 2-3 Abfahrtzeiten stehen damit ich weiß, dann ich losgehen muss.

Anforderung:
- Anzeige der nächsten Abfahreszeiten in Minuten
- Nur eine Linie ("4")
- Nur eine Richtung. Allerdings können die Endhaltestellen unterschiedlich sein
- Was immer gleich ist, ist die Endhaltestelle der Gegenrichtung ("Schlebusch")

Lösung:
- Ich habe das JSON zuerst nur nach Linie 4 gefiltert
- Dann habe ich noch nach nicht-gleich "Schlebusch" gefiltert, damit ich alle Abfahren der Gegenrichtung bekomme
- Das ganze funktioniert ganz gut, jetzt brauche ich nur noch einen auto-refresh der Daten einbauen und dann ist's schick :-)

Ich hoffe ich kann mit dem Code dem einen oder anderen helfen.


<table>
<tr>
<td>
<div class="big">Linie 4 kommt in:
</div>
</td>
<td>
<div class="big" data-type="label" data-device="kvb" data-get="Leuchterstr" data-substitution="
parseJson().filter(entry => entry[0] == 4 && entry[1] != 'Schlebusch' ).map(function(item,index) {
return item[2] }) + ' min'" class="">
</div>
</td>
</tr>
</table>


Grüße