Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import requests
- import json
- import time
- from datetime import datetime
- # ZMIEN TUTAJ
- # python minimalna wersja: 3.6
- # zainstalowana paczka requests (python -m pip install requests)
- # Tutaj poradnik od teekop jak znalesc cookie/csrf - https://www.wykop.pl/wpis/57267287/jak-znalezc-lepszy-termin-szczepienia-mimo-ze-jest/
- COOKIE = 'wklej tutaj cookie z headers' # powinno np tak wygladac 'patient_sid=b1541e35-60f0-46e9-8539-1c970d8782ad (w takim stylu)'
- CSRF = 'wklej tutaj csrf z headers' # powinno np tak wygladac '7df16c56-8269-4a11-11c4-fab0869a90c7' (w takim stylu)
- SKIEROWANIE = 'wklej tutaj swoje prescriptionId z preview' # id skierowania - 'eb44f331-111d-2cd-a111-495dd8d39406' - w takim stylu
- STARTING_DATE = '2021-05-06' # data poczatkowa
- END_DATE = '2021-05-30' # data koncowa
- # 1 jesli chcesz szukac danej szczepionki i 0 jesli nie chcesz.
- SZCZEPIONKI = {
- "cov19.moderna" : 1,
- "cov19.pfizer": 1,
- "cov19.astra_zeneca": 0,
- "cov19.johnson_and_johnson": 1
- }
- START_HOUR = '00:00' # godzina poczatkowa
- END_HOUR = '22:00' #godzina kokncowa
- JEDNOSTKA = '1261011' # https://bdl.stat.gov.pl/BDL/dane/teryt/jednostka# Krakow - 1261011 Warszawa - 1431171 itd
- WOJEWODZTWO = JEDNOSTKA[0:2] # Bierze 2 pierwsze cyfry z jednostki np(Krakow) - 1261011 -> '12' - // Warszawa 1431171 -> '14'
- ODSTEP_CZASU = 1 # w sekundach co ile ma szukac
- # ---------------------------------------- NIE ZMIENIAJ TUTAJ
- HEADERS = {
- 'authority': 'pacjent.erejestracja.ezdrowie.gov.pl',
- 'pragma': 'no-cache',
- 'cache-control': 'no-cache',
- 'sec-ch-ua': '" Not A;Brand";v="99", "Chromium";v="90", "Google Chrome";v="90"',
- 'accept': 'application/json, text/plain, */*',
- 'x-csrf-token': CSRF,
- 'sec-ch-ua-mobile': '?0',
- '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',
- 'content-type': 'application/json;charset=UTF-8',
- 'origin': 'https://pacjent.erejestracja.ezdrowie.gov.pl',
- 'sec-fetch-site': 'same-origin',
- 'sec-fetch-mode': 'cors',
- 'sec-fetch-dest': 'empty',
- 'referer': 'https://pacjent.erejestracja.ezdrowie.gov.pl/rezerwacja-wizyty',
- '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',
- 'cookie': COOKIE,
- }
- def szukaj():
- json = {
- 'dayRange': {'from': STARTING_DATE, 'to': END_DATE},
- 'geoId': JEDNOSTKA,
- 'hourRange': {'from': START_HOUR, 'to': END_HOUR},
- 'prescriptionId': SKIEROWANIE,
- 'voiId': WOJEWODZTWO,
- 'vaccineTypes': [sz for sz in SZCZEPIONKI if SZCZEPIONKI[sz] == 1]
- }
- r = requests.post('https://pacjent.erejestracja.ezdrowie.gov.pl/api/calendarSlots/find', headers=HEADERS, json=json)
- if r.status_code != 200:
- print(r.status_code)
- print(r.content)
- print("cos poszlo nie tak, sprawdz dane / czy nadal jestes nadal zalogowany na stronie")
- exit()
- szcz = [sz[6:] for sz in SZCZEPIONKI if SZCZEPIONKI[sz] == 1]
- 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)}")
- appointments = r.json()['list']
- if len(appointments) == 0:
- print(f"NIC NIE ZNALEZIONO")
- time.sleep(ODSTEP_CZASU)
- return
- for a in appointments:
- where = a['servicePoint']
- data_szczepienia = datetime.strptime(a['startAt'], '%Y-%m-%dT%H:%M:%SZ')
- data_szczepienia = data_szczepienia.strftime('%Y-%m-%d %H:%M')
- aktualna_godzina = time.strftime('%H:%M:%S')
- print(f"{aktualna_godzina} {a['vaccineType'][6:]} {data_szczepienia} Miejsce: {where['name'][:50]} - {where['addressText']}")
- print(f"ODCZEKUJE {ODSTEP_CZASU}SEKUND PRZED KOLEJNYM WYSZUKANIEM\n\n\n")
- time.sleep(ODSTEP_CZASU)
- while True:
- szukaj()
Advertisement
Add Comment
Please, Sign In to add comment