Watch
1
Fork
You've already forked edt-iut-info
0
a wrapper for the timetables of the IUT’s computer science department. https://edt-iut-info.unilim.fr
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
2026-09-01 13:12:24 +02:00
.forgejo/workflows chore(ci): add auto publish 2026-09-01 08:06:45 +02:00
examples docs: add examples for rs and ts 2026-09-01 08:07:28 +02:00
src refactor: move from pdf to ics since now available 2026-09-01 08:07:08 +02:00
tests chore: add test data 2026-09-01 08:06:39 +02:00
.gitattributes chore: vendor test data 2026-09-01 08:07:51 +02:00
.gitignore chore: initialize 2026-06-30 06:58:26 +02:00
bun.lock docs: add examples for rs and ts 2026-09-01 08:07:28 +02:00
Cargo.lock chore: release v1.0.0 2026-09-01 13:06:58 +02:00
Cargo.toml chore: release v1.0.0 2026-09-01 13:06:58 +02:00
LICENSE.md chore: initialize 2026-06-30 06:58:26 +02:00
package.json docs: add examples for rs and ts 2026-09-01 08:07:28 +02:00
README.md docs: add simple documentation for both language 2026-09-01 08:07:45 +02:00
tsconfig.json docs: add examples for rs and ts 2026-09-01 08:07:28 +02:00

edt-iut-info.unilim.fr

npm crates.io docs.rs

A wrapper and helper for the .ics timetables of the IUTs computer science department at the University of Limoges.

Usage

Latest timetable of a subgroup

(1, SUBGROUPS.A) is G1A, the subgroup A of the main group 1.

Rust JS/TS
use unilim_edt_iut_info::{
  OnlineTimetable,
  SUBGROUPS,
};

let latest = OnlineTimetable
  ::get_latest_timetable_entry(
    1, SUBGROUPS::A,
  ).await?;

let timetable = latest
  .get_timetable()
  .await?;
import {
  OnlineTimetable,
  SUBGROUPS,
} from "@unilim/edt-iut-info";

const latest = await OnlineTimetable
  .getLatestTimetableEntry(
    1, SUBGROUPS.A,
  );

const timetable = await latest
  .getTimetable();

Every published week

Entries are sorted by week number and carry the file name, the URL and the last update timestamp shown in the listing.

Rust JS/TS
let entries = OnlineTimetable
  ::get_timetable_entries(
    1, SUBGROUPS::A,
  ).await?;

for entry in entries {
  println!(
    "S{} updated {}",
    entry.week_number(),
    entry.last_updated(),
  );
}
const entries = await OnlineTimetable
  .getTimetableEntries(
    1, SUBGROUPS.A,
  );

for (const entry of entries) {
  console.log(
    `S${entry.weekNumber}`,
    "updated", entry.lastUpdated,
  );
}

Parse a local .ics file

The file name (eg. G1a_S13.ics) provides the group, the subgroup and the week number, which the calendar itself does not carry.

Rust JS/TS
use unilim_edt_iut_info
  ::get_timetable_from_ics;

let bytes = std::fs
  ::read("G1a_S13.ics")?;

let timetable =
  get_timetable_from_ics(
    bytes,
    "G1a_S13.ics".into(),
  ).await?;
import {
  getTimetableFromIcs,
} from "@unilim/edt-iut-info";

const bytes = await Bun
  .file("G1a_S13.ics")
  .bytes();

const timetable =
  await getTimetableFromIcs(
    bytes,
    "G1a_S13.ics",
  );

Lessons carry their group assignment: CM and special events apply to the whole year, TD/DS/SAE to a main group and TP to a subgroup.

License

GPL-3.0-or-later, see LICENSE.md. Not affiliated with the University of Limoges.