+ Recoded entire codebase

+ Added proper README.md
This commit is contained in:
b267a 2025-08-02 22:37:17 +02:00
parent 302999189d
commit d1c02e5b62
8 changed files with 585 additions and 252 deletions

87
main.py
View file

@ -1,73 +1,34 @@
import requests
import urllib.parse
import os
from dotenv import load_dotenv
from auth.session import AnnySession
from booking.client import BookingClient
from utils.helpers import get_future_datetime
import assets.constants
def main():
load_dotenv('.env', override=True)
username = os.getenv("USERNAME")
password = os.getenv("PASSWORD")
class Bibliothek:
def __init__(self):
self.session = requests.Session()
if not username or not password:
print("❌ Missing USERNAME or PASSWORD in .env")
return
self.session.headers = {
'accept': 'application/vnd.api+json',
'accept-encoding': 'gzip, deflate, br, zstd',
'accept-language': 'de',
'content-type': 'text/html; charset=utf-8',
'origin': 'https://anny.eu',
'referer': 'https://anny.eu/',
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:140.0) Gecko/20100101 Firefox/140.0'
}
session = AnnySession(username, password)
cookies = session.login()
def login(self):
load_dotenv()
username = os.getenv('USERNAME')
password = os.getenv('PASSWORD')
login = KIT(username, password)
if not cookies:
return
self.session.headers['authorization'] = ("Bearer " + TOKEN).encode('utf-8')
booking = BookingClient(cookies)
start = get_future_datetime(hour="13:00:00")
end = get_future_datetime(hour="18:00:00")
def get_intervals(self, ressource_id, date):
resource_id = booking.find_available_resource(start, end)
r = self.session.get(
'https://b.anny.eu/api/v1/intervals/start',
params={
'date': date,
'service_id[449]': 1,
'ressource_id': ressource_id,
'timezone': assets.constants.TIMEZONE
}
)
return r.json()
if resource_id:
booking.reserve(resource_id, start, end)
else:
print("⚠️ No available slots found.")
def calculate_all_available_slots(self, ressource_id, date):
slot_list = self.get_intervals(ressource_id, date)
for slot in slot_list:
message = slot['start_date'] + " - " + str(slot['number_available'])
print(message)
def get_children(self, ressource = '1-lehrbuchsammlung-eg-und-1-og'):
r = self.session.get(
'https://b.anny.eu/api/v1/resources/' + ressource + '/children',
params={
'page[number]': 1,
'page[size]': 1000,
'filter[available_from]': '2025-07-10T00:00:00+02:00',
# 'filter[availability_exact_match]': 0,
'filter[exclude_hidden]': 0,
'filter[exclude_child_resources]': 0,
'filter[availability_service_id]': 449,
'filter[include_unavailable]': 1,
'sort': 'name',
}
)
return r.json()
if __name__ == '__main__':
bibliothek = Bibliothek()
print(bibliothek.get_children())
if __name__ == "__main__":
main()