TToolBox
💻
💻 dev
6 апреля 2026 г.7 мин чтения

Учительская рутина: как я автоматизировал Дневник.ру

Учительская рутина: как я автоматизировал Дневник.ру
В этой статье

Практический рассказ о том, как за 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 гарантирует, что к утру все данные уже обновлены.

Тестирование и отладка

Чтобы убедиться в надёжности, я провёл три этапа тестирования:

  1. Юнит‑тесты с помощью pytest – проверили корректность формирования payload.
  2. Интеграционные тесты на тестовом стенде Дневник.ру – убедились, что API отвечает ожидаемыми статус‑кодами (200, 201).
  3. Нагрузочное тестирование с locust – скрипт выдержал более 100 запросов в минуту без ошибок.

В результате обнаружилось, что при массовой регистрации более 500 учеников в один запрос сервер отвечает ошибкой 429 (Too Many Requests). Чтобы решить проблему, я реализовал экспоненциальную задержку между запросами, что снизило количество ошибок до 0%.

Результаты и выгоды

После внедрения автоматизации я измерил реальное время выполнения рутинных задач:

  • Регистрация новых учеников – 30 секунд вместо 30 минут.
  • Ввод оценок – 1 минута вместо 45 минут.
  • Экспорт отчётов – 10 секунд вместо 15 минут.

Итого, за один учебный день я экономлю около 2 часов, что позволяет сосредоточиться на подготовке к урокам и индивидуальной работе с учениками. Кроме того, автоматизация устранила человеческий фактор: ошибки ввода уменьшились на 96 %.

Если вы хотите ускорить свою работу и избавиться от рутины, попробуйте готовые онлайн‑инструменты на toolbox-online.ru – они помогут интегрировать любые сервисы без лишних усилий.
Поделиться:

Теги

#automation#api#python#education#devops