npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

zdu-student-api

v1.1.10

Published

API client for ZDU student services

Readme

ZDU Student API

API для Житомирського державного університету імені Івана Франка.

СТАБІЛЬНЕ API:

Бібліотека надає програмний доступ до відкритих сервісів університету, зокрема:

  • 📅 розклад занять студентів / викладачів / аудиторій
  • 🚪 зайняті / вільні аудиторії
  • 🏫 списки аудиторій
  • 👥 списки груп
  • 👨‍🏫 списки викладачів
  • 🎯 TypeScript підтримка з повною типізацією
  • 📱 Сумісність з Node.js та браузерними середовищами

BETA API:

📚 Кабінет студента (CabinetStudent)

  • 🔐 Авторизація в кабінеті студента
  • 📝 Отримання анкетних даних студента (ПІБ, дата народження, стать, контакти, факультет, спеціальність, група, форма навчання)
  • 📖 Отримання дисциплін поточного семестру
  • 📊 Отримання оцінок з окремого предмета (з деталізацією по заняттях, пропускам та фінальною оцінкою)
  • 📈 Отримання оцінок з усіх дисциплін одночасно
  • 🎓 Отримання оцінок за конкретний семестр (1 або 2)
  • 🆔 Отримання ID студента в системі оцінювання
  • 💾 Відновлення попередньої сесії без повторної авторизації
  • ✅ Перевірка валідності поточної сесії
  • 🔄 Автоматичне визначення поточного семестру
  • 📦 Масове завантаження всіх даних (анкетні дані + дисципліни + оцінки)
  • 📅 Інформація про розклад занять для кожної дисципліни (викладач, дата, час, тип заняття)

👨‍🏫 Кабінет викладача (CabinetTeacher)

  • 🔐 Авторизація в кабінеті викладача
  • 📝 Отримання анкетних даних викладача (ПІБ, кафедра, години роботи, навантаження)
  • 👥 Отримання списку всіх академічних груп викладача
  • 📊 Деталізована інформація про кожну групу (назва, курс, семестр, спеціальність, факультет)
  • 🔗 URL-посилання на журнали академічних груп
  • 💼 Інформація про навчальне навантаження (години за штатом, за сумісництвом, загальне)
  • 📆 Тривалість роботи в навчальному році
  • 💾 Відновлення попередньої сесії без повторної авторизації
  • ✅ Перевірка валідності поточної сесії
  • 📦 Масове завантаження всіх даних (анкетні дані + академічні групи)

🔮 У планах

  • стабільне API кабінету студента
  • стабільне API кабінету викладача
  • Отримання історії оцінок з усіх предметів
  • Отримання айді всіх доступних студентів для окремого викладача
  • Отримання всіх оцінок через кабінет викладача

⚠️ Проєкт не є офіційним API університету.


Встановлення

npm install zdu-student-api

або

pnpm install zdu-student-api

Базове використання

Отримання розкладу

import { Schedule, scheduleErrors } from 'zdu-student-api';

const schedule = new Schedule();
schedule.group = '23Бд-СОінф';
schedule.type = 'group';
schedule.rosText = true;
schedule.allStreamComponents = true;

try {
    const sc = await schedule.getSchedule();
    console.log('Розклад:', sc);
} catch (err: any) {
    console.error(err.message);
    console.error(scheduleErrors[JSON.parse(err.message).errorcode]);
}

Розклад для аудиторії

const schedule = new Schedule();
schedule.roomId = 35;
schedule.type = 'room';
schedule.rosText = true;

const sc = await schedule.getSchedule();
console.log(sc);

Довідкові методи

Групи

import { getGroups } from 'zdu-student-api';

const groups = await getGroups('25Бд-Комп');
console.log(groups);

Викладачі

import { getTeachers } from 'zdu-student-api';

const teachers = await getTeachers('Кривонос Олександр');
console.log(teachers);

Аудиторії

import { getRooms } from 'zdu-student-api';

const rooms = await getRooms('319');
console.log(rooms);

Типи аудиторій

import { getTypesAudience } from 'zdu-student-api';

const types = await getTypesAudience('Ле');
console.log(types);

Аудиторії за корпусом / гуртожитком

import { Audience } from 'zdu-student-api';

const audience = new Audience();
audience.blockName = 'гуртож №3';

const audiences = await audience.getAudience();
console.log(audiences);

Додаткові параметри (DOPs)

import { getDops } from 'zdu-student-api';

const dops = await getDops();
console.log(dops);

Кабінет студента

Базове використання

import { CabinetStudent } from 'zdu-student-api';

const cabinet = new CabinetStudent('ПРІЗВИЩЕ', 'ПАРОЛЬ');

// Авторизація
const authSuccess = await cabinet.auth();
if (authSuccess) {
    console.log('Авторизовано успішно!');
    console.log('Session ID:', cabinet.sesID);
}

