Google Kalender per Shellscript auslesen/abfragen

  • Hallo,
    zusätzlich zu den bisherigen Anzeigen auf meinem Wand-Tablet würde ich mir gerne die demnächst anstehenden Kalendereinträge aus dem Google-Kalener anzeigen lassen.

    Eine API gibt es wohl, hat schon mal jemand das ganze versucht per Shell-Script zu machen?

    Letztlich würde ich für die aktuellsten 5 Einträge entweder eine Textdatei pro Termin benötigen oder pro Eintrag (Termin) eine extra Zeile in einer Textdatei benötigen, die restliche "Aufbereitung" erfolgt dann per Script ....

    Kann hier jemand Tipps/Code beisteuern? Danke!


    UPDATE: Gerade über das gestoplert, mal schauen, ob es das ist was benötigt wird ....
    https://code.google.com/p/gcalcli/wiki/HowTo

    Einmal editiert, zuletzt von topsurfer (2. Januar 2015 um 23:19)

  • Hallo

    Einen Google Kalender kann man doch auch teilen (meine mit Rechtsklick auf den Kalender). Du erhälst dann einen Link auf eine iCal Datei, wenn ich mich nicht irre. Die müsstest du regelmässig abrufen und für deine Zwecke aufbereiten.
    Du bräuchtest kein Login und keine API benutzen.

    Viele Grüße
    mark


  • Hallo
    Einen Google Kalender kann man doch auch teilen (meine mit Rechtsklick auf den Kalender). Du erhälst dann einen Link auf eine iCal Datei, wenn ich mich nicht irre. Die müsstest du regelmässig abrufen und für deine Zwecke aufbereiten.
    Du bräuchtest kein Login und keine API benutzen.

    Viele Grüße
    mark


    Das wäre evtl. eine Möglichkeit, finde aber bei Google Kalender nur die Funktion, den Kalender freizugeben. Dann erhält der eingeladene einen Link zum Kalender, aber keinen Link zum downloaden einer iCal Datei.

    Mit der im ersten Beitrag gefundenen Methode bin ich auch nicht weitergekommen, habe einiges installiert:
    # apt-get gcalcli
    # wget https://bootstrap.pypa.io/ez_setup.py -O - | python
    # easy_install --upgrade google-api-python-client
    # apt-get install python-gflags

    Code
    root@raspberrypi:~# gcalcli list
    Error: must specify a username
    root@raspberrypi:~# gcalcli --username dummy@gmail.com --password PASSWORDXXXX list
    root@raspberrypi:~#


    Egal ob falsche Mailadresse oder Password (oder korrekte daten), es kommt nichts zurück ....

  • Den Download der .ics kann man sicher am Anfang des Shellkripts automatisieren.
    Für jeden Kalendereintrag hast du in der .ics Datei die Zeile

    Code
    DTSTART:20150103T130000Z


    Nach DTSTART hast du den : als Delimiter. Du kannst also wunderbar das Datum und die Zeit des Termins herausfiltern. Durch Abgleich mit dem aktuellen Datum/Zeit kannst du dann die aktuellsten 5 Einträge parsen und alle weiteren Infos zum jeweiligen Termin ausgeben/in eine Datei schreiben.

  • Das hier könnte ein Anfang sein:


  • Also der automatische Download mit wget oder curl sollte eigentlich kein Problem sein.
    ....


    Ich weiß zwar, wie ich mit #wget eine "einfache" Internetseite dumpen kann, aber wie ich das bei Google Calendar machbar sein kann ...
    Man muss sich doch authentifizieren ("einloggen"), und dann noch die Export-Funktion anstoßen ....


  • Mit der im ersten Beitrag gefundenen Methode bin ich auch nicht weitergekommen, habe einiges installiert:
    ...

    Hi,

    Du solltest halt keine hoffnungslos veraltete Software verwenden. Das letzte update auf dieser Projekt-Seite war vom Aug 2011. :D
    Hast du nicht den Hinweis ganz am Anfang gesehen dass das Projekt auf github "umgezogen" ist? :huh:

    https://github.com/insanum/gcalcli

    In disem Repository ist das letzte Update gerade mal 18 Stunden her. ;)
    Damit klappt's bestimmt.


    (PS: Für wget ist eine authentifizierung kein Problem)

    Grüße,
    Joh

    DON'T PANIC!

    Einmal editiert, zuletzt von joh.raspi (3. Januar 2015 um 16:54)

  • Du solltest halt keine hoffnungslos veraltete Software verwenden. Das letzte update auf dieser Projekt-Seite war vom Aug 2011. :D
    Hast du nicht den Hinweis ganz am Anfang gesehen dass das Projekt auf github "umgezogen" ist?
    ...
    In disem Repository ist das letzte Update gerade mal 18 Stunden her. ;)
    Damit klappt's bestimmt.


    OK, mein genannter Link war nicht ganz korrekt, bin aber auch dem Link zu github geholt und von dort installiert, aber eben mit dem beschriebenen Ergebnis :(

    Über Einstellungen => "Eigene Adresse" bin ich über:

    Zitat

    "Privatadresse" Dies ist die Privatadresse für diesen Kalender. Geben Sie diese Adresse nur für andere Personen frei, wenn Sie möchten, dass diese alle Termine in diesem Kalender anzeigen können.


    ... gestolptert.

    Dort gibt es URL's,unter diesen man direkt ein ics-Datei der XML herunterladen kann!

    Mal schauen, ob ich die "verarbeitet" bekomme ...

    Hier bin ich über ein php Script gestolptert, allerdings ist der Thread auch schon 5 Jahre alt, ob das funktionieren würde/könnte ... : http://www.ip-symcon.de/forum/threads/…bFront-anzeigen

    Den "MagicCooki", der dort beschrieben ist konnte ich nicht finden, dafür aber beim Google Calendar die zwei download-Optionen direkt ;)

    Einmal editiert, zuletzt von topsurfer (3. Januar 2015 um 18:38)

  • Hallo julian92
    dein Script funktioniert gut, solange man Einzeltermine und keine Terminserien verwendet.
    Man muss dann nämlich die Termine aus Startdatum, ... selber berechnen.
    Aber wie du selbst schreibst, das ist ein Anfang.

    Gruß aus der Stadt der CeBIT
    Jochen

  • So, Erfolg!
    Mit der Privaten URL von Google und dem Beispielscript von Julian92 (Danke!) kann ich die Kalendereinträge in ein Textfile schreiben und nun dort weiterverarbeiten.

    Danke euch allen für die freundliche Hilfe!!
    Bei fragen, melden.

    Einmal editiert, zuletzt von topsurfer (3. Januar 2015 um 19:34)

  • Mit dem richtigen Tool bringt man das auf eine Zeile:

    Code
    awk -F':' '$1 == "DTEND" { date = sprintf("%s.%s.%s",substr($2,7,2),substr($2,5,2),substr($2,0,4)) ; } $1 == "DESCRIPTION" { description = $2 } $0 == "END:VEVENT" { print "Ein Termin ist am: " date " Uhr Titel: " description }' test.ics

  • Hallo julian92
    dein Script funktioniert gut, solange man Einzeltermine und keine Terminserien verwendet.
    Man muss dann nämlich die Termine aus Startdatum, ... selber berechnen.
    Aber wie du selbst schreibst, das ist ein Anfang.


    Habe aktuell keine Terminserien drin, aber falls da jemand eine mit Shell-Skript realisierte Lösung oder Ansätze hat ....

    Stand:
    Habe mir mittels einem #sort und einem zuvor eingefügtem aktuellem Datum jetzt die nächst anstehenden (5) Termine rausgefiltert.

  • Hallo,
    der "Kalender" zeigt nun alle EInträge des Kalenders an, soweit gut!
    Was er nicht anzeigt sind die Geburtstage, diese werden zwar in der Google-Webseite angezeigt, aber nur dadurch, das folgendes aktiviert ist:

    Zitat

    Geburtstage
    Zeigt Ihnen Geburtstage von Bekannten in Ihren Google+ Kreisen und Google Kontakten an. Gegebenenfalls werden auch Jahrestage und andere Termine aus Google Kontakte angezeigt.


    Heißt, nun auch noch Google-Kontakte "abfragen", oder?

    Oder jemand eine andere Idee?

    Google-Kontakte bietet auch eine csv-Export-Funktion an, aber wie läßt sich das mit #wget und der Authentifizierung lösen?

  • Hallo

    ich wie kann ich das Script hier erweitern, das
    mir Termine für morgen in eine Datei geschrieben werden?

    Wenn morgen kein Termin ist, soll die Datei natürlich leer sein.

    Lässt sich das machen?

    Hintergrund: Ich habe in meinem Kalender Termin für Müllabfuhr und
    würde gerne einen Tag vorher erinnert werden, das die Tonne raus muss.


    Gruß

    Einmal editiert, zuletzt von noxx (25. Februar 2016 um 18:03)

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!