TobseF / impf-bot

💉🤖 Bot for the German "ImpfterminService - 116117"
The Unlicense
151 stars 41 forks source link

Timeout für die Termin-Reservierung zurücksetzen? #77

Open error-empire opened 3 years ago

error-empire commented 3 years ago

Moin zusammen! Erst mal vielen Dank für die tolle Software! 👏 Ich konnte darüber schon für zwei Personen Termine buchen! 😀 Was mir allerdings schon öfter aufgefallen ist: Der Timeout für die Terminreservierung startet bei nachfolgenden Anfragen (also der zweiten, dritten, vierten, etc. Impfzentrumsanfrage) nicht neu bei 10m, sondern lässt den "alten" Timer runterzählen bis er bei 0 Sekunden angekommen ist und startet erst danach neu. Dadurch entsteht die Situation, dass Termine nur noch wenige Minuten oder unter Umständen sogar nur wenige Sekunden verfügbar sind.

Besteht die Möglichkeit dieses Verhalten anzupassen? Z.B. Durch eine Skriptanpassung (indem beispielsweise nach jeder Suchanfrage der Browser neu gestartet wird) oder evtl. durch eine Browser-Einstellung im Chrome?

Viele Grüße Timo

Ferrento commented 3 years ago

Ich habe mich das gleiche gefragt. Wenn ich manuell die Browserdaten lösche, dann beginnt der Timer wieder bei 10 Minuten. Durch googlen habe ich die folgenden Seiten gefunden:

Meine Idee war es die Browserdaten am Beginn der MainPage::open() Funktion zu löschen. https://github.com/TobseF/impf-bot/blob/master/src/main/kotlin/de/tfr/impf/page/MainPage.kt#L12 Der Funktionsaufruf driver.manage().deleteAllCookies() hat leider nichts gebracht. Und die alternativen Methoden die beschrieben werden habe ich nicht umgesetzt bekommen, da ich mich mit Kotlin und Webprogrammierung nicht auskenne. Vlt bekommt es ja jemand anderes hin die Browserdaten automatisiert zu löschen.

Aber die Software ist schon richtig gut. Vielen Dank dafür :)

schrotrf commented 3 years ago

Der Timer scheint nicht in den Cookies sondern in der Session Storage verankert zu sein. Es müsste eigentlich reichen etwa folgendes auszuführen:

var jsExecutor = driver as JavascriptExecutor;
jsExecutor.executeScript("sessionStorage.clear();")

Der Code müsste bspw. vor dem Thread.sleep am Ende der checkLocations Funktion in ReportJob.kt aufgenommen werden. Leider schaffe ich es nicht zeitnah einen PR anzulegen mit dem Change

h0nIg commented 3 years ago

https://github.com/TobseF/impf-bot/pull/88 sollte euer problem lösen, ihr könntet den reset dann anders für euch konfigurieren

h0nIg commented 3 years ago

IMHO der timer sagt nicht viel aus, ich bin mir unsicher ob das wirklich ein client seitiger check ist

image