Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

kesha1225/DnevnikRuAPI

Open more actions menu

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

93 Commits
93 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Version Python 3.13+ code-style ШУЕ-ППШ The Unlicense

api.dnevnik.ru wrapper

Упрощение работы с api всероссийского электронного дневника как с токеном, так и без него.

⚙️ Установка

pip install pydnevnikruapi

или

pip install https://github.com/kesha1225/DnevnikRuAPI/archive/master.zip --upgrade

ℹ️ Документация

По методам API - https://api.dnevnik.ru/partners/swagger/ui/index

Caution

Некоторые методы могут быть недоступны, ниже представлен список поддерживаемых эндпоинтов.

Note

Библиотека поддерживает только асинхронное использование (async/await).

Пример использования

Получение домашнего задания на указанный период

import aiohttp
from pydnevnikruapi import AsyncDiaryAPI
import asyncio
from datetime import datetime


async def get_dn_info():
    async with aiohttp.ClientSession() as session:
        dn = AsyncDiaryAPI(session=session, login="login", password="password")
        await dn.set_token()

        homework = await dn.get_school_homework(
            1000002283077, 
            datetime(2019, 9, 5).isoformat(), 
            datetime(2019, 9, 15).isoformat()
        )
        print(homework)
        
        edu_groups = await dn.get_edu_groups()
        print(edu_groups)


if __name__ == "__main__":
    asyncio.run(get_dn_info())

Использование с токеном

import aiohttp
from pydnevnikruapi import AsyncDiaryAPI
import asyncio


async def main():
    async with aiohttp.ClientSession() as session:
        # Используем существующий токен
        dn = AsyncDiaryAPI(session=session, token="your_token_here")
        
        user_info = await dn.get_info()
        print(user_info)


if __name__ == "__main__":
    asyncio.run(main())

Пример использования неописанного метода

Если нужного метода нет в библиотеке, но он есть в документации API:

import asyncio
import aiohttp
from pydnevnikruapi import AsyncDiaryAPI


async def main():
    async with aiohttp.ClientSession() as session:
        dn = AsyncDiaryAPI(session=session, login="login", password="password")
        await dn.set_token()

        # Прямое использование API методов
        user_info = await dn.get("users/me")
        print(user_info)
        
        # POST запрос (пример)
        lesson_log = await dn.post(
            "lessons/123/log-entries",
            data={"lessonLogEntry": "data"},
        )
        print(lesson_log)


if __name__ == "__main__":
    asyncio.run(main())

