Autor Thema: Notdienst Apotheke  (Gelesen 2677 mal)

Offline Vaddi

  • New Member
  • *
  • Beiträge: 44
Notdienst Apotheke
« am: 24 April 2018, 01:39:35 »
Hallo zusammen,

die Idee dazu kam mir, als meine Tochter 1,5 Jahre alt war und zum ersten mal
eine gute Freundin auf sie aufgepasst hat, damit meine Frau und ich einen netten
Abend verbringen können.
Also hab ich mich ans dran gesetzt und für mein Tablet UI eine "SOS" Seite erstellt, wo
z.B. alle wichtigen Telefonnummern drauf stehen (Notruf Giftzentrale, usw.).
Neben den wichtigen Nummern, habe ich auch eine Anzeige für die nächstegelegene
Notdienst Apotheke hinzugefügt und diesen Codeschnipsel möchte ich nun mit euch teilen.

Ich möchte noch anmerken, dass ich kein Profi in Sachen RegEx bin.
Bei mir funktioniert das ganze allerdings ohne Probleme.

Die Daten werden von https://www.aponet.de via HTTPMOD geholt.
Nun gibt es zwei Möglichkeiten:

Ihr wohnt in einem kleine Dorf/Gemeinte
Hier reicht die Eingabe der Postleitzahl eigentlich aus.
Ihr geht also auf https://www.aponet.de/ und gebt oben rechts
eure Postleitzahl ein. Den Link aus der Adresszeile kopiert ihr euch.
Der Link sollte so aussehen
https://www.aponet.de/service/notdienstapotheke-finden/suchergebnis/0/EURE-PLZ.html
Ihr wohnt in einer Großstadt
Hier macht eine Adresseingabe Sinn, da ja die nächstgelegene Apotheke angezeigt
wird.
Ihr geht auf https://www.aponet.de/service/notdienstapotheke-finden/erweiterte_suche.html
und tragt unten eure Daten ein.
GANZ WICHTIG: In dem Feld Datum tragt ihr eine 0 ein! Dadurch wird immer die aktuelle Notdienst
Apotheke angezeigt.
Dann auf Suche klicken und den Link aus der Adresszeile kopieren.
Dieser sollte ungefähr so aussehen
https://www.aponet.de/service/notdienstapotheke-finden/suchergebnis/0/EURE-PLZ/EURE-ADRESSE.html
Hier folgt nun meine Raw definition
defmod NotdienstApotheke HTTPMOD !!!HIER-MUSS-EUER-LINK-HIN!!! 0
attr NotdienstApotheke userattr reading01Name reading01Regex reading02Name reading02Regex reading03Name reading03Regex reading04Name reading04Regex reading05-1Name reading05-2Name reading05Name reading05Regex
attr NotdienstApotheke enableControlSet 1
attr NotdienstApotheke reading01Name NotName
attr NotdienstApotheke reading01Regex <div class="box_adress"><h2>([a-zA-ZäöüÄÖÜ0-9.&#;;_-]+)<\/h2><p class="distance">
attr NotdienstApotheke reading02Name NotdienstVon
attr NotdienstApotheke reading02Regex <p>Notdienst.*\n([ a-zA-Z0-9.:&#;;_-]+)
attr NotdienstApotheke reading03Name NotdienstBis
attr NotdienstApotheke reading03Regex <span>([ a-zA-Z0-9.:&#;;_-]+)<\/span>
attr NotdienstApotheke reading04Name NotdienstTelefon
attr NotdienstApotheke reading04Regex Tel.:.*\n([ 0-9.:&#;;_-]+)<br
attr NotdienstApotheke reading05Name NotdienstAdresse
attr NotdienstApotheke reading05Regex <p class="adress">([ a-zA-Z0-9äöüÄÖÜß.&#;;_-]+)<br\/>([0-9a-zA-ZäöüÄÖÜ ]+)
attr NotdienstApotheke stateFormat NotName, NotdienstTelefon, NotdienstAdresse-1 in NotdienstAdresse-2
attr NotdienstApotheke userReadings NotName NotdienstVon NotdienstBis NotdienstTelefon NotdienstAdresse

Da der Notdienst in der Regel von 9:00 - 9:00 geht, habe ich noch ein AT definiert, welches
ein reread um 9:30 Uhr durchführt.
defmod AT.Apotheke at *09:30:00 set NotdienstApotheke reread
Ich hoffe der eine oder andere kann damit etwas anfangen.
Anbei noch zwei Screenshots, einmal die Anzeige in fhem und die Anzeige im Tablet UI.
« Letzte Änderung: 26 Mai 2018, 11:33:28 von Vaddi »
Gefällt mir Gefällt mir x 6 Liste anzeigen

Offline stefanpf

  • Jr. Member
  • **
  • Beiträge: 64
Antw:Notdienst Apotheke
« Antwort #1 am: 24 April 2018, 06:24:55 »
Danke für's Teilen.

Gibt aktuell nur zwei Auffälligkeiten:
- aponet.de hat das Syntax Zertifikat nicht rechtzeitig ersetzt und HSTS aktiviert :(
- Die Ergebnisse werden beim Auftreten von Umlauten abgeschnitten (z.B. bei PLZ 32312 oder 32361)
  Durch ein bißchen basteln am Regex scheint das aber korrigierbar zu sein (bin selbst regex Dilettant)

attr NotdienstApotheke reading01Regex <div class="box_adress"><h2>([a-zA-ZäöüÄÖÜ0-9.&#;;_-]+)<\/h2><p class="distance">
attr NotdienstApotheke reading05Regex <p class="adress">([ a-zA-Z0-9äöüÄÖÜ.&#;;_-]+)<br\/>([0-9a-zA-ZäöüÄÖÜ ]+)

« Letzte Änderung: 24 April 2018, 19:53:20 von stefanpf »
Gefällt mir Gefällt mir x 2 Liste anzeigen

Offline Vaddi

  • New Member
  • *
  • Beiträge: 44
Antw:Notdienst Apotheke
« Antwort #2 am: 24 April 2018, 16:51:23 »
Vielen Dank für die Korrekturen.
Ich war mal so frei und habe diese beiden Einträge in meinem obigen Beitrag
aktualisiert.

Offline Ronny1979

  • New Member
  • *
  • Beiträge: 7
Notdienst Apotheke
« Antwort #3 am: 24 April 2018, 18:11:41 »
Hallo,

Irgendwie wird mir die falsche Apotheke angezeigt, wenn ich diesen Link in den Browser eingebe kommt das richtige.


https://www.aponet.de/service/notdienstapotheke-finden/suchergebnis/0/oschatz/Schulstrasse.html

Nehme ich den Link in Fhem wird mir eine Apotheke ca 30 km entfernt angezeigt.
Musste den Ortsnamen nehmen und nicht die plz. Da es bei uns viele Ortsteile mit der selben plz und Straße gibt.

define NotdienstApotheke HTTPMOD https://www.aponet.de/service/notdienstapotheke-finden/suchergebnis/0/oschatz/Schulstrasse.html 0
attr NotdienstApotheke userattr reading01Name reading01Regex reading02Name reading02Regex reading03Name reading03Regex reading04Name reading04Regex reading05-1Name reading05-2Name reading05Name reading05Regex
attr NotdienstApotheke enableControlSet 1
attr NotdienstApotheke reading01Name NotName
attr NotdienstApotheke reading01Regex <div class="box_adress"><h2>([a-zA-ZäöüÄÖÜ0-9.&#;;_-]+)<\/h2><p class="distance">
attr NotdienstApotheke reading02Name NotdienstVon
attr NotdienstApotheke reading02Regex <p>Notdienst.*\n([ a-zA-Z0-9.:&#;;_-]+)
attr NotdienstApotheke reading03Name NotdienstBis
attr NotdienstApotheke reading03Regex <span>([ a-zA-Z0-9.:&#;;_-]+)<\/span>
attr NotdienstApotheke reading04Name NotdienstTelefon
attr NotdienstApotheke reading04Regex Tel.:.*\n([ 0-9.:&#;;_-]+)<br
attr NotdienstApotheke reading05Name NotdienstAdresse
attr NotdienstApotheke reading05Regex <p class="adress">([ a-zA-Z0-9äöüÄÖÜ.&#;;_-]+)<br\/>([0-9a-zA-ZäöüÄÖÜ ]+)
attr NotdienstApotheke stateFormat NotName, NotdienstTelefon, NotdienstAdresse-1 in NotdienstAdresse-2
attr NotdienstApotheke userReadings NotName NotdienstVon NotdienstBis NotdienstTelefon NotdienstAdresse
define AT.Apotheke at *17:20:00 set NotdienstApotheke reread[\CODE]

Gruß
Ronny


Gesendet von iPhone mit Tapatalk
« Letzte Änderung: 24 April 2018, 18:28:07 von Ronny1979 »

Offline rischbiter123

  • Jr. Member
  • **
  • Beiträge: 58
Antw:Notdienst Apotheke
« Antwort #4 am: 25 April 2018, 20:29:07 »
Funktioniert bestens. Danke.

Offline Deckoffizier

  • Full Member
  • ***
  • Beiträge: 275
Antw:Notdienst Apotheke
« Antwort #5 am: 26 April 2018, 13:21:03 »
Hallo,

sieht schon fast gut aus, die Adresse wird richtig angezeigt aber die Telefonnummer leider von einer anderen Apotheke.
Kann mir bitte jemand einen Tipp zur Abhilfe geben.

Danke für die Umsetzung soweit und schön auf die Schnelle die richtige Apotheke zur Hand zu Haben.

Gruß
Hans-Jürgen
FHEM 5.8 auf "yakkaroo Emu A1FL.1" mit CUL 868MHz, SIGNALduino,1 Wire USB Busmaster, diverse 1 Wire Sensoren,Landroid

Offline knopf_piano

  • Full Member
  • ***
  • Beiträge: 332
Antw:Notdienst Apotheke
« Antwort #6 am: 26 April 2018, 18:20:09 »
in die regex muss ein \s damit das Leerzeichen gefunden wird:
Habe noch die Entfernung ergänzt

defmod NotdienstApotheke HTTPMOD <url> 0
attr NotdienstApotheke userattr reading01Name reading01Regex reading02Name reading02Regex reading03Name reading03Regex reading04Name reading04Regex reading05-1Name reading05-2Name reading05Name reading05Regex reading06Name reading06Regex
attr NotdienstApotheke alias Notdienst-Apotheke
attr NotdienstApotheke enableControlSet 1
attr NotdienstApotheke reading01Name NotName
attr NotdienstApotheke reading01Regex <div class="box_adress"><h2>([\sa-zA-ZäöüÄÖÜ0-9.&#;;_-]+)<\/h2><p class="distance">
attr NotdienstApotheke reading02Name NotdienstVon
attr NotdienstApotheke reading02Regex <p>Notdienst.*\n([\sa-zA-Z0-9.:&#;;_-]+)
attr NotdienstApotheke reading03Name NotdienstBis
attr NotdienstApotheke reading03Regex <span>([\sa-zA-Z0-9.:&#;;_-]+)<\/span>
attr NotdienstApotheke reading04Name NotdienstTelefon
attr NotdienstApotheke reading04Regex Tel.:.*\n([\s0-9.:&#;;_-]+)<br
attr NotdienstApotheke reading05Name NotdienstAdresse
attr NotdienstApotheke reading05Regex <p class="adress">([\sa-zA-Z0-9äöüÄÖÜ.&#;;_-]+)<br\/>([\s0-9a-zA-ZäöüÄÖÜ]+)
attr NotdienstApotheke reading06Name NotdienstEntfernung
attr NotdienstApotheke reading06Regex <p class="distance">Entfernung:.*\n([\sa-zA-Z0-9,]+)
attr NotdienstApotheke room test
attr NotdienstApotheke stateFormat NotName, NotdienstTelefon, NotdienstAdresse-1 in NotdienstAdresse-2, NotdienstEntfernung
attr NotdienstApotheke userReadings NotName NotdienstVon NotdienstBis NotdienstTelefon NotdienstAdresse NotdienstEntfernung

« Letzte Änderung: 26 April 2018, 19:05:33 von knopf_piano »
zotac nano, Bananapi-R1, fhem-trunk, hmlan, jeelink, zwave, tablet-ui,  pywws, raspi, yamaha-671, ufs910-titan
Gefällt mir Gefällt mir x 1 Liste anzeigen

Offline Deckoffizier

  • Full Member
  • ***
  • Beiträge: 275
Antw:Notdienst Apotheke
« Antwort #7 am: 27 April 2018, 08:37:50 »
Hallo knopf_piano,

habe Deinen geänderten Code soweit übernommen leider wird immer noch eine falsche Telefonnummer von einer anderen Apotheke
eingesetzt.

Was mir auffiel ist beim Codeimport sind nur jeweils ein Semikolon nach abspeichern,
anpassen hat aber auch nicht weiter etwas geändert am Problem der richtigen Telefonnummer Zuordnung.

Klappt es bei Euch wirklich richtig, irgendwie komisch wenn es nur bei mir nicht stimmig ist.

Gruß
Hans-Jürgen
FHEM 5.8 auf "yakkaroo Emu A1FL.1" mit CUL 868MHz, SIGNALduino,1 Wire USB Busmaster, diverse 1 Wire Sensoren,Landroid

Offline Vaddi

  • New Member
  • *
  • Beiträge: 44
Antw:Notdienst Apotheke
« Antwort #8 am: 27 April 2018, 08:51:29 »
Poste doch mal die von dir genutzte URL, dann kann
das jemand anderes mal testen und besser nachvollziehen.

Offline Deckoffizier

  • Full Member
  • ***
  • Beiträge: 275
Antw:Notdienst Apotheke
« Antwort #9 am: 27 April 2018, 13:11:14 »
Hallo,

hier mal die URL https://www.aponet.de/service/notdienstapotheke-finden/suchergebnis/0/17235.html 0

ergibt Notdienst-Apotheke
   
Apotheke am Markt, 03307 2207, Am Markt 9 in 17235 Neustrelitz, 1,87 km


Rückwärtssuche bringt für  03307 2207    Markt Apotheke Zehdenik Klosterstr. 1, 16792 Zehdenick

richtig wäre 03981 206522 für die Neustrelitzer Apotheke etwas verwundert bleibt ;)

Gruß
Hans-Jürgen
FHEM 5.8 auf "yakkaroo Emu A1FL.1" mit CUL 868MHz, SIGNALduino,1 Wire USB Busmaster, diverse 1 Wire Sensoren,Landroid

Offline Vaddi

  • New Member
  • *
  • Beiträge: 44
Antw:Notdienst Apotheke
« Antwort #10 am: 27 April 2018, 20:44:09 »
Hey, ersetze mal bitte
attr NotdienstApotheke reading04Regex Tel.:.*\n([\s0-9.:&#;;_-]+)<brdurch
attr NotdienstApotheke reading04Regex Tel.:.*\n([\s0-9.:&#;;_-]+)Dann sollte es funktionieren.

Offline Deckoffizier

  • Full Member
  • ***
  • Beiträge: 275
Antw:Notdienst Apotheke
« Antwort #11 am: 27 April 2018, 20:56:45 »
Hallo Vaddi,

Perfekt haut jetzt hin.

Danke für Deine Mühe!
Hatte schon mal den Fall und den Notdienst der Apotheke benötigt und jetzt wo der kleine Enkel da ist, schön die
Information schnell zur Hand zu haben.

Gruß
Hans-Jürgen
FHEM 5.8 auf "yakkaroo Emu A1FL.1" mit CUL 868MHz, SIGNALduino,1 Wire USB Busmaster, diverse 1 Wire Sensoren,Landroid

Offline Christoph Morrison

  • Developer
  • Full Member
  • ****
  • Beiträge: 266
    • Private Website
Antw:Notdienst Apotheke
« Antwort #12 am: 29 April 2018, 00:39:05 »
Ich hab mal ein paar der Regexp bei Regex101 getestet.

attr NotdienstApotheke reading01Regex <div class="box_adress"><h2>([\sa-zA-ZäöüÄÖÜ0-9.&#;;_-]+)<\/h2><p class="distance">

Könnte man durch <div class="box_adress"><h2>([^<]+)</h2><p class="distance"> vereinfachen. Gleicher Aufwand, aber kompakter zu lesen.

attr NotdienstApotheke reading05Regex <p class="adress">([\sa-zA-Z0-9äöüÄÖÜ.&#;;_-]+)<br\/>([\s0-9a-zA-ZäöüÄÖÜ]+)
Ich habe nur Adressen gefunden, in denen statt <br/> das Element <br> vorkam.

attr NotdienstApotheke reading06Regex <p class="distance">Entfernung:.*\n([\sa-zA-Z0-9,]+)Hier müsste <p class="distance">Entfernung:\s*(.*) reichen.

attr NotdienstApotheke reading04Regex Tel.:.*\n([\s0-9.:&#;;_-]+)<brMatcht auch nicht. Da kommt im Resultset von ApoNet </p> bei mir, kein <br
Mit Tel\.:\s*([\s0-9.:&#;;_-]+) funktioniert der bei mir aber ausreichend.


Aber Psst:
curl 'http://apothekenfinder.mobi/interface/json.php?device=web&source=not&search=33330' -H 'DNT: 1' -H 'Accept-Encoding: gzip, deflate' -H 'Accept-Language: de-DE,de;q=0.9,en-US;q=0.8,en;q=0.7,fr;q=0.6' -H 'User-Agent: whatever' -H 'Accept: */*' -H 'Referer: http://apothekenfinder.mobi/' -H 'X-Requested-With: XMLHttpRequest' -H 'Connection: keep-alive' --compressed
Und man bekommt eine JSON-kodierte Liste aller gerade aktuellen Notdienstapotheken um 33330 Gütersloh (durch eigene Daten ersetzen), ganz ohne nervige tag soup.

Aponet bezieht die Daten bei der Abda, sind also identisch.
Informativ Informativ x 1 Liste anzeigen

Offline Ronny1979

  • New Member
  • *
  • Beiträge: 7
Antw:Notdienst Apotheke
« Antwort #13 am: 29 April 2018, 10:02:01 »
Bei mir gehts jetzt auch, es fehle noch bei reading05Regex das "ß". Darum konnte er die Adresse nicht auslesen.

attr NotdienstApotheke reading05Regex <p class="adress">([\sa-zA-Z0-9äöüÄÖÜß.&#;;_-]+)<br\/>([\s0-9a-zA-ZäöüÄÖÜß]+)
Doch noch was in der Suche kam jetzt das:

<div class="box_adress premium_search_result"><h2><a href="service/apotheke/loewen-apotheke-04758.html">Löwen-Apotheke</a></h2><p class="distance">Entfernung: 1,89 km
Also ist das reading01Regex damit wieder hinfällig.
« Letzte Änderung: 29 April 2018, 11:47:43 von Ronny1979 »

Offline Michael

  • Full Member
  • ***
  • Beiträge: 424
  • Rechtschreibfehler dürfen Behalten werden!
Antw:Notdienst Apotheke
« Antwort #14 am: 29 April 2018, 13:41:42 »
Moin Vaddi

Vielen Dank hier für.

Hätte einen Vorschlag bzw brauche eure Hilfe.  :o
Ich habe leider keine Ahnung von Regex.

Ich würde gern das von Datum und Uhrzeit sowie
das bis Datum und Uhrzeit in einzelne Readings haben.

Nur ich schaffe es nicht.
Könnt Ihr mir helfen.
Gruß, Michael

FHEM 5.8 auf RPi 2
CUL V3 868 Mhz | JeeLink LaCrosse & PCA301
FS20 ST-2/3 | BMP085(180) | 14x TX29DTH-IT | 2x TX25IT/Helligkeitssensor | 5x PCA 301 | SMA Peripheries | MobileAlerts MA-10(100,200,251,410,650,660,800)

Offline Vaddi

  • New Member
  • *
  • Beiträge: 44
Antw:Notdienst Apotheke
« Antwort #15 am: 29 April 2018, 14:19:53 »
Hey, folgendes sollte funktionieren.
attr NotdienstApotheke reading06Name DatumVon
attr NotdienstApotheke reading06Regex <p>Notdienst\n.*vom([ 0-9.:&#;;_-]+)
attr NotdienstApotheke reading07Name UhrzeitVon
attr NotdienstApotheke reading07Regex <p>Notdienst\n.*vom.*um([ 0-9.:&#;;_-]+)
attr NotdienstApotheke reading08Name DatumBis
attr NotdienstApotheke reading08Regex <span>([ a-zA-Z0-9.:&#;;_-]+)um
attr NotdienstApotheke reading09Name UhrzeitBis
attr NotdienstApotheke reading09Regex <span>.*um([ 0-9:&#;;_-]+)

attr NotdienstApotheke userReadings NotName NotdienstVon NotdienstBis NotdienstTelefon NotdienstAdresse DatumVon UhrzeitVon DatumBis UhrzeitBis

Wie ich bereits erwähnt habe, bin ich absolut kein Profi in Sachen Regex, der von mir gepostete
Code darf also gerne verbessert werden ;)

Offline stefanpf

  • Jr. Member
  • **
  • Beiträge: 64
Antw:Notdienst Apotheke
« Antwort #16 am: 29 April 2018, 17:38:20 »

Und man bekommt eine JSON-kodierte Liste aller gerade aktuellen Notdienstapotheken um 33330 Gütersloh (durch eigene Daten ersetzen), ganz ohne nervige tag soup.
Besserwisser  ;)
Finde ich gut...Motivation hat ausgereicht sich tiefergehend mit Httpmod zu beschäftigen.

defmod NotdienstApotheke2 HTTPMOD http://apothekenfinder.mobi/interface/json.php?device=web&source=not&search=32361 0
attr NotdienstApotheke2 userattr get01Encode get01JSON get01Name get02ExtractAllJSON:0,1 getURL reading01Encode reading01JSON reading01Name reading02JSON reading02Name reading03JSON reading03Name reading04JSON reading04Name reading05JSON reading05Name reading06JSON reading06Name reading07JSON reading07Name reading07OExpr reading08JSON reading08Name reading08OExpr reading09JSON reading09Name reading10JSON reading10Name reading11JSON reading11Name readingEncode requestHeader requestHeader1 requestHeader2 requestHeader3 requestHeader4 requestHeader5 requestHeader6 requestHeader7
attr NotdienstApotheke2 enableControlSet 1
attr NotdienstApotheke2 reading01Encode UTF-8
attr NotdienstApotheke2 reading01JSON result_01_name
attr NotdienstApotheke2 reading01Name Name
attr NotdienstApotheke2 reading02JSON result_01_street
attr NotdienstApotheke2 reading02Name Strasse
attr NotdienstApotheke2 reading03JSON result_01_plz
attr NotdienstApotheke2 reading03Name Plz
attr NotdienstApotheke2 reading04JSON result_01_place
attr NotdienstApotheke2 reading04Name Ort
attr NotdienstApotheke2 reading05JSON result_01_number
attr NotdienstApotheke2 reading05Name Telefon
attr NotdienstApotheke2 reading06JSON result_01_fax
attr NotdienstApotheke2 reading06Name Telefax
attr NotdienstApotheke2 reading07JSON result_01_start
attr NotdienstApotheke2 reading07Name Beginn
attr NotdienstApotheke2 reading07OExpr strftime "%a %e.%m.%Y %H:%M", localtime($val)
attr NotdienstApotheke2 reading08JSON result_01_end
attr NotdienstApotheke2 reading08Name Ende
attr NotdienstApotheke2 reading08OExpr strftime "%a %e.%m.%Y %H:%M", localtime($val)
attr NotdienstApotheke2 reading09JSON result_01_lng
attr NotdienstApotheke2 reading09Name Längengrad
attr NotdienstApotheke2 reading10JSON result_01_lat
attr NotdienstApotheke2 reading10Name Breitengrad
attr NotdienstApotheke2 reading11JSON result_01_distance
attr NotdienstApotheke2 reading11Name Entfernung
attr NotdienstApotheke2 readingEncode UTF-8
attr NotdienstApotheke2 requestHeader2 Accept-Encoding: gzip, deflate
attr NotdienstApotheke2 requestHeader3 Accept-Language: de-DE,de;;q=0.9,en-US;;q=0.8,en;;q=0.7,fr;;q=0.6
attr NotdienstApotheke2 requestHeader4 User-Agent: Lynx/2.8.8dev.3 libwww-FM/2.14 SSL-MM/1.4.1
attr NotdienstApotheke2 requestHeader5 Referer: http://apothekenfinder.mobi/
attr NotdienstApotheke2 requestHeader6 X-Requested-With: XMLHttpRequest
attr NotdienstApotheke2 requestHeader7 Connection: keep-alive
attr NotdienstApotheke2 showBody 0
attr NotdienstApotheke2 stateFormat Name, Telefon, Strasse in Plz Ort
attr NotdienstApotheke2 verbose 0


Macht doch mit JSON mehr Spaß. 
Gefällt mir Gefällt mir x 2 Hilfreich Hilfreich x 1 Liste anzeigen

Offline MoneyBox76

  • New Member
  • *
  • Beiträge: 30
Antw:Notdienst Apotheke
« Antwort #17 am: 03 Mai 2018, 17:08:12 »
Bin Aufruf der URL: http://apothekenfinder.mobi/interface/json.php?device=web&source=not&search=32361 bekomme ich keine Daten zurück. ich gehe mal davon  aus, dass 32361 eine PLZ ist.

Ausgabe:
{"result":"","status":"0"}

Wie hast Du die URL herausgefunden?

Offline Christoph Morrison

  • Developer
  • Full Member
  • ****
  • Beiträge: 266
    • Private Website
Antw:Notdienst Apotheke
« Antwort #18 am: 03 Mai 2018, 19:37:22 »
Bin Aufruf der URL: http://apothekenfinder.mobi/interface/json.php?device=web&source=not&search=32361 bekomme ich keine Daten zurück. ich gehe mal davon  aus, dass 32361 eine PLZ ist.

Ausgabe:
{"result":"","status":"0"}

Wie hast Du die URL herausgefunden?

Über die Chrome Entwicklertools. Für apothekenfinder muss das so aussehen, als würde man einen XHR-Request machen, deshalb auch die anderen Header.

Offline Wolle02

  • Full Member
  • ***
  • Beiträge: 173
Antw:Notdienst Apotheke
« Antwort #19 am: 26 Mai 2018, 10:27:44 »
Hallo,

vielen Dank für den Codeschnipsel. Ich habe ihn bei mir erfolgreich eingebaut. Naja, erfolgreich heißt von der grundsätzlichen Funktionalität her; jedoch habe ich bei der Darstellung ein kleines Problem.

Wenn ich die eigentliche Website aufrufe bekomme ich für heute die Notdienstapotheken angezeigt, die ich als Apo_Bild1 angefügt habe.

In FHEM wird mir das Ergebnis aber wie im angefügten Apo_Bild2 angezeigt.

Das heißt die erste Notdienstapotheke wird mir als Name und Telefonnummer angezeigt, die Adresse stammt aber von der zweiten Notdienstapotheke

Ich habe schon versucht im Quelltext der Seite etwas zu finden, an dem ich einen Unterschied feststellen kann. Aber die HTML-Tags sind beides mal die gleichen:
<div class="search_results"><div class="box_search_pharmacy"><div class="box_result_abstract"><h2>Wir haben 19 Notdienstapotheken im Umkreis gefunden.</h2><form method="post" action="/service/notdienstapotheke-finden/suchergebnis/0/Stuttgart/Friedrich-Ebert-Str%2B19.html"><fieldset><label>Suche verfeinern:</label><select name="location_alternative"><option value="32f89a4d89b275a673b0a99119e4fc28">70191, Stuttgart&nbsp;Mönchhalde&nbsp;Friedrich-Ebert-Straße</option><option value="c64350a1790d48d34a25aa8afc818453">70191, Stuttgart&nbsp;Stuttgart-Nord&nbsp;Friedrich-Ebert-Straße</option><option value="b86126f34351bc81dc4a5a33e8a059ab">70191, Stuttgart&nbsp;Weißenhof&nbsp;Friedrich-Ebert-Straße</option></select><input class="refresh" type="submit" value="" id="submit_refresh_data"/></fieldset></form><ul class="search_date"><li class="enhanced"><a href="/service/notdienstapotheke-finden/erweiterte_suche.html">erweiterte Suche</a></li><li class="date"><span style="color:#E2001A;">Jetzt</span><a class="tomorrow" href="/service/notdienstapotheke-finden/suchergebnis/26.05.2018/Stuttgart/Friedrich-Ebert-Str%2B19.html" title="Notdienstbeginn am 26.05.2018">26.05.2018</a></li><li class="new_search"><a href="/service/notdienstapotheke-finden/neue_suche.html">neue Suche</a></li></ul><div class="clearer"></div></div><div class="box_result_list teaser_list"><div id="map_canvas"><p style="text-align: center; padding-top: 160px;">Damit die Übersichtskarte angezeigt werden kann, aktivieren Sie bitte Javascript in Ihrem Browser!</p></div><div class="box_category_switcher"><div class="line"></div><div class="clearer"></div></div><div class="box_adress"><h2>Anemonen-Apotheke</h2><p class="distance">Entfernung:
                    2,40 km
                </p><p>Notdienst
                    vom 26.05.2018 um 08:30 Uhr
                   
                    bis <span>27.05.2018 um 08:30 Uhr.</span></p><h3>Kontakt</h3><p class="adress">Haußmannstr. 136<br/>70188 Stuttgart<br/><a href="&#10;                            http://reiseauskunft.bahn.de/bin/query.exe/dn?Z=70188+Stuttgart+Hau%C3%9Fmannstr.+136&amp;ZADR=1&amp;dbkanal_004=L01_S01_D001_KPK0097_LZ01&#10;                    " target="_blank" title="mit Bus / Bahn erreichen"><img style="vertical-align: middle;width: 18px;display: inline;margin-right: 5px;" alt="mit Bus / Bahn erreichen" src="https://cd6.aponet.de/fileadmin/aponet/mobile/img/layout/DB_Logobox_4c_50.jpg"/>
                    mit Bus / Bahn erreichen
                    </a></p><p class="contact">Tel.:
                        0711 2623814<br/>Fax:
                        0711 2868337</p><div class="line"></div></div><div class="box_adress"><h2>Apotheke am Berliner Platz</h2><p class="distance">Entfernung:
                    2,55 km
                </p><p>Notdienst
                    vom 26.05.2018 um 08:30 Uhr
                   
                    bis <span>27.05.2018 um 08:30 Uhr.</span></p><h3>Kontakt</h3><p class="adress">Fritz-Elsas-Str. 51<br/>70174 Stuttgart<br/><a href="&#10;                            http://reiseauskunft.bahn.de/bin/query.exe/dn?Z=70174+Stuttgart+Fritz-Elsas-Str.+51&amp;ZADR=1&amp;dbkanal_004=L01_S01_D001_KPK0097_LZ01&#10;                    " target="_blank" title="mit Bus / Bahn erreichen"><img style="vertical-align: middle;width: 18px;display: inline;margin-right: 5px;" alt="mit Bus / Bahn erreichen" src="https://cd6.aponet.de/fileadmin/aponet/mobile/img/layout/DB_Logobox_4c_50.jpg"/>
                    mit Bus / Bahn erreichen
                    </a></p><p class="contact">Tel.:
                        0711 6153707<br/>Fax:
                        0711 6153762</p><div class="line"></div></div><div class="box_adress"><h2>Freiberg-Apotheke</h2><p class="distance">Entfernung:
                    5,13 km

Kann mir das eventuell jemand erklären und mir einen Tip geben, wie ich die Daten der ersten (mit der kürzesten Entfernung) Apotheke angezeigt bekomme?

Danke und Gruß
Wolle


Offline pwlr

  • Full Member
  • ***
  • Beiträge: 108
Antw:Notdienst Apotheke
« Antwort #20 am: 26 Mai 2018, 11:08:43 »
Moin,

eine gute Anwendung, habe ich sofort in den Test genommen ! Danke !

Zitat
Das heißt die erste Notdienstapotheke wird mir als Name und Telefonnummer angezeigt, die Adresse stammt aber von der zweiten Notdienstapotheke

Das Problem hatte ich gestern auch, allerdings war die Adresse von der 3. Apotheke aus der Liste. Heute ist wieder alles ok !
Komisch - was kann das sein ? Es gab ja ein paar Code-Updates und ich habe vielleicht etwas übersehen ???

Die Version mit JSON hat keine Probleme gehabt.

Moin
Bernd

Offline Vaddi

  • New Member
  • *
  • Beiträge: 44
Antw:Notdienst Apotheke
« Antwort #21 am: 26 Mai 2018, 11:33:09 »
Hallo zusammen.
Das er bei dir, Wolle02, die Adresse von der zweiten Apotheke nimmt, liegt an dem ß
im Straßennamen. Hatte ich wohl im meinem Codeschnipsel nicht berücksichtigt.
Um den Fehler zu beheben, bitte attr NotdienstApotheke reading05Regex ändern in:

attr NotdienstApotheke reading05Regex <p class="adress">([\sa-zA-Z0-9äöüÄÖÜß.&#;;_-]+)<br\/>([\s0-9a-zA-ZäöüÄÖÜ]+)
Dann sollte es funktionieren.

Offline Wolle02

  • Full Member
  • ***
  • Beiträge: 173
Antw:Notdienst Apotheke
« Antwort #22 am: 26 Mai 2018, 13:33:25 »
Hach, wenn man weiß wonach man suchen muss, kann es ja so einfach sein. Rückblickend betrachtet hätte ich da auch selber drauf kommen können.  ;D

Vielen Dank Vaddi. Der Vaddi ist halt der Beste  ;)

Gruß
Wolle

Offline Christoph Morrison

  • Developer
  • Full Member
  • ****
  • Beiträge: 266
    • Private Website
Antw:Notdienst Apotheke
« Antwort #23 am: 27 Mai 2018, 18:35:52 »
Nehmt wirklich lieber die JSON-Variante. Das Tag-Soup-Geparse ist doch nichts ordentliches.
Gefällt mir Gefällt mir x 2 Liste anzeigen

Offline Kusselin

  • Sr. Member
  • ****
  • Beiträge: 802
Antw:Notdienst Apotheke
« Antwort #24 am: 08 Juni 2018, 11:04:53 »
Servus Zusammen,

habe mal ein bissl rumgespielt und das auf meinem Testsystem installiert- funzt aber nicht so.
habe hier siesen Code von User stenapf genommen....die http adresse gegen meine getauscht:
defmod NotdienstApotheke2 HTTPMOD http://meine PLZ

attr NotdienstApotheke2 userattr get01Encode get01JSON get01Name get02ExtractAllJSON:0,1 getURL reading01Encode reading01JSON reading01Name reading02JSON reading02Name reading03JSON reading03Name reading04JSON reading04Name reading05JSON reading05Name reading06JSON reading06Name reading07JSON reading07Name reading07OExpr reading08JSON reading08Name reading08OExpr reading09JSON reading09Name reading10JSON reading10Name reading11JSON reading11Name readingEncode requestHeader requestHeader1 requestHeader2 requestHeader3 requestHeader4 requestHeader5 requestHeader6 requestHeader7
attr NotdienstApotheke2 enableControlSet 1
attr NotdienstApotheke2 reading01Encode UTF-8
attr NotdienstApotheke2 reading01JSON result_01_name
attr NotdienstApotheke2 reading01Name Name
attr NotdienstApotheke2 reading02JSON result_01_street
attr NotdienstApotheke2 reading02Name Strasse
attr NotdienstApotheke2 reading03JSON result_01_plz
attr NotdienstApotheke2 reading03Name Plz
attr NotdienstApotheke2 reading04JSON result_01_place
attr NotdienstApotheke2 reading04Name Ort
attr NotdienstApotheke2 reading05JSON result_01_number
attr NotdienstApotheke2 reading05Name Telefon
attr NotdienstApotheke2 reading06JSON result_01_fax
attr NotdienstApotheke2 reading06Name Telefax
attr NotdienstApotheke2 reading07JSON result_01_start
attr NotdienstApotheke2 reading07Name Beginn
attr NotdienstApotheke2 reading07OExpr strftime "%a %e.%m.%Y %H:%M", localtime($val)
attr NotdienstApotheke2 reading08JSON result_01_end
attr NotdienstApotheke2 reading08Name Ende
attr NotdienstApotheke2 reading08OExpr strftime "%a %e.%m.%Y %H:%M", localtime($val)
attr NotdienstApotheke2 reading09JSON result_01_lng
attr NotdienstApotheke2 reading09Name Längengrad
attr NotdienstApotheke2 reading10JSON result_01_lat
attr NotdienstApotheke2 reading10Name Breitengrad
attr NotdienstApotheke2 reading11JSON result_01_distance
attr NotdienstApotheke2 reading11Name Entfernung
attr NotdienstApotheke2 readingEncode UTF-8
attr NotdienstApotheke2 requestHeader2 Accept-Encoding: gzip, deflate
attr NotdienstApotheke2 requestHeader3 Accept-Language: de-DE,de;;q=0.9,en-US;;q=0.8,en;;q=0.7,fr;;q=0.6
attr NotdienstApotheke2 requestHeader4 User-Agent: Lynx/2.8.8dev.3 libwww-FM/2.14 SSL-MM/1.4.1
attr NotdienstApotheke2 requestHeader5 Referer: http://apothekenfinder.mobi/
attr NotdienstApotheke2 requestHeader6 X-Requested-With: XMLHttpRequest
attr NotdienstApotheke2 requestHeader7 Connection: keep-alive
attr NotdienstApotheke2 showBody 0
attr NotdienstApotheke2 stateFormat Name, Telefon, Strasse in Plz Ort
attr NotdienstApotheke2 verbose 0

nach einem reload bzw. neustert habe ich nur Name, Telefon, Strasse in Plz Ort als Anzeige...

habs mal mit PLZ probiert und auch nur mit Ortsnamen....

Gruss
hm-mod-rpi-pcb, CUL433, HM,

Offline JoWiemann

  • Tester
  • Hero Member
  • ****
  • Beiträge: 2398
Antw:Notdienst Apotheke
« Antwort #25 am: 08 Juni 2018, 13:13:25 »
Hm, warum anonymisierts Du die url? So können wir Dir nicht helfen.

Grüße Jörg


Gesendet von iPhone mit Tapatalk

Grüße Jörg
Jörg Wiemann

Slave: RPi B+ mit 512 MB, COC (868 MHz), CUL V3 (433.92MHz SlowRF); FHEMduino, Aktuelles FHEM

Master: CubieTruck; Debian; Aktuelles FHEM

Offline Kusselin

  • Sr. Member
  • ****
  • Beiträge: 802
Antw:Notdienst Apotheke
« Antwort #26 am: 08 Juni 2018, 14:08:49 »
Hallo Jo,

o.k. sorry..hier die URL:

https://www.aponet.de/service/notdienstapotheke-finden/suchergebnis/0/69493.html
Gruss
hm-mod-rpi-pcb, CUL433, HM,

Offline Vaddi

  • New Member
  • *
  • Beiträge: 44
Antw:Notdienst Apotheke
« Antwort #27 am: 08 Juni 2018, 17:19:19 »
Deine URL funktioniert so nicht, da sie kein JSON Format liefert.

So sollte deine Definition aussehen:
http://apothekenfinder.mobi/interface/json.php?device=web&source=not&search=69493 0

Offline Polamare

  • New Member
  • *
  • Beiträge: 10
Antw:Notdienst Apotheke
« Antwort #28 am: 08 Juni 2018, 18:06:14 »
Ist auf jeden Fall zu empfehlen.

Offline Kusselin

  • Sr. Member
  • ****
  • Beiträge: 802
Antw:Notdienst Apotheke
« Antwort #29 am: 09 Juni 2018, 19:21:38 »
Deine URL funktioniert so nicht, da sie kein JSON Format liefert.

So sollte deine Definition aussehen:
http://apothekenfinder.mobi/interface/json.php?device=web&source=not&search=69493 0

Danke Dir...so hats funktioniert !!
Gruss
hm-mod-rpi-pcb, CUL433, HM,

Offline WhyTea

  • Full Member
  • ***
  • Beiträge: 146
Antw:Notdienst Apotheke
« Antwort #30 am: 03 Juli 2018, 14:38:55 »
Hallo

Ich habe mal beide Varianten regex und json ausprobiert.
Beide funktionieren und das Ergebnis ist identisch.

Kann mir jemand die Vor- bzw. Nachteile der beiden Varainten erklären?
Welche wird den weiter gepflegt?

Gruß
Daniel

Offline Christoph Morrison

  • Developer
  • Full Member
  • ****
  • Beiträge: 266
    • Private Website
Antw:Notdienst Apotheke
« Antwort #31 am: 03 Juli 2018, 19:42:05 »
Kann mir jemand die Vor- bzw. Nachteile der beiden Varainten erklären?

Für dich als Endanwender ist die Version nur insofern wichtig, als dass die JSON-Version vermutlich langfristig zuverlässige Ergebnisse liefert. Allerdings können die auch morgen die JSON-API ändern und keiner wird es vermutlich mitbekommen, bis es irgendwo knallt.

Welche wird den weiter gepflegt?

Keine der Versionen ist ein offizielles Modul oder so, sondern nur ein Codesnippet und es gibt auch keinen Maintainer. Also gibt es darauf keine Antwort, die dir helfen würde.

 

decade-submarginal