unilim-edt-iut-info (1.0.0)

Published 2026-09-01 11:09:44 +00:00 by Mikkel ALMONTE--RINGAUD

Installation

[registries.forgejo]
index = "sparse+" # Sparse index
# index = "" # Git

[net]
git-fetch-with-cli = true
cargo add unilim-edt-iut-info@1.0.0 --registry forgejo

About this package

A wrapper for the timetables of the IUT's computer science department.

edt-iut-info.unilim.fr

npm crates.io docs.rs

A wrapper and helper for the .ics timetables of the IUT’s 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.

Dependencies

ID Version
chrono ^0.4
chrono-tz ^0.10
quoted_printable ^0.5
rikka ^0.2
scraper ^0.21
serde ^1
thiserror ^2
anyhow ^1
chrono ^0.4
serde_json ^1
tokio ^1
getrandom ^0.3
js-sys ^0.3
lol_alloc ^0.4
serde-wasm-bindgen ^0.6
tsify-next ^0.5
wasm-bindgen ^0.2
wasm-bindgen-futures ^0.4

Keywords

unilim edt timetable iut api
Details
Cargo
2026-09-01 11:09:44 +00:00
4
Mikkel ALMONTE--RINGAUD <contact@vexcited.com>
GPL-3.0-or-later
48 KiB
Assets (1)
Versions (1) View all
1.0.0 2026-09-01