Skip to content

RedGuyRu/DnevnikApi

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

47 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

dnevnik-mos-ru-api

Библиотека для доступа к API сайта Московской электронной Школы

Вы можете задать любые вопросы по этой библиотеке или обсудить МЭШ в telegram https://t.me/sleeplessmash

Установка

npm install dnevnik-mos-ru-api
yarn add dnevnik-mos-ru-api

Поддерживаемые методы

Примеры использования

Авторизация по логину и паролю

let auth = new Dnevnik.PuppeteerAuthenticator(process.env.login, process.env.password, {headless: false});
await auth.init();
await auth.authenticate();
let client = new Dnevnik.DnevnikClient(auth);
// работа с клиентом
await auth.close();

Авторизация по токену

let client = new Dnevnik.DnevnikClient(new Dnevnik.PredefinedAuthenticator(process.env.student_id, process.env.token));
// работа с клиентом

Обход СМС через TOTP

let auth = new Dnevnik.PuppeteerAuthenticator(process.env.login, process.env.password, {headless: false, totp: process.env.totp});
await auth.init();
await auth.authenticate();
let client = new Dnevnik.DnevnikClient(auth);
// работа с клиентом
await auth.close();

Получение профиля пользователя

client.getProfile({with_groups:true, with_ae_attendances: true, with_attendances: true, with_ec_attendances: true, with_assignments: true, with_parents: true, with_subjects: true, with_marks: true, with_final_marks: true, with_home_based_periods: true, with_lesson_info: true, with_lesson_comments: true}).then(e => {
    for (let mark of e.marks) {
        console.log(mark.name + " " + mark.subject_id);
    }
}).catch(e => console.log(e))

Получение средних оценок

client.getAverageMarks().then(e => {
    e.forEach(m => console.log(m.name + " " + m.mark));
}).catch(e => console.error(e));

Получение текущего академического года

DnevnikClient.getCurrentAcademicYear().then(e => console.log(e.name)).catch(e => console.error(e));

Получение списка предметов

client.getSubjects().then(e => {
    for (let subject of e) {
        console.log(subject.name);
    }
}).catch(e => console.error(e));

Получение списка оценок

client.getMarks(DateTime.now().minus(Duration.fromObject({week:1}))).then(e => {
    for (let subject of e) {
        console.log(subject.subject_id + ": " + subject.values[0].grade.five);
    }
}).catch(e => console.error(e));

Получение списка домашних заданий

client.getHomework(DateTime.now().minus(Duration.fromObject({week:1}))).then(e => {
    for (let subject of e) {
        console.log(subject.homework_entry.homework.subject.name + " " + subject.homework_entry.description);
    }
}).catch(e => console.error(e));

Получение расписания

client.getSchedule(DateTime.now().minus(Duration.fromObject({week:1}))).then(e => {
    for (let a of e.activities) {
        if(a.type==="LESSON") {
            console.log(a.begin_time + ": " + a.lesson.subject_name);
        }
    }
}).catch(e => console.error(e));

Получение информации о преподавателе

client.getTeacher(2483049).then(e => {
    console.log(e.user.first_name+" "+e.user.middle_name);
}).catch(e => console.log(e))

Получение ссылок на онлайн-уроки

client.getTeamsLinks(DateTime.now().minus({day:1})).then(e => {
    for (let teamsLink of e) {
        console.log(teamsLink.link);
    }
}).catch(e => console.log(e))

Получение меню

client.getMenu().then(e => {
    for (let meal of e) {
        console.log(meal.meals.map(e => e.name).join(", "));
    }
}).catch(e => console.log(e));

Получение списка уведомлений

client.getNotifications().then(e => {
    for (let notification of e) {
        if(notification.event_type === "create_homework") {
            console.log(notification.new_hw_description);
        }
    }
}).catch(e => console.log(e))

Получение ответов на тесты Библиотеки МЭШ

Dnevnik.DnevnikClient.getMeshAnswers(15987430).then(e => {
    for (let question of e) {
        console.log(question.question + " " + JSON.stringify(question.answer));
    }
}).catch(e => console.log(e))

Получение списка посещаемости

client.getVisits(DateTime.now().minus({month:1})).then(e => {
    for (let visitDay of e) {
        console.log(visitDay.date.toFormat("dd.MM.yyyy"));
        for (let visit of visitDay.visits) {
            console.log("- "+visit.in.toFormat("HH:mm"));
        }
    }
}).catch(e => console.log(e))

Получение детализации баланса

client.getBilling(DateTime.now().minus({month:5}), DateTime.now().plus({month:1})).then(e => {
    console.log(e.balance/100)
}).catch(e => console.log(e))

Получение информации об обучении

client.getProgress().then(e => {
    for (let section of e.sections) {
        for (let subject of section.subjects) {
            console.log(subject.subject_name + " " + subject.passed_hours/subject.total_hours*100 + "%");
        }
    }
}).catch(e => console.log(e))

Получение списка групп дополнительного образования

client.getAdditionalEducationGroups().then(e => {
    for (let additionalEducationGroup of e) {
        console.log(additionalEducationGroup.name);
    }
}).catch(e => console.log(e))

Получение списка оценок по четвертям

client.getPerPeriodMarks().then(e => {
    for (let subjectMark of e) {
        console.log(subjectMark.subject_name,subjectMark.periods.map(e => e.avg_five).join(" "));
    }
}).catch(e => console.log(e))

Releases

No releases published

Packages

No packages published