Zephyrnet-logo

Lærerkoding: utforsking av CalDav-filer

Dato:

Lærerkoding: utforsking av CalDav-filer

August 25, 2019

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:

Skjermbilde 2019 08 25 kl 11 23 39

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):

Nytt bilde

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/

spot_img

Siste etterretning

spot_img