- Saved searches
- Use saved searches to filter your results more quickly
- License
- paracosm17/dnevnikru
- Name already in use
- Sign In Required
- Launching GitHub Desktop
- Launching GitHub Desktop
- Launching Xcode
- Launching Visual Studio Code
- Latest commit
- Git stats
- Files
- README.md
- Небольшой модуль для работы с dnevnik.ru на python
- Почему не через API?
- Как этим пользоваться?
- Доступные методы
- Итог
Saved searches
Use saved searches to filter your results more quickly
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session.
License
paracosm17/dnevnikru
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Name already in use
A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Sign In Required
Please sign in to use Codespaces.
Launching GitHub Desktop
If nothing happens, download GitHub Desktop and try again.
Launching GitHub Desktop
If nothing happens, download GitHub Desktop and try again.
Launching Xcode
If nothing happens, download Xcode and try again.
Launching Visual Studio Code
Your codespace will open once ready.
There was a problem preparing your codespace, please try again.
Latest commit
Git stats
Files
Failed to load latest commit information.
README.md
Module for working with the site dnevnik.ru with python
Dnevnik object accepts login and password from the dnevnik.ru account
Methods: homework, marks, searchpeople, birthdays, week
Read the full functionality of the module here: Wiki
(Doesn’t work in regions where you can enter the Diary only through GosUslugi !)
Run the command in the terminal:
from dnevnikru import Dnevnik dairy = Dnevnik(login='Your login', password='Your password') homework = dairy.homework(studyyear=2020, datefrom='01.12.2020', dateto='30.12.2020') marks = dairy.marks(index=0, period=1) class_11b = dairy.searchpeople(grade='11B') birthdays = dairy.birthdays(day=9, month=5) schedule = dairy.week(info="schedule", weeks=-1)
For more examples of uses and parameters in methods, see Wiki.
The module requires requests , lxml , bs4 libraries
Distributed under the Apache License 2.0 license. See LICENSE for more information.
Небольшой модуль для работы с dnevnik.ru на python
Привет, Хабр. Это моя первая статья, и сегодня я хочу рассказать вам про свой первый модуль на python. Называется он dnevnikru. Я написал его для облегчения работы с сайтом дневника. Работает модуль по принципу парсера, а не получает данные через API.
Идея написать такой модуль пришла мне после идеи написать телеграм бота для просмотра оценок и домашних заданий из Дневника.ру, так как смотреть успеваемость в телефоне с браузера неудобно, а функционал приложения платный.
Почему не через API?
Конечно, функционал этого модуля не сравнится с функционалом, предоставляемым официальным API. Я добавил только самые необходимые функции, о которых я расскажу ниже.
Как этим пользоваться?
Сам модуль находится в github репозитории. Также, я залил модуль на PyPi. Для установки нужно прописать в терминале:
Мануал по использованию и описание методов есть на wiki странице
Доступные методы
На момент написания статьи, я реализовал 5 методов.
- homework — Получение домашних заданий за определенный период
- marks — Получение оценок за четверть (семестр)
- searchpeople — Поиск людей по Вашей школе (Среди учителей, учеников, работников. Можно искать по имени, классу, ФИО)
- birthdays — Дни рождения людей из Вашей школы
- week — Возвращает результаты недели (расписание, посещаемость, пройденные темы и так далее)
Принимает 4 необязательных параметра
datefrom — С какой даты отобразить Д/З (в формате dd.mm.yyyy). По умолчанию стоит текущий день.
dateto — До какой даты отобразить Д/З (в формате dd.mm.yyyy). По умолчанию +10 дней к datefrom
days — На сколько дней вперед отобразить (Используется когда ни datefrom, ни dateto не указаны, либо когда указан только datefrom)
studyYear — учебный год (Используется для просмотра домашних заданий прошлых лет)
Возвращает словарь с домашними заданиями.
from dnevnikru import Dnevnik from pprint import pprint dn = Dnevnik(login="login", password="password") pprint(dn.homework(days=2))
Принимает 2 необязательных параметра
index — Год обучения. По умолчанию вернется текущий год
period — Период. Если ничего не передать — вернется текущий период.
Возвращает кортеж списков с оценками, количеством пропусков, пропусков по болезни и вообще все данные, которые отображает таблица
from dnevnikru import Dnevnik from pprint import pprint dn = Dnevnik(login="login", password="password") pprint(dn.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', '', ''])
Отметки находятся только во 2 элементе (Начиная с 0 элемента)
Принимает 3 необязательных параметра
group — Группа среди которой нужно искать людей. По умолчанию пустое значение, будет искать среди всех (all). Доступные группы — ‘all’, ‘students’, ‘staff’, ‘director’, ‘management’, ‘teachers’, ‘administrators’
name — Поиск по имени. Можно вводить имя, фамилию, ФИО. Разные форматы.
grade — Поиск по классу. Опять же, можно использовать разные форматы. Например: «11Б», «8 Г», «9.1» — для тех, у кого в школе не буквы, а цифры.
Возвращает словарь с людьми
from dnevnikru import Dnevnik from pprint import pprint dairy = Dnevnik("login", "password") birthdays = dairy.birthdays(day=9, month=5)
Фамилии скрыл в целях конфиденциальности
Принимает 3 необязательных параметра
day (int) — день (по умолчанию текущая дата)
group — Группа среди которой нужно искать людей. По умолчанию пустое значение, будет искать среди всех (all). Доступные группы — ‘all’, ‘students’, ‘staff’, ‘class’
from dnevnikru import Dnevnik from pprint import pprint dairy = Dnevnik("login", "password") birthdays = dairy.birthdays(day=9, month=5)
Принимает 2 необязательных параметра:
info — тип результатов (Доступные типы — «themes», «attendance», «marks», «schedule», «homeworks») (По умолчанию schedule, т.е. расписание)
weeks — Сдвиг по неделям (По умолчанию 0, т.е. текущая неделя. Для прошедших недель используется отрицательное число)
from dnevnikru import Dnevnik from pprint import pprint dairy = Dnevnik("login", "password") schedule = dairy.week()
Итог
Для меня эта библиотека стала первым опытом написания «открытых» проектов, поэтому, если Вы обнаружили какие-то баги/некачественный код/ и прочее, что можно исправить — сообщайте. Я буду только рад улучшить свой проект. Всем удачи.
UPD: Библиотека периодически обновляется, поэтому актуальная информация доступна на wiki странице библиотеки