Skip to main content

Wrapper for dnevnik.ru API

Project description

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 - Получение списка всех типов работ школы

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pydnevnikruapi-0.2.0.tar.gz (11.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pydnevnikruapi-0.2.0-py3-none-any.whl (12.2 kB view details)

Uploaded Python 3

File details

Details for the file pydnevnikruapi-0.2.0.tar.gz.

File metadata

  • Download URL: pydnevnikruapi-0.2.0.tar.gz
  • Upload date:
  • Size: 11.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.7.16

File hashes

Hashes for pydnevnikruapi-0.2.0.tar.gz
Algorithm Hash digest
SHA256 9e5e7523e87a3168c0233f535ca7e3bc1e612b69e959cbd2e635e9a0f9ae83f0
MD5 77abb5615a24ccc9766072e6c8c7b3da
BLAKE2b-256 6d427220950f7e6a65b8c02f6b52de3375a26a320c8a153680b9837b24ce4b4e

See more details on using hashes here.

File details

Details for the file pydnevnikruapi-0.2.0-py3-none-any.whl.

File metadata

File hashes

Hashes for pydnevnikruapi-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 76571c805201a175bca00250f9d2fb77bc067d05ecde66500de3f715a0f7f623
MD5 619225dc15b51c313bc9ed4e1693d4be
BLAKE2b-256 4eedc606631f7048ae15e83ad38f98ba679916abf63642130013345a7044ea42

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page