Giter Site home page Giter Site logo

haw2icalendar's Introduction


haw2iCalendar-Webapp online:

Bitte Bugs reporten!


haw2iCalendar

Termine der HAW-Veranstaltungen individuell zusammenstellen und im eigenen Kalenderprogramm (z.B. Google Calendar) verwenden.

Features

Genereller Ablauf

  1. HAW-Kalender csv-Textdatei einlesen
  2. Termine auswählen
  3. Auswahl als iCalendar-Datei (*.ics) speichern.
  4. iCalendar-Datei in eigene Kalender-Anwendung importieren

Screenshots

Download

https://github.com/theno/haw2iCalendar

Installation

haw2iCalendar ist in Python geschrieben. Neben einer Standard Python2-Installation (2.7.x) benötigt es noch:

  • SimpleParse: http://simpleparse.sourceforge.net/

  • wxglade (nur für klickiBunti.py): http://wxglade.sourceforge.net/

  • Unter Ubuntu 10.10 (x86_64) wird dies erledigt mit einem: aptitude install python python-simpleparse python-wxglade

  • Unter Windows 7 (x86_64) ist es mir gelungen, haw2iCalendar zu verwenden, sofern ich immer die 32-bit Versionen installiert habe.

  • Einen Mac hatte ich bisher nicht zur Verfügung gehabt. Wenn jemand hier haw2iCalendar erfolgreich zum Laufen bekommt, bitte ich um Info der notwendigen Schritte.

haw2iCalendar selber wird 'installiert', indem es in einen Ordner Deiner Wahl abgelegt wird:

git clone https://github.com/theno/haw2iCalendar.git

Im Root-Dir liegen die zwei GUIs:

  • python2 haw2iCalendar.py -- startet die commandGui.py -- die Referenz-GUI (läuft in einem Terminal)
  • python2 haw2iCalendar-klickiBunti.py -- für Mausschubser ;-)

haw2iCalendar.py

user@host:~/haw2iCalendar$ python2  ./haw2iCalendar.py  --help

Usage: haw2iCalendar.py [-o ICS-FILE] INFILE

Parse a haw calendar text file (Sem_I.txt or Sem_IuE.txt),
select dates, convert the dates to the iCalendar format (rfc5545)
and write them to stdout.

Options:
  -h, --help        show this help message and exit
  -p, --prof        group by lecturers
  -i, --informatik  alternative grouping (by semestergruppe from header)
  -o ICS-FILE       write iCalendar-output to file instead stdout

haw2iCalendar-klickiBunti.py

python2  ./haw2iCalendar-klickiBunti.py

Hintergrund

Das Department Informations- und Elektrotechnik (IuE) sowie das Department Informatik (Inf) der Hochschule für Angewandte Wissenschaften Hamburg (HAW) veröffentlichen neben den PDFs die Termine aller Veranstaltungen (Vorlesungen, Praktika, Übungen, etc.) auch in einer einzelnen Textdatei (IuE, Inf). Diese (für Menschen nur mühsam lesbare) Textdatei hat eine strukturierte Form (die sich andauerend ändert...), jedoch folgt sie keinem Standard. DER Standard für Kalenderdateien ist im RFC-5545 definiert und heißt iCalendar.

Ablauf

Eine HAW-Kalender Textdatei wird von haw2iCalendar geladen und anschließend geparst. Nun sind alle Veranstaltungen in einem aufklappbaren Menü aufgelistet. Alternativ zum Öffnen einer lokalen Datei können über das Menü 'Links' die gerade auf den HAW-Webseiten veröffentlichten Versionen heruntergeladen werden -- total praktisch. Die Veranstaltungen können nach den Semestern gruppiert werden (Studentensicht) oder nach den Dozenten gruppiert werden (Dozentensicht). Nun können dort Veranstaltungen per Doppelklick ausgewählt werden. Anschließend wird diese Auswahl per Knopfdruck als iCalendar-Datei (*.ics) gespeichert.

Das Besondere an haw2iCalender ist, daß aus einer Abkürzung der volle Name einer Veranstaltung abgeleitet wird. So mußt Du nicht diese ganzen komischen Abkürzungen auswendig lernen. Jedoch geht keine Info verloren: In der Beschreibung zu einem Termin wird sowohl die eigentliche Abkürzung, das Kürzel des Dozenten als auch die Version des HAW-Kalenders aufgeführt.

