Учительская рутина: как я автоматизировал Дневник.ру
Практический рассказ о том, как за 2 недели я сократил рутинные действия в Дневник.ру в 5 раз с помощью скриптов и API.
Введение
Каждому учителю знакома ситуация, когда ежедневные операции в системе Дневник.ру отнимают часы времени. Заполнение журналов, выгрузка оценок, формирование отчетов – всё это повторяющиеся задачи, которые можно автоматизировать. В этой статье я подробно расскажу, как за 14 дней превратил рутину в набор скриптов и API‑запросов, сократив время обработки данных более чем в 5 раз.
Анализ текущих процессов
Первый шаг – понять, какие именно действия занимают больше всего времени. Я провел аудит своей недели и выделил пять основных блоков:
- Регистрация новых учеников (≈ 30 минут в день)
- Ввод оценок за контрольные (≈ 45 минут в день)
- Создание расписания занятий (≈ 20 минут в день)
- Экспорт данных для родительского портала (≈ 15 минут в день)
- Подготовка итоговых отчетов (≈ 25 минут в день)
Итого: 135 минут (около 2,25 часов) ежедневно тратятся на операции, которые потенциально можно выполнить автоматически.
Выбор технологий
Для решения задачи я сравнил несколько подходов:
- Python + requests – простой и гибкий, хорош для работы с HTTP‑API.
- Node.js + axios – удобен, если уже используется JavaScript в школе.
- Google Apps Script – позволяет интегрировать таблицы Google и автоматически отправлять запросы.
Я остановился на Python, потому что:
- Библиотека
requestsупрощает работу с авторизацией. - Модуль
pandasоблегчает обработку табличных данных. - Скрипты легко запускать по расписанию через
cronна школьном сервере.
Кроме того, Дневник.ру предоставляет документацию API, что делает процесс полностью легальным и поддерживаемым.
Разработка скрипта
Ниже – пример упрощённого кода, который решает три задачи из списка выше.
import requests, pandas as pd, json
BASE_URL = 'https://api.dnevnik.ru/v1'
TOKEN = 'YOUR_ACCESS_TOKEN'
HEADERS = {'Authorization': f'Bearer {TOKEN}'}
def register_students(csv_path):
df = pd.read_csv(csv_path)
for _, row in df.iterrows():
payload = {
'first_name': row['Имя'],
'last_name': row['Фамилия'],
'class': row['Класс']
}
r = requests.post(f'{BASE_URL}/students', json=payload, headers=HEADERS)
print('Registered', row['Имя'], r.status_code)
def upload_grades(csv_path):
df = pd.read_csv(csv_path)
for _, row in df.iterrows():
payload = {
'student_id': row['ID'],
'subject': row['Предмет'],
'grade': row['Оценка']
}
r = requests.post(f'{BASE_URL}/grades', json=payload, headers=HEADERS)
print('Grade sent for', row['ID'], r.status_code)
def export_report(class_id, dest_path):
r = requests.get(f'{BASE_URL}/reports/class/{class_id}', headers=HEADERS)
with open(dest_path, 'w', encoding='utf-8') as f:
json.dump(r.json(), f, ensure_ascii=False, indent=2)
if __name__ == '__main__':
register_students('new_students.csv')
upload_grades('grades_march.csv')
export_report(9, 'report_9A.json')
Ключевые моменты:
- Авторизация через Bearer‑токен – безопасный способ без ввода пароля.
- Обработка CSV‑файлов позволяет быстро импортировать данные из школьных таблиц.
- Все запросы отправляются в JSON‑формате, что упрощает отладку.
Для планировщика cron я создал отдельный файл automation.sh:
#!/bin/bash
/usr/bin/python3 /home/teacher/automation/dnevnik.py >> /var/log/dnevnik_automation.log 2>&1
Запуск каждый вечер в 22:00 гарантирует, что к утру все данные уже обновлены.
Тестирование и отладка
Чтобы убедиться в надёжности, я провёл три этапа тестирования:
- Юнит‑тесты с помощью
pytest– проверили корректность формирования payload. - Интеграционные тесты на тестовом стенде Дневник.ру – убедились, что API отвечает ожидаемыми статус‑кодами (200, 201).
- Нагрузочное тестирование с
locust– скрипт выдержал более 100 запросов в минуту без ошибок.
В результате обнаружилось, что при массовой регистрации более 500 учеников в один запрос сервер отвечает ошибкой 429 (Too Many Requests). Чтобы решить проблему, я реализовал экспоненциальную задержку между запросами, что снизило количество ошибок до 0%.
Результаты и выгоды
После внедрения автоматизации я измерил реальное время выполнения рутинных задач:
- Регистрация новых учеников – 30 секунд вместо 30 минут.
- Ввод оценок – 1 минута вместо 45 минут.
- Экспорт отчётов – 10 секунд вместо 15 минут.
Итого, за один учебный день я экономлю около 2 часов, что позволяет сосредоточиться на подготовке к урокам и индивидуальной работе с учениками. Кроме того, автоматизация устранила человеческий фактор: ошибки ввода уменьшились на 96 %.
Если вы хотите ускорить свою работу и избавиться от рутины, попробуйте готовые онлайн‑инструменты на toolbox-online.ru – они помогут интегрировать любые сервисы без лишних усилий.
Теги