MosLib (python)
Библиотека python для работы с mos.ru
Содержание
-
Содержание
-
О библиотеке
-
Функции
-
Примеры
О библиотеке
- Будет добавлено позже
- Установка
pip install git+https://hub.mos.ru/gataulin_vitaliy/moslib.git - Есть встроенный простой клиент для запуска
python -m moslibили
from moslib import client
client.run()
Функции
-
moslib(token)инициализация класса, возращает класс *(класс будет будет называтьсяapp) -
app.profпеременная с профилем:
Содержание
{
"profile": {
"last_name": "Фамилия",
"first_name": "Имя",
"middle_name": "Отчество",
"birth_date": "yyy-mm-dd",
"sex": "пол",
"user_id": 1234567,
"id": 12345,
"phone": "номер",
"email": "почта",
"snils": "номер снилса",
"type": "student"
},
"children": [
{
"last_name": "Фамилия",
"first_name": "Имя",
"middle_name": "Отчество",
"birth_date": "yyy-mm-dd",
"sex": "пол",
"user_id": 12345,
"id": 12345,
"phone": "номер",
"email": "почта",
"snils": "номер снилса",
"type": null,
"school": {
"id": 2,
"name": "название и описание",
"short_name": "ГБОУ Школа № 0000",
"county": "Северо-Западный административный округ",
"principal": "ФИО директора",
"phone": "номер школы",
"global_school_id": 0000,
"municipal_unit_name": null
},
"class_name": "12-Ы",
"class_level_id": 12,
"class_unit_id": 000000,
"age": 0,
"groups": [
{
"id": 000000,
"name": "Название",
"subject_id": 000000,
"is_fake": false
},
],
"representatives": [
{
"person_id": "номер",
"last_name": "Фамилия",
"first_name": "Имя",
"middle_name": "Отчество",
"type_id": 1,
"type": "Родитель",
"email": "почта",
"phone": "номер",
"snils": "снилс"
},
],
"sections": [
{
"id": 000000,
"name": "Название",
"subject_id": null,
"is_fake": false
},
],
"sudir_account_exists": false,
"sudir_login": null,
"is_legal_representative": false,
"parallel_curriculum_id": 827327,
"contingent_guid": "номер",
"enrollment_date": "yyyy-mm-dd",
"service_type_id": 2,
"profession_specialty_code": null,
"profession_specialty_name": null
}
],
"hash": "hash len64"
}
-
app.school.get_homeworks(from_data=None,to_data=None)from_data и to_data даты между которыми получить задания. Если отсутствует, получает с текущего 7 дней.
Содержание
[
{
"type": "oo",
"description": "Описание",
"comments": [],
"materials": [
{
"uuid": "ea1d1135-dcdb-3b32-a742-ea1d1135",
"type": " ",
"selected_mode": "learn",
"type_name": "Облако знаний",
"id": null,
"urls": [],
"description": null,
"content_type": null,
"title": "Название",
"action_id": 1,
"action_name": "Пройти"
},
{
"uuid": null,
"type": "attachments",
"selected_mode": null,
"type_name": "Прочее",
"id": 1234567890,
"urls": [
{
"url": "ссылка на файл",
"type": "file_link"
}
],
"description": null,
"content_type": null,
"title": "Заголовок ",
"action_id": 2,
"action_name": "Изучить"
}
],
"homework": "Задание",
"homework_entry_student_id": 123456,
"attachments": [],
"subject_id": 123456,
"group_id": 123456,
"date": "yyyy-mm-dd",
"date_assigned_on": "yyyy-mm-dd",
"subject_name": "Предмет",
"lesson_date_time": "yyyy-mm-ddThh:mm:ss",
"is_done": true,
"has_teacher_answer": false,
"homework_id": 123456789,
"homework_entry_id": 12345678,
"homework_created_at": "yyyy-mm-dd hh:mm:ss",
"homework_updated_at": "yyyy-mm-dd hh:mm:ss",
"written_answer": null,
"date_prepared_for": "yyyy-mm-ddThh:mm:ss"
},
]
-
app.school.get_marks(from_data=None,to_data=None)from_data и to_data даты между которыми получить оценки. Если отсутствует, получает с текущего 7 дней.
Содержание
[
{
"id": 1234567890,
"value": "5",
"values": [
{
"name": "5-балльная",
"nmax": 6.0,
"grade": {
"origin": "5",
"five": 5.0,
"ten": 10.0,
"hundred": 100.0
},
"grade_system_id": 123456789,
"grade_system_type": "five"
}
],
"comment": "Коментарий",
"weight": 1,
"point_date": null,
"control_form_name": "Тема оценки",
"comment_exists": true,
"created_at": "yyyy-mm-yyThh:mm:ss",
"updated_at": "yyyy-mm-yyThh:mm:ss",
"criteria": null,
"date": "yyyy-mm-dd",
"subject_name": "Предмет",
"subject_id": 123456789,
"has_files": false,
"is_point": false,
"is_exam": false,
"original_grade_system_type": "five"
}
]
Примеры
получение заданий
from moslib import moslib
from datetime import datetime
app=moslib("ТОКЕН")
homeworks = app.school.get_homeworks()
for i in homeworks:
print(f"Предмет: {i['subject_name']}")
print(f"Задание: {i['description']}")
print(f"Дата: {datetime.strptime(i['date_prepared_for'][:-9],"%Y-%m-%d").strftime("%d.%m.%Y")}")
if len(i["materials"])!=0:
for j in i["materials"]:
for h in j["urls"]:
if h["type"]=="file_link":
print(f"Ссылка: {h['url']}")
получение оценок за время
from moslib import moslib
from datetime import datetime
app=moslib("ТОКЕН")
marks = app.school.get_marks()
for i in marks:
print(f"Предмет: {i['subject_name']}")
print(f"Оценка: {i['value']} {f"({["weight"]})" if i["weight"]!=1 else ""}")
if i["comment"]:
print(f"Комментарий: {i['comment']}")
print(f"Дата: {datetime.strptime(i['date'],"%Y-%m-%d").strftime("%d.%m.%Y")}")
получение всех оценок
from moslib import moslib
app = moslib("ТОКЕН")
subjects_marks = app.school.get_all_marks()
for subject in subjects_marks:
print(f"📚 Предмет: {subject['subject_name']}")
for period in subject["periods"]:
print(f"📆 Период: {period["title"]}")
if len(period["marks"]) == 0:
print("Оценок нет")
else:
print(f"📝 Средняя оценка: {period['value']}")
print("📝 Оценки:", end=" ")
for i, mark in enumerate(period["marks"]):
value = mark['value']
weight = int(mark['weight'])
# Если вес равен 1, выводим обычную оценку
if weight == 1:
separator = "" if i == len(period["marks"]) - 1 else "; "
print(f"{value}{separator}", end="")
else:
# Иначе выводим оценку с маленькой цифрой внизу справа
subscript_digits = ["₀", "₁", "₂", "₃", "₄", "₅", "₆", "₇", "₈", "₉"]
small_digit = "".join(subscript_digits[int(d)] for d in str(weight))
separator = "" if i == len(period["marks"]) - 1 else "; "
print(f"{value}{small_digit}{separator}", end="")
print()
print()