Weiterhin gibt es auch die Möglichkeit, in einem Rutsch iCalendar-Dateien jeweils für alle Semestergruppen und Dozenten zu erzeugen (Batch-Menü).

haw2iCalendar mit Google Calendar verwenden

Wenn Du kein Problem damit hast, daß USA-Behörden Zugriff auf Deine Termine erhalten, kannst Du die mit haw2iCalendar erzeugten iCalendar-Dateien in den Google Kalender importieren. Diese hast Du dann auf deinem (Android-) Smartphone immer dabei.

Am besten erstellst Du in Google Kalender unter 'Meine Kalender -> Hinzufügen' zunächst einen separaten Kalender für die HAW-Veranstaltungen (z.B. "WiSe2011/12"). Anschließend auf 'Weitere Kalender -> Hinzufügen -> Kalender importieren' drücken. Dort die mit haw2iCalendar erzeugte iCalendar-Datei auswählen und als Ziel den soeben erstellten Kalender festlegen.

Wenn nun eine neue Version der HAW-Kalender Textdatei veröffentlicht wird, kannst Du einfach einen neuen Kalender mit den geänderten Terminen anlegen und den alten Kalender wegschmeißen -- auch voll praktisch.

Im Gegensatz zu einem abonnierten Kalender kannst Du bei einem 'eigenen' Kalender auch selber Termine verändern, etwa weil ein Prof krank geworden ist oder so.

Andere Kalender-Programme

Alle ernstzunehmenden Kalender-Programme können Termine im iCalender-Format importieren. Auch hier empfiehlt es sich, die HAW-Termine in einem separaten Kalender zu führen, damit diese bei Terminänderungen durch einen neuen Kalender ersetzt werden könnnen.

Unter anderem können folgende Anwendungen oder Umgebungen mit iCalender- Dateien umgehen:

Fragen

Es gibt doch schon Programme, um eine Kalender-Datei zu erstellen, wieso nun haw2iCalendar?

Fun. Python-Programmierübung. Keine Lust mehr, den Kram von Hand zu machen. Etwas, was unter Linux läuft und volle Veranstaltungsnamen erzeugt.

Außerdem wird das Parsen nicht durch Regexe erledigt, sondern durch das Python-Modul 'SimpleParse'. Regexe sind, finde ich, schwer zu lesen und führen somit zu schwer wartbaren Code ('Read-only' Code). Mit SimpleParse wird die Struktur der Haw-Kalender Textdateien und der Veranstaltungskürzel jeweils durch eine verständlichere EBNF beschrieben. Dank einer Testumgebung in haw2iCalendar können die EBNFs zukünftig an neue Formulierungen zuverlässig angepasst werden (Ziel: wartbarer Code).

Welche anderen Programme gibt es noch, die sich mit diesen HAW-Kalender Textdateien herumschlagen?

Eine haw2icalendar-Website wäre ja derbs cool, gibt es sowas?

Ja! Der Webdienst ist hier erreichbar: haw2icalendar.theno.eu

(Testversion).

Wieso keine Android-App?

Mit einer Android-App wäre man an nur ein System gebunden. haw2iCalendar läuft auf GNU-Linux, Mac-OS und Windows, und mit den erzeugten iCalendar- Dateien können viele Anwendungen und Umgebungen etwas anfangen.

Weiteres Kommando

python2 src/allgroups2icalendar.py zeigt, wie haw2icalendar automatisiert (z.b. in einer Webanwendung -- spontan fällt mir Django ein) verwendet werden kann, etwa um von vorne herein ein standardisiertes Format der veröffentlichten Veranstaltungspläne zu verwenden (Wink-mit-dem-Zaunpfahl).

Kontakt

Wenn Du einen Fehler findest, eine Idee zur Verbesserung hast, oder Kritik äussern möchtest, melde Dich bitte bei mir:

theodor.nolte AT {,informatik.}haw-hamburg.de

haw2icalendar's People

Contributors

dariusgm avatar theno avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

Forkers

hexren repat

haw2icalendar's Issues

Volle Namen statt Kürzel

In der neuen Datei (06.10.2014) werden statt der Prof/Dozent-Kürzel jetzt die vollen Namen angezeigt.
Außerdem gibt es nach den neuen POs neue Kürzel, es müsste also faecher.py erweitert werden.

Könntest du den Parser anpassen?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.