Python библиотека для получения информации из школьного дневника bars.
- Установите библиотеку:
pip install bars-api python-dotenv- Создайте такую структуру:
your_project
├── .env
└── main.py- Скопируйте и запустите этот код:
.env
HOST="YOUR_HOST_HERE"
COOKIE="YOUR_COOKIE_HERE"
main.py
importasynciofromosimportgetenvfrombarsapiimportBarsAPIfromdotenvimportload_dotenv# Загружаем данные из .envload_dotenv()
# Host может быть получен здесь http://aggregator-obr.bars-open.ru/my_diaryHOST=getenv("HOST")
COOKIE=getenv("COOKIE")
asyncdefmain() ->None:
# Инициализируем объект API для взаимодействияasyncwithBarsAPI(HOST, COOKIE) asapi:
print(awaitapi.get_birthdays())
print(awaitapi.get_class_hours())
print(awaitapi.get_class_year_info())
print(awaitapi.get_events())
print(awaitapi.get_person_data())
print(awaitapi.get_school_info())
print(awaitapi.get_summary_marks())
print(awaitapi.get_total_marks())
if__name__=="__main__":
asyncio.run(main())Warning
Не забудьте заменить YOUR_HOST_HERE и YOUR_COOKIE_HERE на ваши данные.
YOUR_HOST_HERE можно получить тут, а для получения YOUR_COOKIE_HERE воспользуйтесь этим гайдом.
Доступные функции:
api.get_birthdays()
api.get_class_hours()
api.get_class_year_info()
api.get_events()
api.get_person_data()
api.get_school_info()
api.get_summary_marks()
api.get_total_marks()Данные о классе ученика:
{"study_level": 10,// Класс в котором учится пользователь"letter": "А",// Буква класса в котором учится пользователь"form_master": "Иванов Иван Иванович",// ФИО классного руководителя"form_master_photo": "noavatar_f_big.png",// Аватарка классного руководителя"form_master_male": true,// Пол классного руководителя (true - мужской, false - женский)"specialization": "нет",// ? Специализация"photo": "noavatar_big.gif",// Аватарка пользователя"pupils": [// Ученики (однокласники пользователя){"fullname": "Иванов Иван Иванович",// ФИО однокласника"photo": "",// Аватарка однокласника"male": true// Пол однокласника (true - мужской, false - женский)},
...
]}Данные о пользователе:
{"indicators": [// Средний балл по предметам{"name": "Средний балл (Алгебра)",// Название предмета"value": "3.10",// Оценка (дробное число)"css": "ico orange"// Цвет, которым отображается оценка (не совсем понятно зачем, проще на фронте цвет простым "if" расчитывать)},
...
],"children_persons": [],// Дети пользователя (пустой список т. к. авторизация произведена через аккаунт ребёнка)"selected_pupil_id": 777777,// Внутренний id выбранного ребёнка"selected_pupil_name": "Иванов Иван",// ФИО выбранного ребёнка"selected_pupil_ava_url": "noavatar_big.png",// Аватарка выбранного ребёнка"selected_pupil_school": "МБОУ \"СОШ № 1\"",// Школа выбранного ребёнка"selected_pupil_is_male": true,// Пол выбранного ребёнка"selected_pupil_classyear": "10 А",// Класс выбранного ребёнка"user_ava_url": "noavatar_big.png",// Аватарка пользователя"user_has_ava": false,// Аватарка выбранного ребёнка"user_fullname": "Иванов Иван Иванович",// "user_desc": "Ученик 10 А класса",// Описание пользователя"user_is_male": true,// Пол пользователя (true - мужской, false - женский)"phone": "",// номер телефона пользователя"phone_sms": "",// ? номер телефона для смс"auth_user_profile_id": 77777// Внутренний id пользователя}{"name": "МБОУ СОШ № 9\" г. Город Регион",// Название школы"address": "ул. Пушкина, д. ...",// Адрес школы"phone": "+7 (777) 777-77-77",// Номер телефона школы"site_url": "https://github.com/iamlostshe",// Ссылка на сайт школы"count_employees": 91,// ??"count_pupils": 2067,// Общее кол-во учеников в школе"photo": "/jrnwfkjq.jpg",// Ссылка на фото школы"email": "school1@gorod.region.ru",// Электронная почта школы"ustav": "",// ? Устав"employees": [{"group": "Педагогический состав",// ? Группа (ещё есть "Обслуживающий персонал")"fullname": "Иванов Иван Иванович",// ФИО"employer_jobs": [// Ставки"Классный руководитель","Учитель географии"],"category": "",// ? Категория"photo": "",// Ссылка на фото"male": true// Пол},
...
]}Сводка по оценкам:
{"subperiod": {// Текущий суб-период (зачем, непонятно...)"code": "Полугодие_2","name": "2 Полугодие"},"discipline_marks": [{"discipline": "История",// Название предмета"marks": [{"date": "2025-01-13",// Дата за которую поставлена оценка"mark": "5",// Оценка (целое число)"description": "Работа на уроке: нет темы"// Описание (никогда не видел другого)},
...
],"average_mark": "5.0"// Средний балл по этому предмету},
...
],"dates": ["2025-03-21"// ? Даты (зачем они тут, непонятно...)...]}