Skip to content
Aleksandr edited this page Oct 20, 2021 · 1 revision

0. Создание объекта класса Dnevnik

Объект принимает логин и пароль от аккаунта ученика в Дневнике. (Библиотека правильно работает, если входить с аккаунта ученика. С аккаунтов родителей или учителей пока тесты не проводились)

from dnevnikru import Dnevnik

dairy = Dnevnik(login="Ваш логин", password="Ваш пароль")

1. Метод homework

Этот метод парсит домашнюю работу и возвращает словарь, где homeworkCount - количество домашней работы, homework - кортеж с домашними заданиями

Принимает 4 необязательных параметра:

datefrom - Дата с которой нужно показать Д/З. (в формате d.m.Y) (По умолчанию текущая дата)
dateto - Дата до которой нужно показать Д/З. (в формате d.m.Y) (По умолчанию +10 дней к datefrom)
studyYear - Используется, когда нужно узнать Д/З за прошлые года
days - Можно использовать вместо dateto. число days прибавляется к дате datefrom (По умолчанию days = 10)

homework = dairy.homework(days=2)

Выведем homework, используя функцию для красивого вывода pprint

from pprint import pprint

Вывод:

>>>> pprint(homework, sort_dicts=False)
{'homeworkCount': 9,
 'homework': (('Алгебра и НА', 'п.1', 'Сегодня 2 урок'),
              ('Алгебра и НА', 'п.2', 'Сегодня 2 урок'),
              ('Геометрия', 'п.52', 'Сегодня 4 урок'),
              ('Инф. и ИКТ', '§1.8.3, с.92-94', 'Сегодня 5 урок'),
              ('Инф. и ИКТ', '§1.8.3, с.94-95', 'Сегодня 5 урок'),
              ('Алгебра и НА',
               'п.2 № № 8, 11, 12,16,чет 19 (2)',
               '21 октября 2021 3 урок'),
              ('Геометрия',
               '№ 456 разобрать№ 455, 457, 462',
               '21 октября 2021 4 урок'),
              ('Рус. язык',
               'Пар.79-80.Словарный диктант.Приложение 2.(абажур-алюминий).',
               '21 октября 2021 5 урок'),
              ('Род.язык',
               'Итоговое по первому направлению!Сочинение!Принести черновик!',
               '21 октября 2021 6 урок'))}

2. Метод marks

Этот метод парсит таблицу с оценками за определенный период

Каждый элемент списка соответствует элементу в таблице оценок. (Номер предмета, предмет, оценки, пропуски, опоздания и т. д.)

Принимает 2 необязательных параметра:

index - Отвечает за год обучения (По умолчанию пустое значение, вернется текущий год)
period - Отвечает за период (По умолчанию пустое значение, вернется текущий период)

marks = dairy.marks()

Вывод:

(Оценки хранятся только в 3 элементе! Остальные - количество пропусков, опозданий и тому подобное)

>>>> pprint(marks)
(['1', 'Алгебра и НА', '555', '0', '6', '3', '2', ''],
 ['2', 'Англ. язык', '555', '0', '6', '2', '4,5', ''],
 ['3', 'Биология', '', '0', '0', '0', '', ''],
 ['4', 'Геометрия', '555', '0', '4', '3', '4', ''],
 ['5', 'Инф. и ИКТ', '555', '0', '10', '6', '', ''],
 ['6', 'ИПД', '555', '0', '2', '1', '', ''],
 ['7', 'История', '555', '0', '3', '2', '3', ''],
 ['8', 'Литература', '555', '0', '15', '2', '', ''],
 ['9', 'ОБЖ', '555', '0', '1', '1', '5', ''],
 ['10', 'Реш. физ. задач', '555', '0', '2', '1', '', ''],
 ['11', 'Реш.задач по матем', '555', '0', '2', '1', '', ''],
 ['12', 'Род.язык', '555', '0', '1', '1', '', ''],
 ['13', 'Рус. язык', '555', '0', '2', '1', '4', ''],
 ['14', 'Физика', '555', '0', '14', '6', '3,5', ''],
 ['15', 'Физкультура', '555', '0', '8', '3', '', ''],
 ['16', 'Химия', '555', '0', '4', '1', '', ''])