Отримання всіх даних студента

const cabinet = new CabinetStudent('ПРІЗВИЩЕ', 'ПАРОЛЬ');
await cabinet.auth();

// Завантажити всі дані (анкетні дані, дисципліни, оцінки)
await cabinet.loadData();

console.log('Дані студента:', cabinet.data);
console.log('Дисципліни:', cabinet.disciplines);
console.log('Оцінки:', cabinet.allScores);

Робота з дисциплінами та оцінками

const cabinet = new CabinetStudent('ПРІЗВИЩЕ', 'ПАРОЛЬ');
await cabinet.auth();

// Отримати дисципліни поточного семестру
const disciplines = await cabinet.getDisciplines();
console.log('Дисципліни:', disciplines);

// Отримати оцінки з усіх дисциплін
const allScores = await cabinet.getAllScores();
console.log('Всі оцінки:', allScores);

// Отримати оцінки за конкретний семестр
const firstSemesterScores = await cabinet.getAllScores(1);
const secondSemesterScores = await cabinet.getAllScores(2);

Відновлення сесії

const cabinet = new CabinetStudent('ПРІЗВИЩЕ', 'ПАРОЛЬ');

// Відновити попередню сесію
const sesID = 'YOUR_SESSION_ID';
const sessGUID = 'YOUR_SESSION_GUID';

// Сесія активна тільки 24 години і стає застарілою як тільки відбувається нова авторизація викладача в кабінеті
const sessionValid = await cabinet.setSession(sesID, sessGUID);
if (sessionValid) {
    console.log('Сесію відновлено!');
    await cabinet.loadData();
}

Перевірка валідності сесії

const cabinet = new CabinetStudent('ПРІЗВИЩЕ', 'ПАРОЛЬ');
await cabinet.auth();

// Перевірити чи сесія ще дійсна
const isValid = await cabinet.isValidSession();
console.log('Сесія дійсна:', isValid);

Отримання ID студента

const cabinet = new CabinetStudent('ПРІЗВИЩЕ', 'ПАРОЛЬ');
await cabinet.auth();

const studentId = await cabinet.getId();
console.log('ID студента:', studentId);

Кабінет викладача

Базове використання

import { CabinetTeacher } from 'zdu-student-api';

const cabinet = new CabinetTeacher('ЛОГІН', 'ПАРОЛЬ');

// Авторизація
const authSuccess = await cabinet.auth();
if (authSuccess) {
    console.log('Авторизовано успішно!');
    console.log('Session ID:', cabinet.sesID);
}

Отримання даних викладача

const cabinet = new CabinetTeacher('ЛОГІН', 'ПАРОЛЬ');
await cabinet.auth();

// Отримати анкетні дані викладача
const data = await cabinet.getData();
console.log('ПІБ:', data.fullName);
console.log('Кафедра:', data.department);
console.log('Навантаження:', data.totalWorkload);

Робота з академічними групами

const cabinet = new CabinetTeacher('ЛОГІН', 'ПАРОЛЬ');
await cabinet.auth();

// Отримати всі академічні групи
const groups = await cabinet.getAcademicGroups();
console.log('Академічні групи:', groups);

// Інформація зберігається в об'єкті
console.log('Групи викладача:', cabinet.academicGroups);

// Приклад даних групи:
//   {
//     name: '46Бд-Комп',
//     semester: 1,
//     encodedName: '46%C1%E4-%CA%EE%EC%EF',
//     course: 4,
//     specialty: '122 Комп`ютерні науки (Д_Б 2022-2023 н.р.)',
//     faculty: 'Фізико-математичний факультет',
//     teacherId: '1466',
//     journalUrl: './teachers.cgi?sesID={sesID}&n=1&grp=46%C1%E4-%CA%EE%EC%EF&teacher=1466'
//   },

Отримання всіх даних викладача

const cabinet = new CabinetTeacher('ЛОГІН', 'ПАРОЛЬ');
await cabinet.auth();

// Завантажити всі дані (анкетні дані + академічні групи)
await cabinet.loadData();

console.log('Дані викладача:', cabinet.data);
console.log('Академічні групи:', cabinet.academicGroups);

Відновлення сесії викладача

const cabinet = new CabinetTeacher('ЛОГІН', 'ПАРОЛЬ');

// Відновити попередню сесію
const sesID = 'YOUR_SESSION_ID';
const sessGUID = 'YOUR_SESSION_GUID';

const sessionValid = await cabinet.setSession(sesID, sessGUID);
if (sessionValid) {
    console.log('Сесію відновлено!');
    await cabinet.loadData();
}

Документація

📘 API-документація (TypeDoc): https://nicita-3.github.io/zdu-student-api


Ліцензія

MIT © 2026