mikrocontroller.net

Forum: PC-Programmierung Schulferien ical parser


Autor: Bashnewbe (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen,
ich brauche hilfe bei einem bash Linux Skript oder node.js


Unter https://www.schulferien.eu/downloads/ferien-im-ical-format/
Findet man für die Ferien ical Dateien. Ich versichere seit Tagen ein 
Linux bash Script hinzubekommen welches das aktuelle Datum überprüft ob 
es in dem Zeitraum ist in dem die Ferien angeben sind.

Der Zeitraum sieht so aus:
BEGIN:VEVENT
SUMMARY:OSTERFERIEN
DTSTART;VALUE=DATE:20180326
DTEND;VALUE=DATE20180407
END:VEVENT
Wobei es mehrere VEVENT Blöcke gibt, d.h. es müssten alle VEVENT Blöcke 
durchsucht werden ob das aktuelle Datum in dem Zeitraum ist und mir das 
SUMMARY als Text ausgeben.


Ziel war es das alles in node.js Code zu erstellen, kann mir jemand 
helfen?


Danke

Autor: Raspberry (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Es gibt da auch Web APIS für. Nimm dir dein Datum und durchlaufe das 
iCal. Dann siehst du dir an, ob dein Datum grosser als dtstart und 
kleiner als dtend ist

Autor: Bashnewbe (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wie kann ich die einzelnen VEVENTs als Array ausgegeben? Kannst du mir 
helfen?

Autor: imonbln (Gast)
Datum:

Bewertung
1 lesenswert
nicht lesenswert
Ich spreche kein node.js aber ich kann mir nicht vorstellen das du der 
Erste bist der das Problem hat. Tante google spuckt zum beispiel diese 
Lib aus https://github.com/tritech/node-icalendar um denn Calender zu 
parsen. Der rest sollte einfach sein.  Über die Events Iterieren und 
gucken ob das Aktuelle Datum innerhalb des aktuellen Event liegt.

Ansonsten quick & Dirty iCal zeilenweise lesen. und selber Parsten des 
Format ist ja recht einfach. Zum Beipspiel kannst du gucken ob in der 
Zeile SUMMARY, DTSTART oder DTEND vorkommt und wenn du die Drei zusammen 
hast einen geeigneten Datensatz anlegen.

Bashnewbe schrieb:
> SUMMARY:OSTERFERIEN
> DTSTART;VALUE=DATE:20180326
> DTEND;VALUE=DATE20180407

Bis du Hier sicher das für DTSTART & END das DATE einmal mit ':' und 
einmal Ohne gespeichert wird? Wenn es immer mit Doppelpunkt ist einfach 
den String am Doppelpunkt trennen und den zweiten teil in ein Datum 
wandeln, Dafür sollte es fertige Funktionen geben. Wenn der Doppelpunkt 
dir zu Plump ist geht auch eine regexp um das Datum aus den String zu 
extrahieren.

Autor: Hannes J. (pnuebergang)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Bashnewbe schrieb:
> Hallo zusammen,
> ich brauche hilfe bei einem bash Linux Skript oder node.js

Man kann natürlich einen Haufen Hipster BS wie node.js auffahren oder 
man kann es mit typischen Linux-Bordmitteln mal eben in rund 30 Zeilen 
runterscripten. Ohne es jetzt komplett getestet zu haben:
gawk -F: -vtarget=<Datum zum Testen, Format YYYYMMDD> '
BEGIN { n = 0 }

$1 == "SUMMARY" {
    $1 = ""
    summary = substr($0, 2)
    next
}

$1 == "DTSTART;VALUE=DATE" {
    dtstart = $2
    next
}

$1 == "DTEND;VALUE=DATE" {
    dtend = $2
    next
}

/END:VEVENT/ {
   summaries[n] = summary
   dtstarts[n] = dtstart
   dtends[n] = dtend
   n++
   next
}

END {
    for(i = 0; i < n; i++) {
        dtstart = dtstarts[i]
        dtend = dtends[i]
        if((target >= dtstart) && (target <= dtend)) {
             marker = ">>>"
        } else {
             marker = "   "
        }
        print marker dtstart dtend "-" summaries[i]
    }
}

' schulferien.ica

: Bearbeitet durch User
Autor: arduinoneuling (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ist das auch möglich in node.js jdm. mir den code basteln kann?

Wäre super nett

Autor: imonbln (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
arduinoneuling schrieb:
> ist das auch möglich in node.js jdm. mir den code basteln kann?

Ja es ist auch möglich in node.js, Ich habe da schon eine lib raus 
gesucht.
Außerdem hast du hier ein Gerade zu "strait forward" example in AWK, das 
solltest DU, auch so in node.js machen können.

Und Nein, nach meiner Erfahrung ist das Forum eher nicht bereit, 
Coding-Monkey zu spielen. Auch wenn das Problem recht trival ist. Aber 
Hey wenn du es selbst versuchst könntest du was lernen.
Solltest Du dabei auf Probleme  stoßen die sich nicht mit 5 Minuten 
googlen erschlagen lassen, sind hier im Forum meistens freundliche 
Leute, die dir helfen (auch wenn ich vermute das die meisten hier nicht 
unbedingt node.js im Fokus haben)

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.