3. Метод searchpeople

С помощью этого метода можно искать людей по Вашей школе. (По критериям, см. параметры)

Принимает 3 необязательных параметра

name - Поиск по имени (Можно искать в разных форматах: ФИ, ФИО, имя, фамилия, и т. д.)
grade - Поиск по классу (Можно искать в разных форматах: 7а, 8Б, 11.1 - для тех, у кого цифры, а не буквы)
group - Среди какой группы искать (Доступные группы: all, students, staff, director, management, teachers, administrators) (По умолчанию all)

aleksandr_8b = dairy.searchpeople(name="Александр", grade="8Б")

Вывод: (Фамилии скрыл в целях конфиденциальности!)

>>>> pprint(aleksandr_8b, sort_dicts=False)
{'peopleCount': 8,
 'people': (('З***а Александра Сергеевна', 'Ученик'),
            ('К***в Александр Юрьевич', 'Родитель'),
            ('К***а Юлия Александровна', 'Ученик'),
            ('К***в Андрей Александрович', 'Родитель'),
            ('К***а Елена Александровна', 'Родитель'),
            ('С***я Ольга Александровна', 'Родитель'),
            ('С***а Александр Иванович', 'Ученик'),
            ('С***а Иван Александрович', 'Родитель'))}

4. Метод birthdays

Позволяет получить имена людей у которых день рождения в заданный день

Принимает 3 необязательных параметра:

day: int - День (По умолчанию текущий день)
month: int - Месяц (По умолчанию текущий месяц)
group - Среди какой группы искать (Доступные группы: all, students, staff, class) (По умолчанию all) (class - одноклассники текущего юзера)

birthdays = dairy.birthdays(day=9, month=5)

Вывод: (Фамилии скрыл в целях конфиденциальности!)

>>>> pprint(birthdays, sort_dicts=False)
{'birthdaysCount': 3,
 'birthdays': ('П***в Александр Павлович',
               'К***а Софья Михайловна',
               'П***в Ярослав Иванович')}

5. Метод week

Позволяет получить результаты недели (информация берется от сюда http://dnevnik.ru/currentprogress/choose?userComeFromSelector=True)

Принимает 2 необязательных параметра:

info - тип результатов (Доступные типы - "themes", "attendance", "marks", "schedule", "homeworks") (По умолчанию schedule, т.е. расписание)
weeks - Сдвиг по неделям (По умолчанию 0, т.е. текущая неделя. Для прошедших недель используется отрицательное число)

schedule = dairy.week()  # Можно не писать info="schedule", так как это значение по умолчанию

Вывод: (Данные изменил в целях конфиденциальности)

{'student': 'Владимир Путин, МБОУ СОШ № 1, 7-А, 2021 / 2022, с 18.10 по '
            '24.10',
 'schedule': {'понедельник': ('Реш. физ. задач',
                              'Англ. язык',
                              'Реш.задач по матем',
                              'Химия',
                              'Физика'),
              'вторник': ('Физика',
                          'Физика',
                          'Литература',
                          'Литература',
                          'История',
                          'Физкультура'),
              'среда': ('История',
                        'Алгебра и НА',
                        'Физкультура',
                        'Геометрия',
                        'Инф. и ИКТ',
                        'Инф. и ИКТ'),
              'четверг': ('Физика',
                          'Физика',
                          'Алгебра и НА',
                          'Геометрия',
                          'Рус. язык',
                          'Род.язык'),
              'пятница': ('Англ. язык',
                          'ИПД',
                          'Алгебра и НА',
                          'Алгебра и НА',
                          'Литература',
                          'Физкультура'),
              'суббота': ('Физика',
                          'Англ. язык',
                          'ОБЖ',
                          'Инф. и ИКТ',
                          'Инф. и ИКТ'),
              'воскресенье': ()}}

Ещё пример:

attendance = dairy.week(info="attendance")  # attendance - посещаемость

Вывод:

>>>> pprint(attendance)
{'student': 'Владимир Путин, МБОУ СОШ № 1, 7-А, 2021 / 2022, с 18.10 по '
            '24.10',
 'attendance': ('19.10.2021 — н, н', '20.10.2021 — н')}
Clone this wiki locally