UUGRN Stammtisch.sh

Aus UUGRN
Version vom 29. Mai 2007, 11:03 Uhr von Rabe (Diskussion | Beiträge) (Script und Funktionsweise.)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)

Dieses Script ermittelt durch Ausnutzen von Seiteneffekten die Stammtischtermine in Mannheim und Heidelberg und gibt passenden SQL-Code für die Kalender-Tabelle aus.

Funktionsweise

Mittels GNU date wird für alle in Frage kommenden Tage der Wochentag %u ausgegeben, dieser wird von folgenden sed-Ausdruck mit 3 für Mittwoch = Heidelberg und 4 für Donnerstag = Mannheim umgewandelt. Durch die for D-Schleife werden nur die in Frage kommenden Tage durchlaufen, daher kann es keine false positives geben.

Die abschließende while-Schleife übernimmt die Ausgabe von sed und erzeugt das passende, hier unix epoch-Zeitformat und die restlichen Felder.

Script

    1  #! /bin/sh
    2  #
    3  # Berechnet die UUGRN-Stammtische und erzeugt das SQL für die Datenbank
    4  #
    5  # Jeden 2. Donnerstag im Monat um 19 Uhr in Mannheim (ORT=5)
    6  # Jeden 4. Mittwoch im Monat um 20 Uhr in Heidelberg (ORT=6)
    7  #
    8  # Das Scriptgeht von der Annahme aus, dass der 2. Donnerstag im Monat immer zwischen dem 8. und 14. liegen muss
    9  # und dass der 4. Mittwoch im Monat immer zwischen 22. und 28. liegt.
   10  # Die Schleifen als auch der egrep | sed Ausdruck gehen direkt darauf ein.
   11  #
   12  #
   13  # Raphael.Becker <rabe@uugrn.org>
   14
   15  JAHR=2007
   16
   17  for M in 01 02 03 04 05 06 07 08 09 10 11 12; do
   18    for D in 08 09 10 11 12 13 14 22 23 24 25 26 27 28 ; do
   19      gdate "+%u %d %Y-%m-%d" --date "$JAHR-$M-$D"
   20    done
   21  done |
   22  egrep "^(4 [01]|3 2)"  |
   23  sed -e 's,^3 [0-9]* ,20:00:00|6|"kleiner" Stammtisch|,;
   24          s,^4 [0-9]* ,19:00:00|5|Stammtisch|,;'  |
   25  while IFS='|' read ZEIT ORT BEZ DATUM junk; do
   26    echo "insert into KALENDER set ID=0, DATUM=$(gdate +%s --date "$DATUM $ZEIT"), ORT_ID=$ORT, TEXT='$BEZ';"
   27  done

Ausgabe für 2007

$ bin/uugrn_stammtischkalender.sh
insert into KALENDER set ID=0, DATUM=1168538400, ORT_ID=5, TEXT='Stammtisch';
insert into KALENDER set ID=0, DATUM=1169665200, ORT_ID=6, TEXT='"kleiner" Stammtisch';
insert into KALENDER set ID=0, DATUM=1170957600, ORT_ID=5, TEXT='Stammtisch';
insert into KALENDER set ID=0, DATUM=1172689200, ORT_ID=6, TEXT='"kleiner" Stammtisch';
insert into KALENDER set ID=0, DATUM=1173376800, ORT_ID=5, TEXT='Stammtisch';
insert into KALENDER set ID=0, DATUM=1175104800, ORT_ID=6, TEXT='"kleiner" Stammtisch';
insert into KALENDER set ID=0, DATUM=1176397200, ORT_ID=5, TEXT='Stammtisch';
insert into KALENDER set ID=0, DATUM=1177524000, ORT_ID=6, TEXT='"kleiner" Stammtisch';
insert into KALENDER set ID=0, DATUM=1178816400, ORT_ID=5, TEXT='Stammtisch';
insert into KALENDER set ID=0, DATUM=1179943200, ORT_ID=6, TEXT='"kleiner" Stammtisch';
insert into KALENDER set ID=0, DATUM=1181840400, ORT_ID=5, TEXT='Stammtisch';
insert into KALENDER set ID=0, DATUM=1182967200, ORT_ID=6, TEXT='"kleiner" Stammtisch';
insert into KALENDER set ID=0, DATUM=1184259600, ORT_ID=5, TEXT='Stammtisch';
insert into KALENDER set ID=0, DATUM=1185386400, ORT_ID=6, TEXT='"kleiner" Stammtisch';
insert into KALENDER set ID=0, DATUM=1186678800, ORT_ID=5, TEXT='Stammtisch';
insert into KALENDER set ID=0, DATUM=1187805600, ORT_ID=6, TEXT='"kleiner" Stammtisch';
insert into KALENDER set ID=0, DATUM=1189702800, ORT_ID=5, TEXT='Stammtisch';
insert into KALENDER set ID=0, DATUM=1190829600, ORT_ID=6, TEXT='"kleiner" Stammtisch';
insert into KALENDER set ID=0, DATUM=1192122000, ORT_ID=5, TEXT='Stammtisch';
insert into KALENDER set ID=0, DATUM=1193248800, ORT_ID=6, TEXT='"kleiner" Stammtisch';
insert into KALENDER set ID=0, DATUM=1194544800, ORT_ID=5, TEXT='Stammtisch';
insert into KALENDER set ID=0, DATUM=1196276400, ORT_ID=6, TEXT='"kleiner" Stammtisch';
insert into KALENDER set ID=0, DATUM=1197568800, ORT_ID=5, TEXT='Stammtisch';
insert into KALENDER set ID=0, DATUM=1198695600, ORT_ID=6, TEXT='"kleiner" Stammtisch';