🗒️ Список поддерживаемых API эндпоинтов, а также их соотношение с функциями

  • /v2.0/users/me/organizations - get_organizations() - Список идентификаторов организаций текущего пользователя

  • /v2.0/users/me/organizations/{organizationId} - get_organization_info(organization_id: int) - Данные указанной организации пользователя

  • /v2.0/authorizations - get_token(login, password) - Обменять код доступа на токен

  • /v2.0/persons/{person}/reporting-periods/{period}/avg-mark - get_person_average_marks(person: int, period: int) - Оценки персоны за отчетный период

  • /v2.0/edu-groups/{group}/reporting-periods/{period}/avg-marks/{date} - get_group_average_marks_by_date( group_id: int, period: int, date: datetime.datetime) - Оценки учебной группы по предмету за отчетный период до определенной даты

  • /v2.0/edu-groups/{group}/avg-marks/{from}/{to} - get_group_average_marks_by_time(group_id: int, start_time: datetime.datetime, end_time: datetime.datetime) - Оценки учебной группы за период

  • /v2.0/user/{userID}/children - get_user_children(user_id: int) - Получение списка детей по идентификатору родительского пользователя

  • /v2.0/person/{personID}/children - get_person_children(person_id: int) - Получение списка детей по идентификатору родительской персоны

  • /v2.0/users/me/classmates - get_classmates() - Список id пользователей одноклассников текущего пользователя, если он является учеником, либо список активных участников образовательных групп пользователя во всех остальных случаях

  • /v2.0/users/me/context - get_context() - Получение контекстной информации по пользователю

  • /v2.0/users/{userId}/context - get_user_context(user_id: int) - Получение контекстной информации по пользователю

  • /v2.0/edu-group/{group}/subject/{subject}/period/{period}/criteria-marks-sections - func - Метод получения списка секций СОр + СОч для класса по предмету в выбранном периоде c соответствующей информацией

  • /v2.0/edu-group/{group}/person/{person}/subject/{subject}/period/{period}/criteria-marks - func - Метод получения суммативных оценок (СОр, СОч) ученика класса по предмету за период, с привязкой к конкретной теме/суммативной оценки четверти

  • /v2.0/edu-group/{group}/period/{period}/criteria-marks - func - Метод получения списка оценок (СОр, СОч) класса сгруппированные по ученикам и предметам за период (т.е. оценки каждого ученика класса, разбитые по предметам)

  • /v2.0/edu-group/{group}/subject/{subject}/period/{period}/criteria-marks - func - Метод получения всех оценок (СОр и СОч) класса (группировка по ученикам) за период по выбранному предмету

  • /v2.0/edu-group/{group}/criteria-marks-totals - get_final_group_marks(group_id: int) - Метод, позволяющий получить итоговые оценки всего класса (каждого ученика) по всем предметам

  • /v2.0/edu-group/{group}/subject/{subject}/criteria-marks-totals - get_final_group_marks_by_subject(group_id: int, subject_id: int) - Метод, позволяющий получить итоговые оценки всего класса по указанному предмету

  • /v2.0/edu-group/{group}/criteriajournalsection/{section}/criteria-marks - func - Метод полученипя списка суммативных оценок класса за конкретную тему (СОр или СОч по section_id параметру, который является связывающим звеном для оценок одной темы)

  • /v2.0/edu-group/{group}/criteriajournalsection/{section}/criteria-marks-totals - func - Метод полученипя списка итоговых суммативных оценок класса за конкретную тему (СОр или СОч по section_id параметру, который является связывающим звеном для сумативной оценки за четверть)

  • /v2.0/users/{user}/school-memberships - get_user_memberships(user_id: int) - Список участий в школах для произвольного пользователя

  • /v2.0/users/{user}/education - get_user_education(user_id: int) - Список участий в школах для произвольного пользователя

  • /v2.0/persons/{person}/school-memberships - get_person_memberships(person_id: int) - Список участий в школах для произвольной персоны

  • /v2.0/users/me/schools - get_schools() - Список идентификаторов школ текущего пользователя

  • /v2.0/users/{user}/schools - get_user_schools(user_id: int) - Список идентификаторов школ произвольного пользователя

  • /v2.0/users/me/edu-groups - get_edu_groups() - Список идентификаторов классов текущего пользователя

  • /v2.0/users/{user}/edu-groups - get_user_edu_groups(user_id: int) - Список идентификаторов классов текущего пользователя

  • /v2.0/users/me/school-memberships - get_memberships() - Список участий в школах для текущего пользователя

  • /v2.0/edu-groups/{eduGroup} - get_group_info(edu_group_id: int) - Класс или учебная группа

  • /v2.0/edu-groups - get_groups_info(edu_groups_list: list) - Список учебных групп

  • /v2.0/schools/{school}/edu-groups - get_school_groups(school_id: int) - Список классов в школе

  • /v2.0/persons/{person}/edu-groups - get_person_groups(person_id: int) - Учебные группы персоны

  • /v2.0/persons/{person}/edu-groups/all - get_person_groups_all(person_id: int) - 123

  • /v2.0/persons/{person}/schools/{school}/edu-groups - get_person_school_groups(person_id: int, school_id: int) - Учебные группы персоны в школе

  • /v2.0/edu-groups/{group}/persons - get_groups_pupils(edu_group_id: int) - Список учеников учебной группы

  • /v2.0/edu-groups/students - get_students_groups_list() - Список групп с учениками

  • /v2.0/edu-groups/{groupId}/parallel - get_groups_parallel(group_id: int) - Список параллельных групп(включая группу указанную в параметрах)

  • /authorizations/esia/v2.0/users/linked - func - 123

  • /authorizations/esia/v2.0 - func - 123

  • /v2.0/files/async/upload - func - Метод загрузки файла. Файл будет загружен в первую папку привязанной к приложению сети. При загрузке файла обязательно надо передать заголовки Content-Type: multipart/form-data с соотвествующим boundary и верный Content-Length.

  • /v2.0/folder/{folderId}/files/async/upload - func - Метод для загрузки файла в папку. При загрузке файла обязательно надо передать заголовки Content-Type: multipart/form-data с соотвествующим boundary и верный Content-Length.

  • /v2.0/files/async/upload/base64 - func - Метод загрузки файла в формате строки base64. При загрузке файла обязательно надо передать заголовки Content-Type: application/json, а бинарные данные файла передать в теле запроса. Файл будет загружен в первую папку привязанной к приложению сети.

  • /v2.0/files/async/upload/{taskId} - func - Метод получения загруженного файла.

  • /v2.0/files/{fileId}/repost - func - Репост файла

  • /v2.0/folder/{folderId}/files - func - Получение файлов в папке

  • /v2.0/apps/current/files - func - Получение файлов приложения

  • /v2.0/files/{fileId}/like - func - Увеличения количества лайков/голосов на единицу

  • /v2.0/edu-groups/{group}/final-marks - get_group_marks(group_id: int) - Оценки в учебной группе

  • /v2.0/persons/{person}/edu-groups/{group}/final-marks - get_person_group_marks(person_id: int, group_id: int) - Оценки персоны в учебной группе

  • /v2.0/persons/{person}/edu-groups/{group}/allfinalmarks - get_person_group_marks_final(person_id: int, group_id: int) - Итоговые оценки персоны в учебной группе

  • /v2.0/edu-groups/{group}/subjects/{subject}/final-marks - get_group_subject_final_marks(group_id: int, subject_id: int) - Оценки по предмету в учебной группе

  • /v2.0/users/me/friends - get_friends() - Список id пользователей друзей текущего пользователя

  • /v2.0/users/{user}/friends - get_user_friends(user_id: int) - Список id пользователей друзей конкретного пользователя по его id

  • /v2.0/users/me/school/{school}/homeworks - def get_school_homework(school_id: int, start_time: datetime.datetime, end_time: datetime.datetime): - Получить домашние задания пользователя за период времени

  • /v2.0/users/me/school/homeworks - get_homework_by_id(homework_id: int) - Получить домашние задания по идентификаторам

  • /v2.0/persons/{person}/school/{school}/homeworks - get_person_homework(school_id: int,person_id: int, start_time: datetime.datetime, end_time: datetime.datetime): - Получить домашние задания обучающегося за период времени

  • /v2.0/works/{workId}/test - func - Прикрепить тест к дз

  • /v2.0/lessons/{lesson}/log-entries - delete_lesson_log(lesson_id: int, person_id: int) - Список отметок о посещаемости на уроке

  • /v2.0/lesson-log-entries - get_lesson_logs(lessons_ids: list) - Список отметок о посещаемости на нескольких уроках

  • /v2.0/lesson-log-entries/lesson/{lesson}/person/{person} - get_person_lesson_log(person_id: int, lesson_id: int) - Отметка о посещаемости ученика на уроке

  • /v2.0/lesson-log-entries/group/{eduGroup} - get_group_lesson_log(group_id: int, subject_id: int, start_time: datetime.datetime, end_time: datetime.datetime) - Список отметок о посещаемости на уроках по заданному предмету в классе за интервал времени

  • /v2.0/lesson-log-entries/person/{personID}/subject/{subjectID} - func - Список отметок о посещаемости обучающегося по предмету за интервал времени

  • /v2.0/lesson-log-entries/person={personID}&subject={subjectID}&from={from}&to={to} - get_person_subject_lesson_log(person_id: int,subject_id: int,start_time: datetime.datetime,end_time: datetime.datetime) - Список отметок о посещаемости обучающегося по предмету за интервал времени

  • /v2.0/persons/{person}/lesson-log-entries - get_person_lesson_logs(person_id: int, start_time: datetime.datetime, end_time: datetime.datetime) - Список отметок о посещаемости обучающегося за интервал времени

  • /v2.0/lesson-log-entries/statuses - get_lesson_log_statuses() - Получить список возможных отметок о посещаемости. Пример ответа - ["Attend","Absent","Ill","Late","Pass"].

  • /v2.0/lessons/{lesson} - get_lesson_info(lesson_id: int) - Получить урок с заданным id

  • /v2.0/lessons/many - get_many_lessons_info(lessons_list: list) - Получение списка уроков по списку id

  • /v2.0/edu-groups/{group}/lessons/{from}/{to} - get_group_lessons_info(group_id: int, start_time: datetime.datetime, end_time: datetime.datetime) - Уроки группы за период

  • /v2.0/edu-groups/{group}/subjects/{subject}/lessons/{from}/{to} - get_group_lessons_info(group_id: int, start_time: datetime.datetime, end_time: datetime.datetime) - Уроки группы по предмету за период

  • /v2.0/works/{workID}/marks/histogram - get_marks_histogram(work_id: int) - Получение деперсонализированной гистограмы оценок всего класса по идентификатору работы

  • /v2.0/periods/{periodID}/subjects/{subjectID}/groups/{groupID}/marks/histogram - get_subject_marks_histogram(group_id: int, period_id: int, subject_id: int) - Получение деперсонализированной гистограмы оценок всего класса за отчетный период

  • /v2.0/marks/{mark} - get_mark_by_id(mark_id: int) - Оценка

  • /v2.0/works/{work}/marks - get_marks_by_work(work_id: int) - Список оценок за работу на уроке

  • /v2.0/lessons/{lesson}/marks - get_marks_by_lesson(lesson_id: int) - Оценки на уроке

  • /v2.0/lessons/marks - get_marks_by_lessons(lessons_ids: list) - Список оценок за несколько уроков

  • /v2.0/lessons/many/marks - func - Список оценок за несколько уроков

  • /v2.0/edu-groups/{group}/marks/{from}/{to} - get_group_marks_period(group_id: int,start_time: datetime.datetime, end_time: datetime.datetime) - Оценки учебной группы за период

  • /v2.0/edu-groups/{group}/subjects/{subject}/marks/{from}/{to} - get_group_subject_marks(group_id: int, subject_id: int, start_time: datetime.datetime, end_time: datetime.datetime) - Оценки учебной группы по предмету за период

  • /v2.0/persons/{person}/schools/{school}/marks/{from}/{to} - get_person_marks(person_id: int, school_id: int, start_time: datetime.datetime, end_time: datetime.datetime) - Оценки персоны в школе за период

  • /v2.0/persons/{person}/edu-groups/{group}/marks/{from}/{to} - func - Оценки персоны в учебной группе за период

  • /v2.0/persons/{person}/lessons/{lesson}/marks - get_person_lessons_marks(person_id: int, lesson_id: int) - Оценки персоны за урок

  • /v2.0/persons/{person}/works/{work}/marks - get_person_work_marks(person_id: int, work_id: int) - Оценки персоны за работу

  • /v2.0/persons/{person}/subjects/{subject}/marks/{from}/{to} - get_person_subject_marks(person_id: int, subject_id: int, start_time: datetime.datetime, end_time: datetime.datetime) - Оценки персоны по предмету за период

  • /v2.0/persons/{person}/subject-groups/{subjectgroup}/marks/{from}/{to} - func - Оценки персоны по предмету за период

  • /v2.0/lessons/{date}/persons/{person}/marks - func - Оценки персоны по дате урока

  • /v2.0/persons/{person}/marks/{date} - get_marks_by_date(person_id: int, date: datetime.datetime) - Оценки персоны по дате выставления оценки

  • /v2.0/persons/{personId}/works/{workId}/mark - get_person_work_marks(person_id: int, work_id: int) - Выставить оценку ученику по работе

  • /v2.0/marks/values - get_marks_values() - Метод возвращает все поддерживаемые системы (типы) оценок и все возможные оценки в каждой из систем.

  • /v2.0/marks/values/type/{type} - get_marks_values_by_type(marks_type: str) - Метод возвращает все возможные оценки в запрашиваемой системе (типе) оценок. Чтобы узнать, какие типы поддерживаются нужно предварительно делать запрос marks/values без параметров.

  • /v2.0/persons - func - Список учеников в классе или учебной группе

  • /v2.0/edu-groups/{eduGroup}/students - func - Список учеников в классе или учебной группе

  • /v2.0/persons/search - func - 123

  • /v2.0/persons/{person} - func - Профиль персоны

  • /v2.0/persons/{person}/group/{group}/recentmarks - func - Последние оценки/отметки посещаемости персоны по предмету, указанному в параметре subject, начиная с даты определенном в параметре fromDate и с ограничением на выводимое количество указанном в параметре limit

  • /authorizations/esia/v2.0/regions - func - 123

  • /v2.0/edu-groups/{eduGroup}/reporting-periods - func - Список отчётных периодов для класса или учебной группы

  • /v2.0/edu-groups/{eduGroup}/reporting-period-group - func - Группа отчетных периодов для класса или учебной группы

  • /v2.0/persons/{person}/groups/{group}/schedules - func - Расписание ученика

  • /v2.0/school-rating/from/{from}/to/{to} - func - ѕолучение списка школ с наивысшим рейтингом за выбранный период

  • /v2.0/school-rating/from/{from}/to/{to}/new - func - ѕолучение списка новых школ с наивысшим рейтингом за выбранный период

  • /v2.0/schools/{school} - func - Профиль школы

  • /v2.0/schools - func - Список профилей нескольких школ (или список образовательных организаций пользователя, если не передано ни одного идентификатора школы)

  • /v2.0/schools/person-schools - func - Список образовательных организаций пользователя

  • /v2.0/schools/cities - func - Список населенных пунктов, образовательные организации которых включены в Систему

  • /v2.0/schools/search/by-oktmo - func - 123

  • /v2.0/schools/{school}/parameters - func - Параметры общеобразовательных организаций

  • /v2.0/events/{id}/invite - func - Пригласить в событие

  • /v2.0/groups/{id}/invite - func - Пригласить в группу

  • /v2.0/networks/{id}/invite - func - Пригласить в сеть

  • /v2.0/edu-groups/{eduGroup}/subjects - func - Список предметов, преподаваемых в классе в текущем отчётном периоде

  • /v2.0/schools/{school}/subjects - func - Список предметов, преподаваемых в образовательной организации в текущем учебном году

  • /v2.0/tasks/{task} - func - Домашнее задание

  • /v2.0/tasks - func - Домашние задания за несколько уроков

  • /v2.0/lessons/{lesson}/tasks - func - Список домашних заданий за урок

  • /v2.0/works/{work}/tasks - func - Список домашних заданий

  • /v2.0/persons/{person}/tasks - func - Список домашних заданий ученика по предмету

  • /v2.0/tasks/{personId}/undone - func - Список невыполненных домашних заданий обучающегося с истёкшим сроком выполнения

  • /v2.0/teacher/{teacher}/students - func - Список учеников для учителя который ведет уроки у этих учеников(они должны быть в расписании) от недели назад и на 30 дней вперед

  • /v2.0/schools/{school}/teachers - func - Список преподавателей в выбранной образовательной организации

  • /v2.0/edu-groups/{group}/teachers - func - Список учителей, которые ведут уроки в данной группе, учитываются уроки от недели назад и на 30 дней вперед

  • /v2.0/thematic-marks/{mark} - func - Получить оценку с заданным id

  • /v2.0/thematic-marks - func - Сохранить оценку

  • /v2.0/persons/{person}/edu-groups/{group}/subjects/{subject}/thematic-marks/{from}/{to} - func - Оценки персоны по предмету в учебной группе за период

  • /v2.0/persons/{person}/edu-groups/{group}/thematic-marks/{from}/{to} - func - Оценки персоны в учебной группе за период

  • /v2.0/persons/{person}/schools/{school}/thematic-marks/{from}/{to} - func - Оценки персоны в школе за период

  • /v2.0/edu-groups/{group}/subjects/{subject}/thematic-marks - func - Оценки в учебной группе по предмету

  • /v2.0/schools/{school}/timetables - func - Получение расписания школы

  • /v2.0/edu-groups/{eduGroup}/timetables - func - Получение расписания учебной группы

  • /v2.0/users/me/feed - func - Лента пользователя

  • /v2.0/users/{user}/groups - func - Список идентификаторов групп пользователя

  • /v2.0/users/me/children - func - Список id пользователей детей текущего пользователя

  • /v2.0/users/{user}/relatives - func - Получение всех родственных связей произвольного пользователя.

  • /v2.0/users/me/relatives - func - Получение всех родственных связей текущего пользователя.

  • /v2.0/users/me/childrenrelatives - func - Список id всех родственных связей детей произвольного пользователя

  • /v2.0/users/{user} - func - Профиль произвольного пользователя. Профиль текущего пользователя можно получить по users/me

  • /v2.0/users/me - func - Профиль текущего пользователя.

  • /v2.0/users/me/roles - func - Роли текущего пользователя.

  • /v2.0/users/many - func - Профили нескольких пользователей

  • /v2.0/users - func - Профили нескольких пользователей

  • /v2.0/users/{user}/roles - func - Роли пользователя

  • /v2.0/users/{user}/wallrecord - func - Отправить сообщение с изображением на стену пользователя

  • /v2.0/edu-groups/{group}/wa-marks/{from}/{to} - func - Средние взвешенные оценки учебной группы за период

  • /v2.0/works - func - Список работ на уроке

  • /v2.0/lessons/{lesson}/works - func - Список работ на уроке

  • /v2.0/works/{work} - func - Работа на уроке

  • /v2.0/works/many - func - Получение списка работ по списку id

  • /v2.0/works/{work}/persons/{person}/status - func - Изменить статус выполнения домашней работы учащимся.

  • /v2.0/work-types/{school} - func - Получение списка всех типов работ школы

About

Simple wrapper for dnevnik.ru

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

Morty Proxy This is a proxified and sanitized view of the page, visit original site.