Guest User

Untitled

a guest
May 5th, 2021
184
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.88 KB | None | 0 0
  1. import requests
  2. import json
  3. import time
  4. from datetime import datetime  
  5.  
  6. # ZMIEN TUTAJ
  7. # python minimalna wersja: 3.6
  8. # zainstalowana paczka requests (python -m pip install requests)
  9. # Tutaj poradnik od teekop jak znalesc cookie/csrf - https://www.wykop.pl/wpis/57267287/jak-znalezc-lepszy-termin-szczepienia-mimo-ze-jest/
  10. COOKIE = 'wklej tutaj cookie z headers' # powinno np tak wygladac 'patient_sid=b1541e35-60f0-46e9-8539-1c970d8782ad (w takim stylu)'
  11. CSRF = 'wklej tutaj csrf z headers' # powinno np tak wygladac '7df16c56-8269-4a11-11c4-fab0869a90c7' (w takim stylu)
  12. SKIEROWANIE = 'wklej tutaj swoje prescriptionId z preview' # id skierowania - 'eb44f331-111d-2cd-a111-495dd8d39406' - w takim stylu
  13. STARTING_DATE = '2021-05-06' # data poczatkowa
  14. END_DATE = '2021-05-30' # data koncowa
  15. # 1 jesli chcesz szukac danej szczepionki i 0 jesli nie chcesz.
  16. SZCZEPIONKI = {
  17.     "cov19.moderna" : 1,
  18.     "cov19.pfizer": 1,
  19.     "cov19.astra_zeneca": 0,
  20.     "cov19.johnson_and_johnson": 1
  21. }
  22. START_HOUR = '00:00' # godzina poczatkowa
  23. END_HOUR = '22:00' #godzina kokncowa
  24. JEDNOSTKA = '1261011'  # https://bdl.stat.gov.pl/BDL/dane/teryt/jednostka# Krakow - 1261011 Warszawa - 1431171 itd
  25. WOJEWODZTWO = JEDNOSTKA[0:2] # Bierze 2 pierwsze cyfry z jednostki np(Krakow) - 1261011 -> '12' -  // Warszawa 1431171 -> '14'
  26. ODSTEP_CZASU = 1 # w sekundach co ile ma szukac
  27.  
  28. # ---------------------------------------- NIE ZMIENIAJ TUTAJ
  29. HEADERS = {
  30.     'authority': 'pacjent.erejestracja.ezdrowie.gov.pl',
  31.     'pragma': 'no-cache',
  32.     'cache-control': 'no-cache',
  33.     'sec-ch-ua': '" Not A;Brand";v="99", "Chromium";v="90", "Google Chrome";v="90"',
  34.     'accept': 'application/json, text/plain, */*',
  35.     'x-csrf-token': CSRF,
  36.     'sec-ch-ua-mobile': '?0',
  37.     'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.93 Safari/537.36',
  38.     'content-type': 'application/json;charset=UTF-8',
  39.     'origin': 'https://pacjent.erejestracja.ezdrowie.gov.pl',
  40.     'sec-fetch-site': 'same-origin',
  41.     'sec-fetch-mode': 'cors',
  42.     'sec-fetch-dest': 'empty',
  43.     'referer': 'https://pacjent.erejestracja.ezdrowie.gov.pl/rezerwacja-wizyty',
  44.     'accept-language': 'pl,en-US;q=0.9,en;q=0.8,zh-CN;q=0.7,zh-HK;q=0.6,zh-TW;q=0.5,zh;q=0.4,pl-PL;q=0.3',
  45.     'cookie': COOKIE,
  46. }
  47.  
  48. def szukaj():
  49.     json = {
  50.         'dayRange': {'from': STARTING_DATE, 'to': END_DATE},
  51.         'geoId': JEDNOSTKA,
  52.         'hourRange': {'from': START_HOUR, 'to': END_HOUR},
  53.         'prescriptionId': SKIEROWANIE,
  54.         'voiId': WOJEWODZTWO,
  55.         'vaccineTypes': [sz for sz in SZCZEPIONKI if SZCZEPIONKI[sz] == 1]
  56.     }
  57.     r = requests.post('https://pacjent.erejestracja.ezdrowie.gov.pl/api/calendarSlots/find', headers=HEADERS, json=json)
  58.  
  59.     if r.status_code != 200:
  60.         print(r.status_code)
  61.         print(r.content)
  62.         print("cos poszlo nie tak, sprawdz dane / czy nadal jestes nadal zalogowany na stronie")
  63.         exit()
  64.  
  65.     szcz = [sz[6:] for sz in SZCZEPIONKI if SZCZEPIONKI[sz] == 1]  
  66.     print(f"{time.strftime('%H:%M:%S')} Szukam terminow od {STARTING_DATE} do {END_DATE} w godzinach {START_HOUR} - {END_HOUR} // Wybrane szczepionki: {'/'.join(szcz)}")
  67.     appointments = r.json()['list']
  68.     if len(appointments) == 0:
  69.         print(f"NIC NIE ZNALEZIONO")
  70.         time.sleep(ODSTEP_CZASU)
  71.         return
  72.    
  73.    
  74.     for a in appointments:
  75.         where = a['servicePoint']
  76.         data_szczepienia = datetime.strptime(a['startAt'], '%Y-%m-%dT%H:%M:%SZ')
  77.         data_szczepienia = data_szczepienia.strftime('%Y-%m-%d  %H:%M')
  78.         aktualna_godzina = time.strftime('%H:%M:%S')
  79.         print(f"{aktualna_godzina} {a['vaccineType'][6:]}  {data_szczepienia}  Miejsce: {where['name'][:50]} - {where['addressText']}")
  80.  
  81.     print(f"ODCZEKUJE {ODSTEP_CZASU}SEKUND PRZED KOLEJNYM WYSZUKANIEM\n\n\n")
  82.     time.sleep(ODSTEP_CZASU)
  83.  
  84. while True:
  85.     szukaj()
  86.  
Advertisement
Add Comment
Please, Sign In to add comment