Die Informationen von dieser Seite können auch als JSON-Objekte abgerufen werden. Die Seite bietet jedoch keine REST-Schnittstelle.
Für jede Veranstaltung finden Sie eine JSON-Datei. Der Link ist jeweils im Bild zur Veranstaltung zu finden. Für die Veranstaltung “Algorithmen und Datenstrukturen II” beispielsweise finden Sie die Seite unter /lectures/algdatii.html, das dazugehörige JSON finden Sie unter /api/lectures/algdatii/base.json.
Veranstaltungsobjekte haben folgende Felder:
short: Abkürzung der Veranstaltunglong: Titel der Veranstaltunglast: Semester in dem die Veranstaltung zuletzt statt fandsemesters: Abkürzungen aller Semester mit Veranstaltungsidebar: Array von Sidebar-Objektenmaincontent: Array von Content-ObjektenDie Objekte aus denen der Sidebar-Content generiert wird, haben folgenden Aufbau:
title: Überschrift der Sidebar-Boxtext: Sidebar-Box-Inhalt, wenn Textlistitems: Sidebar-Box-Inhalt als Array, wenn AufzählungJedes Sidebar-Listitem-Objekt besteht aus einem text- und einem url-Feld.
Es gibt 4 verschiedene Felder in einem Content-Objekt:
lecture: Vorlesungstermine und -inhaltelab: Praktikumstermine und -inhalteslides: Vorlesungsfolien und Handoutsexercises: ÜbungsblätterIst etwas davon nicht vorhanden, z.B. wenn es keine Folien gibt, hat das entsprechende Feld den Wert null.
Das Lecture-Objekt enthält 3 Felder:
daytime: Wochentag und Uhrzeitroom: Hörsaallectures: Array mit Objekten die die folgenden Felder enthalten: date: Datum des Vorlesungsterminstopic: Inhalt des VorlesungsterminsAchtung: Das lectures-Array befindet sich ab sofort in der Datei lectures.json.
Das Lab-Objekt enthält 2 Felder mit Arrays:
groups: Teilgruppen mit je name: Name der Teilgruppedaytime: Wochentag und Uhrzeitroom: Praktikumsraumlabs: Praktikumstermine mit je dates: Array mit je einem Termin pro Teilgruppetopic: Inhalt des PraktikumsterminsAchtung: Das labs-Array befindet sich ab sofort in der Datei labs.json.
Das Slides-Array enthält Objekte je Folie mit folgenden Feldern:
name: Titel des Foliensatzes, des Handouts und des dazugehörigen Changelogsfile: Dateiname des Foliensatzes ohne DateiendungDas Excercises-Array enthält Objekte je Übungsblatt mit folgenden Feldern:
name: Titel des Übungsblatt und des dazugehörigen Changelogsfile: Dateiname des Übungsblatt ohne DateiendungDie Changelogs selbst sind auch wieder JSON-Objekte, die die Git-Commits für die Datei source seit changesSince im Array changes enthalten. Dabei besteht ein change aus date, dem Commitdatum, und subject, der Commitmessage. Dadurch erfahren Sie was sich in letzter Zeit an dem entsprechenden Dokument geändert hat. Nachdem Slides und Handouts aus einem Markdown-Dokument generiert werden, gibt es die Changelogs nur für Folien und für Übungsblätter.
Um die Folien und Aufgabenblätter direkt herunterladen zu können, fehlen noch einige Informationen. Diese finden Sie in der Datei /api/base.json. Das darin Base-Objekt enthält folgende Felder:
filesPrefix: Präfix-URLdirs: Verzeichnisnamen für die verschiedenen Artefakte: slideshandoutsexercisesexamschangelogslidesexercisessuffixes: Dateiendungen für die selben ArtefakteSie wollen wissen, was im dritten Praktikumstermin der Veranstaltung “Algorithmen und Datenstrukturen I” statt findet und wann er ist.
Sie holen sich das Objekt /api/lectures/algdati.json als algdati.
Dort finden Sie unter algdati.maincontent.lab.labs das Array mit den Praktikumsterminen. Sie holen sich das dritte Objekt aus dem Array. Darin finden Sie unter topic was gemacht wird. Unter dates finden Sie ein Array mit den Datumsangaben.
Wenn Sie z.B. in der zweiten Teilgruppe sind, finden Sie als zweites Element das Datum ihres dritten Praktikums.
Sie wollen alle Handouts der Veranstaltung “Algorithmen und Datenstrukturen II” herunterladen.
Dazu benötigen Sie neben dem Objekt /api/lectures/algdatii.json auch noch das Base-Objekt.
Aus dem algdatii-Objekt holen Sie sich aus dem Array algdatii.maincontent.slides alle Dateinamen (Feld file) als filename.
Mit dem Base-Objekt base bekommen Sie nun die Informationen um die Download-URLs zusammen zu bauen. Der grundsätzliche Aufbau einer solchen URL ist filesPrefix/lecturename/artefaktDir/file.suffix.
Dabei gilt also:
filesPrefix = https://ob.cs.hm.edu/public/lecturename = algdatiiartefaktDir = handoutsfile = 01_Hashverfahrensuffix = pdfEinzig die Klausuren finden Sie etwas versteckt in einer Sidebar-Box. Andererseits sind die Dateinamen immer Klausur gefolgt von SS für Sommersemester oder WS für Wintersemester sowie der zweistelligen Jahreszahl des Datums an dem das Semester begonnen hat. Die Klausur in “Software Engineering II (IB)” vom Wintersemester 2015/16 hat also den Dateinamen KlausurWS15. Zusammen mit den Informationen aus dem Base-Objekt können Sie daraus die folgende URL berechnen.
Das heisst die einfachste Methode alle alten Klausuren automatisch zu finden ist für alle Semester seit dem Wintersemester 2012/13 die URLs zu berechnen und zu versuchen die Datei herunter zu laden.