Ассинхронная Python-библиотека с легким доступом к сервису МЭШ, написанная на aiohttp и async_playwright
Project description
aiomes
AIOMES - ассинхронная Python-библиотека, написанная на aiohttp и async_playwright, с легким доступом к сервису МЭШ
Примечание:
Библиотека может работать только с профилем ученика.
Установка:
pip install aiomes
playwright install
Оглавление методов библиотеки:
- Вход по логину / паролю
- Вход по токену
- Получение расписания
- Получение короткого расписания
- Получение каникулярного расписания
- Получение Д/З
- Получение оценок
- Получение итоговых оценок
- Получение прошлогодних итоговых оценок
- Получение инфо о школе
- Получению меню школьной столовой
- Получение посещаемости
- Получение уведомлений
- Получение рейтинга в классе
- Получение документов
- Получение списка предметов
Методы:
Авторизация по логину и паролю
from playwright.async_api import async_playwright
import asyncio
import aiomes
LOGIN = ...
PASSWORD = ...
async def main():
async with async_playwright() as p:
auth = await aiomes.AUTH(p)
token = await auth.obtain_token(LOGIN, PASSWORD)
if token == '2FA_NEEDED':
sms_code = str(input()) # Реализация вашей логики получения 2FA-кода
token = await auth.proceed_2fa(sms_code)
user = await aiomes.Client(token)
asyncio.run(main())
Авторизация по токену
import asyncio
import aiomes
TOKEN = ...
async def main():
user = await aiomes.Client(TOKEN)
asyncio.run(main())
Получение расписания
schedule = await user.get_schedule()
for subject in schedule:
print(f"{subject.name}, {subject.start_time} - {subject.end_time}, к. {subject.room_number}; {subject.marks}")
Получение короткого расписания
short_schedule = await user.get_schedule_short([today, today+timedelta(1), ...])
for subject in short_schedule:
print(f"{subject.name}, {subject.start_time} - {subject.end_time}")
Получение расписания каникул
periods_schedule = await user.get_periods_schedule()
for subject in periods_schedule:
print(f"{period.name}: {period.starts} — {period.ends}")
Получение домашнего задания
homework = await user.get_homeworks()
for hw in homework:
print(f"{hw.subject_name}: {hw.description}; {hw.attached_files}, {hw.attached_tests}")
Получение оценок за дату
marks = await user.get_marks()
for mark in marks:
print(f"{mark.subject_name}: {mark. value} [{mark.weight}] - {mark.reason}")
Получение оценок за период
period_marks = await user.get_period_marks(period_id=0) # [Первый период]
for per_mark in period_marks:
print(f"{per_mark.subject_name} - {per_mark.average_mark}; {per_mark.marks}")
Получение итог. оценок за прошлые года
past_marks = await user.get_past_final_marks(class_number=9) # [Номер класса]
for past_mark in past_marks:
print(f"{past_mark.subject_name} - {past_mark.final_mark}")
Получение информации о школе
school = await user.get_school_info()
print(school.name, school.address)
print(school.site, school.email)
print(school.principal)
Получение меню школьной столовой
today = date.today()
menu = await user.get_buffet_menu(today)
for item in menu:
print(item.name, item.full_name, item.price, item.is_available)
Получение посещаемости
today = date.today()
attendance = await user.get_visits(from_date=today - timedelta(7), to_date=today)
for day in attendance:
print(f"{day.visit_date}: {day.in_time}-{day.out_time}, {day.duration}")
Получение всех уведомлений
notifications = await user.get_notifications()
for n in notifications:
n_date = datetime.strftime(n.event_date, '%d/%m')
print(f'{n_date}, {n.event_name} [{n.mark_value}], [{n.hw_description}]')
Получение рейтинга в классе
today = date.today()
ranking = await user.get_class_rank(date_from=today - timedelta(7), date_to=today)
for day in ranking:
print(f"{day.rank_date}, {day.place}")
Получение документов ученика
docs = await user.get_docs()
for doc in docs:
print(f"{doc.type_id} / {doc.series}, {doc.number} / {doc.issuer}, {doc.issue_date}")
Получение списка предметов
subjects = await user.get_subjects()
print(", ".join(subjects))
[ Asyncronous Input Output Moscow Electronic School ]
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
aiomes-1.2.0.tar.gz
(11.0 kB
view hashes)
Built Distribution
aiomes-1.2.0-py3-none-any.whl
(10.1 kB
view hashes)