Bearbeiten von „UUGRN Stammtisch.sh“

Aus UUGRN

Warnung: Du bist nicht angemeldet. Deine IP-Adresse wird bei Bearbeitungen öffentlich sichtbar. Melde dich an oder erstelle ein Benutzerkonto, damit Bearbeitungen deinem Benutzernamen zugeordnet werden.

Die Bearbeitung kann rückgängig gemacht werden. Bitte prüfe den Vergleich unten, um sicherzustellen, dass du dies tun möchtest, und speichere dann unten deine Änderungen, um die Bearbeitung rückgängig zu machen.

Aktuelle Version Dein Text
Zeile 1: Zeile 1:
Dieses Script ermittelt die [[UUGRN:Stammtisch|Stammtischtermine]] und [[UUGRN:FIXME Treffen]] und gibt passenden SQL-Code für die Kalender-Tabelle aus.  
+
Dieses Script ermittelt durch Ausnutzen von Seiteneffekten die [[UUGRN:Stammtisch|Stammtischtermine]] in Mannheim und Heidelberg und gibt passenden SQL-Code für die Kalender-Tabelle aus.  
  
== Script ==
+
== Funktionsweise ==
<code><pre>
+
Mittels [[gdate|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.
#! /bin/sh
 
  
YEAR=${1:-$(date +%Y)}
+
Die abschließende ''while''-Schleife übernimmt die Ausgabe von ''sed'' und erzeugt das passende, hier ''unix epoch''-Zeitformat und die restlichen Felder.
test "${YEAR}" -gt 2000 -a "${YEAR}" -lt 2038 || YEAR="$(date +%Y)"
 
  
for MONTH in $(gseq -w 01 12); do for DAY in $(gseq -w 01 31); do
+
== Script ==
     gdate "+%u|%d|%F" --date "${YEAR}-${MONTH}-${DAY}" 2>/dev/null
+
    1  #! /bin/sh
done; done |
+
    2  #
while IFS='|' read DOW DOM DATE; do
+
    3  # Berechnet die UUGRN-Stammtische und erzeugt das SQL für die Datenbank
  case ${DOM} in
+
    4  #
     01|02|03|04|05|06|07) NIM=1 ;;
+
    5  # Jeden 2. Donnerstag im Monat um 19 Uhr in Mannheim (ORT=5)
     08|09|10|11|12|13|14) NIM=2 ;;
+
    6  # Jeden 4. Mittwoch im Monat um 20 Uhr in Heidelberg (ORT=6)
     15|16|17|18|19|20|21) NIM=3 ;;
+
    7  #
     22|23|24|25|26|27|28) NIM=4 ;;
+
    8  # Das Scriptgeht von der Annahme aus, dass der 2. Donnerstag im Monat immer zwischen dem 8. und 14. liegen muss
    29|30|31) NIM=5 ;;
+
    9  # und dass der 4. Mittwoch im Monat immer zwischen 22. und 28. liegt.
     *) NIM="0" ;;
+
    10  # Die Schleifen als auch der egrep | sed Ausdruck gehen direkt darauf ein.
  esac
+
    11  #
 
+
    12  #
  SQL="insert into KALENDER set ID=0"
+
    13  # Raphael.Becker <rabe@uugrn.org>
  SQL2=""
+
    14
  case ${NIM}-${DOW} in
+
    15  JAHR=2007
    1-5) # 1. Freitag
+
    16
      SQL2=", DATUM='${DATE} 20:00:00', ORT_ID=11, TEXT='FIXME', EVENT_LINK='http://fixme.uugrn.org/'"
+
    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
    3-1) # 3. Montag
+
     19      gdate "+%u %d %Y-%m-%d" --date "$JAHR-$M-$D"
      SQL2=", DATUM='${DATE} 20:00:00', ORT_ID=12, TEXT='UnixStammtisch', EVENT_LINK='http://stammtisch.uugrn.org/'"
+
    20    done
      ;;
+
    21  done |
  esac
+
     22  egrep "^(4 [01]|3 2)"  |
 
+
     23  sed -e 's,^3 [0-9]* ,20:00:00|6|"kleiner" Stammtisch|,;
  if [ -n "${SQL2}" ]; then
+
     24          s,^4 [0-9]* ,19:00:00|5|Stammtisch|,;'  |
     echo "${SQL}${SQL2};"
+
     25 while IFS='|' read ZEIT ORT BEZ DATUM junk; do
  fi
+
     26    echo "insert into KALENDER set ID=0, DATUM=$(gdate +%s --date "$DATUM $ZEIT"), ORT_ID=$ORT, TEXT='$BEZ';"
done
+
     27  done
</pre></code>
 
 
 
=== Variablen ===
 
;YEAR,MONTH,DAY: Iteriert über alle Kalendertage des angegebenen Jahres
 
;DOW: day-of-week [1..7], 1=Montag 
 
;DOM: day-of-month [1..31]
 
;NIM: Nth-in-month [1..5]
 
  
 +
== 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';
  
 
[[Kategorie:Script]]
 
[[Kategorie:Script]]
[[Kategorie:UUGRN|Stammtischkalender]]
+
[[Kategorie:Verein]]

Bitte kopiere keine Inhalte, die nicht Deine eigenen sind!

Du gibst uns hiermit Deine Zusage, dass
  • Du den Text nicht aus Wikipedia kopiert hast
  • Du den Text selbst verfasst hast
  • oder der Text entweder
    • Allgemeingut (public domain) ist
    • oder der Copyright-Inhaber seine Zustimmung gegeben hat.
Wichtig
  • Benutze keine urheberrechtlich geschützten Werke ohne Erlaubnis des Copyright-Inhabers!
  • Falls dieser Text bereits woanders veröffentlicht wurde, weise bitte auf der 'Diskussion:'-Seite darauf hin.
  • Bitte beachte, dass alle UUGRN-Beiträge automatisch unter der der Creative Commons Lizenz stehen.
  • Falls Du nicht möchtest, dass Deine Arbeit hier von anderen verändert und verbreitet wird, dann drücke nicht auf "Artikel Speichern".

Bitte beantworte die folgende Frage, um diese Seite speichern zu können (weitere Informationen):

Abbrechen Bearbeitungshilfe (wird in einem neuen Fenster geöffnet)