Skip to content

Python библиотека для получения информации из школьного дневника bars.

License

Notifications You must be signed in to change notification settings

iamlostshe/bars-api

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

16 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

bars-api

License: MIT wakatime

Python библиотека для получения информации из школьного дневника bars.

Содержание

Быстрый старт

  1. Установите библиотеку:
pip install bars-api python-dotenv
  1. Создайте такую структуру:
your_project
├── .env
└── main.py
  1. Скопируйте и запустите этот код:
  • .env
HOST="YOUR_HOST_HERE"
COOKIE="YOUR_COOKIE_HERE"
  • main.py
import asyncio
from os import getenv

from barsapi import BarsAPI
from dotenv import load_dotenv

# Загружаем данные из .env
load_dotenv()

# Host может быть получен здесь http://aggregator-obr.bars-open.ru/my_diary
HOST = getenv("HOST")
COOKIE = getenv("COOKIE")


async def main() -> None:
    # Инициализируем объект API для взаимодействия
    async with BarsAPI(HOST, COOKIE) as api:

        print(await api.get_birthdays())
        print(await api.get_class_hours())
        print(await api.get_class_year_info())
        print(await api.get_events())
        print(await api.get_person_data())
        print(await api.get_school_info())
        print(await api.get_summary_marks())
        print(await api.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()

get_class_year_info

Данные о классе ученика:

{
    "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 - женский)
        },
        ...
    ]
}

get_person_data

Данные о пользователе:

{
    "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 пользователя
}

get_school_info

{
    "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 // Пол
        },
        ...
    ]
}

get_summary_marks

Сводка по оценкам:

{
    "subperiod": { // Текущий суб-период (зачем, непонятно...)
        "code": "Полугодие_2",
        "name": "2 Полугодие"
    },
    "discipline_marks": [
        {
            "discipline": "История", // Название предмета
            "marks": [
                {
                    "date": "2025-01-13", // Дата за которую поставлена оценка
                    "mark": "5", // Оценка (целое число)
                    "description": "Работа на уроке: нет темы" // Описание (никогда не видел другого)
                },
                ...
            ],
            "average_mark": "5.0" // Средний балл по этому предмету
        },
        ...
    ],
    "dates": [
        "2025-03-21" // ? Даты (зачем они тут, непонятно...)
        ...
    ]
}

About

Python библиотека для получения информации из школьного дневника bars.

Resources

License

Stars

Watchers

Forks

Languages

  • Python 100.0%