Lærerkoding: utforsking av CalDav-filer
Det er starten på skoleåret, og for meg på de store verdslige oppgavene er å få kalenderen satt opp for skoleåret. Skolens hjemmebryggede SAS har denne flotte funksjonen som vil generere .ics-filer som inneholder alle klassene dine som du kan importere til Google-kalenderen eller et annet kalenderprogram. Men det har ett problem - alle klassedataene dine er i enkeltfilen. Siden vi har en ny rotasjonsplan, håpet jeg at jeg kanskje kunne sette hver klasse i sin egen kalender for å la meg bedre se hvordan en bestemt klasse kartlegges gjennom de kommende ukene.
Da jeg tenkte litt på det, skjønte jeg at dette var en flott mulighet til å bruke kodingsferdighetene mine. Jeg visste at en .ics-fil i utgangspunktet var en tekstfil som listet opp alle hendelsene som skulle importeres til kalenderen. Jeg åpnet kalenderfilen i et tekstredigeringsprogram (Atom, i dette tilfellet) og tok en titt:
Hvis du ser nøye på denne filen, ser du at strukturen er ganske enkel. De første 7 linjene er overskriften som setter opp kalenderen, og deretter begynner hver begivenhet med BEGIN: VEVENT og slutter med END: VEVENT 7 linjer senere.
Det fikk meg til å tenke at jeg kunne skrive et pythonprogram som ville finne den første hendelsen, og deretter analysere den i 7-linjers biter, skrive hver del i en fil basert på hvilken klasse den var assosiert med (SUMMARY-linjen).
Jeg visste at python er bra for denne tingen, men jeg hadde glemt de finere punktene med å lese og skrive filer, så jeg googlet det. Jeg visste heller ikke om hvordan jeg ville analysere tekstfilen i 7 linjebiter, men googling av "parser tekstfil n linjer om gangen python" sendte meg til dette veldig hjelpsomme innlegget som introduserte meg for verktøy og islice-funksjonen som gjør akkurat det jeg trengte.
Her er programmet jeg kom på (lenke til kode på Github Gist):
Hvis du er interessert, her er en 5-minutters screencast der jeg forklarer hvordan denne koden fungerer
Alt i alt tok det meg omtrent 45 minutter å skrive denne koden, noe som sannsynligvis er nær den tiden det ville tatt meg å bare klippe og lime inn originalfilen i 4 separate kalenderfiler. Jeg er også sikker på at det er noen regexeksperter der ute som kunne ha gjort dette på 5 sekunder, og hvis du leser dette, vil jeg gjerne høre om det i kommentarene.
Hvis du var på skolen min, eller tilfeldigvis hadde en lignende calDav-fil som inneholder hendelser med samme navn som du ønsket å skille inn i individuelle filer, bør du kunne endre søkestrengene i linje 27, 31, 35 og 39 til hva som helst du leter etter, endrer du navnene på utdatafilene i de første 4 linjene, så vil du være god å gå.
Nå har jeg fått en mye bedre ide om hvordan CalDav-filer fungerer, og kan tenke på mange måter å endre dette programmet på:
- Hvis jeg visste alle dagene jeg skulle gi en quiz i en klasse, kunne jeg sette sammen en fil som ville liste opp alle quizdagene for å dele med elevene mine.
- Jeg kan endre dette programmet for å beregne det totale antallet klasseperioder eller totalt antall minutter jeg har i en klasse.
- Jeg kunne eksportere Google-kalenderen min som en .ics-fil, og deretter bruke et program som dette til å analysere alle slags spørsmål som om jeg hadde logget på treningen min, hvor ofte trener jeg det siste året.
Kilde: https://quantumprogress.wordpress.com/2019/08/25/teachers-coding-exploring-caldav-files/