Guest User

Untitled

a guest
May 5th, 2021
132
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. """
  7. python minimalna wersja: 3.6
  8. zainstalowana paczka requests
  9. Tutaj poradnik od teekop jak znalezc cookie/csrf itd - https://www.wykop.pl/wpis/57267287/jak-znalezc-lepszy-termin-szczepienia-mimo-ze-jest/
  10. """
  11.  
  12.  
  13. # ZMIEN TUTAJ
  14. # TECHNICZNE
  15. COOKIE = 'twoje cookie' # np 'patient_sid=b1341e35-60f0-46e9-8539-1c970d8782ad (w takim stylu)'
  16. CSRF = 'twoje csrf' # np '7df16c56-8269-4a11-11c4-fab0869a90c7' (w takim stylu)
  17. SKIEROWANIE = 'twoje skierowanie' # id skierowania - 'eb44f331-111d-2cd-a111-495dd8d39406' - w takim stylu
  18. # CO MA SZUKAC/GDZIE I KIEDY
  19. STARTING_DATE = '2021-05-06' # data poczatkowa
  20. END_DATE = '2021-05-30' # data koncowa
  21. SZCZEPIONKI = {
  22.     "cov19.moderna" : 1, # 1 znaczy ze bedzie szukac danej szczepionki, 0 ze nie
  23.     "cov19.pfizer": 1,
  24.     "cov19.astra_zeneca": 0,
  25.     "cov19.johnson_and_johnson": 1
  26. }
  27. START_HOUR = '00:00' # godzina poczatkowa
  28. END_HOUR = '22:00' #godzina kokncowa
  29. JEDNOSTKA = '1465011'  # https://bdl.stat.gov.pl/BDL/dane/teryt/jednostka# Krakow - 1261011 Warszawa - 1465011 itd
  30. WOJEWODZTWO = JEDNOSTKA[0:2] # Bierze 2 pierwsze cyfry z jednostki np(Krakow) - 1261011 -> '12' -  // Warszawa 1465011 -> '14'
  31. ODSTEP_CZASU = 1 # w sekundach co ile ma szukac
  32.  
  33.  
  34. #NIE ZMIENIAJ POD TA LINA JAK NIE WIESZ CO ROBISZ
  35. # ----------------------------------------
  36. # ----------------------------------------
  37. # ----------------------------------------
  38. HEADERS = {
  39.     'authority': 'pacjent.erejestracja.ezdrowie.gov.pl',
  40.     'pragma': 'no-cache',
  41.     'cache-control': 'no-cache',
  42.     'sec-ch-ua': '" Not A;Brand";v="99", "Chromium";v="90", "Google Chrome";v="90"',
  43.     'accept': 'application/json, text/plain, */*',
  44.     'x-csrf-token': CSRF,
  45.     'sec-ch-ua-mobile': '?0',
  46.     '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',
  47.     'content-type': 'application/json;charset=UTF-8',
  48.     'origin': 'https://pacjent.erejestracja.ezdrowie.gov.pl',
  49.     'sec-fetch-site': 'same-origin',
  50.     'sec-fetch-mode': 'cors',
  51.     'sec-fetch-dest': 'empty',
  52.     'referer': 'https://pacjent.erejestracja.ezdrowie.gov.pl/rezerwacja-wizyty',
  53.     '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',
  54.     'cookie': COOKIE,
  55. }
  56.  
  57. def szukaj():
  58.     json = {
  59.         'dayRange': {'from': STARTING_DATE, 'to': END_DATE},
  60.         'geoId': JEDNOSTKA,
  61.         'hourRange': {'from': START_HOUR, 'to': END_HOUR},
  62.         'prescriptionId': SKIEROWANIE,
  63.         'voiId': WOJEWODZTWO,
  64.         'vaccineTypes': [sz for sz in SZCZEPIONKI if SZCZEPIONKI[sz] == 1]
  65.     }
  66.     r = requests.post('https://pacjent.erejestracja.ezdrowie.gov.pl/api/calendarSlots/find', headers=HEADERS, json=json)
  67.  
  68.     if r.status_code != 200:
  69.         print(r.status_code)
  70.         print(r.content)
  71.         print("cos poszlo nie tak, sprawdz dane / czy nadal jestes nadal zalogowany na stronie")
  72.         exit()
  73.  
  74.     appointments = r.json()['list']
  75.     if len(appointments) == 0:
  76.         print(f"NIC NIE ZNALEZIONO")
  77.         time.sleep(ODSTEP_CZASU)
  78.         return
  79.     szcz = [sz[6:] for sz in SZCZEPIONKI if SZCZEPIONKI[sz] == 1]
  80.     print(f"Szukam terminow od {STARTING_DATE} do {END_DATE} w godzinach {START_HOUR} - {END_HOUR} // Wybrane szczepionki: {'/'.join(szcz)}")
  81.     for a in appointments:
  82.         where = a['servicePoint']
  83.         data_szczepienia = datetime.strptime(a['startAt'], '%Y-%m-%dT%H:%M:%SZ')
  84.         data_szczepienia = data_szczepienia.strftime('%Y-%m-%d  %H:%M')
  85.         aktualna_godzina = time.strftime('%H:%M:%S')
  86.         print(f"{aktualna_godzina} {a['vaccineType'][6:]}  {data_szczepienia}  Miejsce: {where['name'][:50]} - {where['addressText']}")
  87.  
  88.     print(f"ODCZEKUJE {ODSTEP_CZASU}SEKUND PRZED KOLEJNYM WYSZUKANIEM\n\n\n")
  89.     time.sleep(ODSTEP_CZASU)
  90.  
  91. while True:
  92.     szukaj()
  93.  
  94.  
Advertisement
Add Comment
Please, Sign In to add comment