ruz-bot/helpers/ruz.py
Administrator 1e3e1d0589 separator
2023-04-03 00:47:39 +03:00

90 lines
2.6 KiB
Python

import datetime
import logging
from requests import get
import settings
from helpers import User
fields = [
'discipline',
'building',
'auditorium',
'date',
'beginLesson',
'endLesson',
'lecturer',
'url1'
]
class RUZ:
def find_person(self, user: User) -> dict | None:
if user.is_teacher:
person_type = "person"
else:
person_type = "student"
search_str = settings.RUZ_API + f"search?term={user.name}&type={person_type}"
try:
data = get(search_str)
except:
return None
if data.status_code == 200:
data = data.json()
for index, value in enumerate(data):
data[index]['description'] = value['description'].capitalize()
return data
return None
def get_schedule(self, user: User, begin_date: datetime.datetime, end_date: datetime.datetime):
start_date_str = begin_date.strftime("%Y.%m.%d")
end_date_str = end_date.strftime("%Y.%m.%d")
if user.is_teacher:
person_type = "person"
else:
person_type = "student"
search_str = settings.RUZ_API + f"schedule/{person_type}/{user.hse_id}?start={start_date_str}&finish={end_date_str}&lng=1"
try:
data = get(search_str)
except:
return None
if data.status_code != 200:
return None
try:
data = data.json()
except:
logging.info("Json ignored, data content is")
logging.info(data.content)
return None
formatted_data = [
{
field: element[field]
for field in fields
}
for element in data
]
return formatted_data
def schedule_builder(self, lessons: list[dict]) -> str:
ans = ""
last_date = None
for lesson in lessons:
date = lesson['begin'].strftime('%d.%m')
if date != last_date:
if last_date is not None:
ans += "====================\n\n"
last_date = date
ans += f"📅 {date}\n\n"
ans += f"📚 {lesson['discipline']}\n"
ans += f"🏢 {lesson['building']}, {lesson['auditorium']}\n"
ans += f"🕑 {lesson['begin'].strftime('%H:%M')} - {lesson['end'].strftime('%H:%M')}\n"
ans += f"👨‍🏫 {(lesson['lecturer'] or 'Неизвестно')}\n"
if lesson.get('link', None):
ans += f"🔗 {lesson['link']}\n"
ans += "\n"
return ans
ruz = RUZ()