lehrkraefte:ks:informatik-glf4-23-4hw

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
Last revision Both sides next revision
lehrkraefte:ks:informatik-glf4-23-4hw [2023/03/10 13:37]
Simon Knaus
lehrkraefte:ks:informatik-glf4-23-4hw [2023/05/05 07:42]
Simon Knaus
Line 1: Line 1:
 ===== Progamm ===== ===== Progamm =====
 +==== KW 18 ====
  
 +=== Ziele === 
 +  * Vorträge sind abgeschlossen
  
 +=== Bewertungskriterien und Rahmenbedingungen Voträge ===
 +== Form ==
 +Wir haben 7 Voträge für 90 Minuten: Maximale Dauer eines Votrags 10 Minuten.
 +Präsentationstechnik und -medium sind frei wählbar.
 +
 +== Bewertungskriterien ==
 +  * Klarheit des Votrages
 +  * Vollständigkeit der Beantwortung der Leitfragen (siehe [[lehrkraefte:ks:informatik-glf4-23-4iw#kw_17|letztes Mal]])
 +  * Kurzweiligkeit des Vortrages
 +
 +
 +==== KW 17 ====
 +<WRAP alert center  round 70%>
 +**Abgabe Bericht: ** Bis 10.5.2023 um 20:00 auf SharePoint abgeben. 
 +</WRAP>
 +=== Ziele ===
 +  *  Bericht ist abgeschlossen und auf Sharepoint abgeben. Format und Details siehe unten.
 +  *  Gruppen für Vorträge inkl. Themenwahl ist abgeschlossen.
 +
 +=== Auftrag === 
 +Bildet Gruppen von maximal 3 Personen und wählt euch ein Thema. Thema (Nummer) und Gruppenzusammensetzung bitte in Forms kommunizieren. Vorträge am 12. Mai.
 +
 +=== Vortragsinhalte ===
 +  - [[https://chat.openai.com/|ChatGPT]]
 +  - [[https://www.midjourney.com/|Midjourney]] (braucht Discord-Account)
 +  - [[https://labs.openai.com/|DALL-E 2]]
 +  - [[https://www.bing.com/new|BingChat]] 
 +  - [[https://www.perplexity.ai/|Perplexity AI]]
 +  - [[https://beta.elevenlabs.io/|Eleven Labs]]
 +  - [[https://www.d-id.com/|D-ID]]
 +  - [[https://www.nytimes.com/2023/04/19/arts/music/ai-drake-the-weeknd-fake.html|Fake Drake]] (Kein Tool, aber eine Reihe von Tools; Artikel ggf. bei als [[https://bldsg-my.sharepoint.com/:b:/r/personal/simon_knaus_ksbg_ch/Documents/streammovies/literature/An%20AI%20Hit%20of%20Fake%20%E2%80%98Drake%E2%80%99%20and%20%E2%80%98The%20Weeknd%E2%80%99%20Rattles%20the%20Music%20World%20-%20The%20New%20York%20Times.pdf?csf=1&web=1&e=jV4ppB|PDF]])
 +
 +Für jedes Thema sollen die folgenden vier Fragen beantwortet werden:
 +  * Was ist der Zweck des KI-Tools und wie funktioniert es?
 +  * Was sind die mögliche Vor- und Nachteile der Verwendung des KI-Tools?
 +  * Wie genau und zuverlässig ist das KI-Tool, und welche Faktoren beeinflussen die Resultate?
 +  * Welche Auswirkungen (Geschäftsmodelle, Ethik, Politik, etc.) könnte der Einsatz des KI-Tools haben?
 +
 +
 +==== KW 13 ====
 +=== Ziele ===
 +Bericht ist begonnen. Nächstes Mal 1 Lektion Bericht, Start Vorträge.
 +
 +=== Eckpunkte Bericht ===
 +
 +Dokumentation der eigenen Analyse in einem PDF-Dokument, welches 
 +  - Eine Einleitung enthält, welche
 +    * Beschreibt (Screenshot; Shortcut: ''PrtScr'' oder ''Alt+PrtScr'') woher die Daten kommen und wie diese aussehen.
 +    * Beschreibt, welche Daten erhoben werden.
 +  - Eine Frage formuliert, welche auf Grund von Excel-Analysen (mindestens eine Pivot-Tabelle) der eigenen Daten beantwortet kann.
 +  - Mindestens eine Analyse der eigenen Daten welche die Frage aus dem vorigen Punkt beantwortet. Z.B. Wann mache ich xxx am häufigsten?
 +  - Einen Abschnitt, welcher Zusammenfasst, was du in diesem Teil der Informatik gelernt hast, bzgl.
 +    * Excel
 +    * Python
 +    * BigData und sozialen Netzen im Allgemeinen.
 +  - Einen Abschnitt (mindestens 1000 Zeichen inkl. Lehrschläge) zur Frage <<Wie stehen Social Media, Demokratie und Gesundheit zueinander>>. Falls dir die Thematik neu ist, lies dir die nachfolgenden Artikel durch. Ihr könnt auch einen Text zu viert abgeben. Damit kann jede:r eine Quelle lesen und ihr könnt einen Abschnitt (zu 1000 Zeichen) abgeben. 
 +    - https://www.nzz.ch/feuilleton/juergen-habermas-warnt-soziale-netzwerke-gefaehrden-die-demokratie-ld.1702434 oder als [[https://bldsg-my.sharepoint.com/:b:/r/personal/simon_knaus_ksbg_ch/Documents/streammovies/literature/nzz_habermas.pdf?csf=1&web=1&e=yrbdRN|PDF]]
 +    - https://www.mdr.de/wissen/medien-und-demokratie-100.html
 +    - https://www.tagesanzeiger.ch/eine-demokratie-destabilisieren-team-jorge-machts-ab-6-millionen-396187159107 oder als [[https://bldsg-my.sharepoint.com/:b:/r/personal/simon_knaus_ksbg_ch/Documents/streammovies/literature/ta_jorge.pdf?csf=1&web=1&e=aIdRl0|PDF]]
 +    - https://www.ft.com/content/0e2f6f8e-bb03-4fa7-8864-f48f576167d2 oder als [[https://bldsg-my.sharepoint.com/:b:/r/personal/simon_knaus_ksbg_ch/Documents/streammovies/literature/ft_twenge.pdf?csf=1&web=1&e=4DYsik|PDF]]
 +
 +Bewertungskriterien:
 +   * Nachvollziehbarkeit der Ausführungen und Analysen
 +   * Dokumentation der Analysen (Erklärungen, Screenshots, etc.)
 +   * Ausführlichkeit der Analysen
 +   * Darstellung des Berichts
 +   * Stringenz der Argumentation
 +
 +=== Tipps Word ===
 +  * ''PrtScr'' erstellt ein Bildschirmfoto  des ganzen Bildschirms in der Zwischenbalge (''CTRL''+''V'' zum Einfügen)
 +  * ''Alt''+''PrtScrn'' erstellt ein Bildschirmfoto  des aktiven Fensters in der Zwischenbalge (''CTRL''+''V'' zum Einfügen)
 +  * ''Win''+''PrtScrn'' erstellt ein Bildschirmfoto und speichert es im Bilder-Ordner von Windows
 +  * ''Win''+''Shift''+''S'' öffnet einen Dialog um ein Bildschirmfoto aufzunehmen und einen Bereich auszuwählen und speichert es dann in der Zwischenbalge (''CTRL''+''V'' zum Einfügen)
 +=== Abgabe Format ===
 +Bitte Bericht im **PDF**-Format auf dem Sharepoint-Abgabe-Ordner abgeben. Dateiname ''vorname_nachname_bericht_bigdata.pdf''. Der Dateiname muss **genau** so gewählt werden.
 +
 +
 +==== KW 12 ====
 +=== Ziele ===
 +Erste Analysen mit Pivot-Tabellen in Excel deiner Daten von Youtube oder Instagram aus der letzten Lektion.
 +
 +=== Auftrag ===
 +  - CSV in Excel öffnen 
 +    - [[https://web.microsoftstream.com/video/114ca60b-fa45-4b99-bb9e-a62b032fd5c6|Einführungsvideo Excel]] schauen
 +    - Folgende Excel-Funktionen nachlesen resp. ausprobieren:
 +      - [[https://support.microsoft.com/de-de/office/wochentag-funktion-60e44483-2ed1-439f-8bd0-e404c190949a|Wochentag]]
 +      - [[https://support.microsoft.com/de-de/office/stunde-funktion-a3afa879-86cb-4339-b1b5-2dd2d7310ac7|Stunde]]
 +      - [[https://support.microsoft.com/de-de/office/mittelwert-funktion-047bac88-d466-426c-a32b-8f33eb960cf6|Mittelwert]]
 +    - Spalten erstellen mit den den notwendigen Informationen, z.B. Stunde am Tag, Wochentag, etc. (siehe oben) und diese dann als Excel-Datei speichern.
 +  - Folgende Fragen mit Filter oder Pivot beantworten:
 +    * Zu welcher Tageszeit schaue ich am meisten Videos?
 +    * An welchem Wochentag schaue ich am meisten Videos?
 +    * Wie viele Videos schaue ich durchschnittlich pro Tag?
 +    * Eigene Fragen geben mehr Punkte.
 +
 +
 +==== KW 11 ====
 +=== Ziele === 
 +
 +Du kennst deine Daten aus Instagram oder Youtube und hast sie in strukturierter Form in Excel vorliegen.
 +
 +=== Auftrag ===
 +  * Schau dir das [[https://web.microsoftstream.com/video/4507c9a3-4afe-44c1-acd4-a96cd91c6fb8|Einführungsvideo]] an.
 +  * Navigiere zur heruntergeladenen ZIP-Datei, das heisst, geh mit dem Windows-Explorer (Win+E) zu diesem Ordner. Mit einem Rechtsklick kannst du die Datei entpacken.
 +  * Untersuche die heruntergeladene Datei (das heisst, entpacke sie und öffne die enthaltenen Dateien und Ordner)
 +  * Wähle unten deinen Code für Instagram (deutsch oder englisch) resp Youtube (deutsch oder englisch). Passe den Dateipfad im Code an und führe den Code aus.
 +  * Überprüfe die erhaltene CSV-Datei in Excel
 +
 +Hast du keine eigenen Daten kannst du {{lehrkraefte:ks:informatik-glf4-22:jan14-history.html|diese Datei verwenden}} (Rechtsklick -> herunterladen). Für Interessiere: Der Code zur Aufbereitung der Youtube-Daten (Instagram ist analog) ist in diesem [[https://web.microsoftstream.com/video/4c478e5b-609d-4429-bc20-78b9f8abab93|Video]] erklärt
 +
 +<WRAP alert center  round 70%>
 +**Achtung: ** Entweder ins Homeverzeichnis kopieren (da habt nur ihr Leserechte) oder //unbedingt// nachher wieder permanent löschen (''Shift+Del'').
 +</WRAP>
 +=== Code ===
 +== Twitter ==
 +
 +<code python twitter.py>
 +import re        # Regular Expressions
 +import datetime  # Datum/Zeit 
 +import os        # Files suchen
 +
 +# Erklärungen zu diesem Code sind Analog dem Youtube-Extraktor.
 +
 +rootdir = "C:/Users/Simon.Knaus/OneDrive - Kt. SG BLD/ksbg/Informatik/bigdata/twitter/data"
 +
 +# Resultat, das am Schluss geschrieben werden soll
 +csv = ""   # Comma separated values
 +# Wie viele Kontrollausgaben?
 +debug = 100
 +
 +# Alle HTML-Dateien im Verzeicznis anzeigen            
 +for root, dirs, files in os.walk(rootdir):
 +    for file in files:
 +        if file.endswith(".js"):
 +            filepath = os.path.join(root, file) 
 +            # Datei oeffnen
 +            f = open(filepath, "r")
 +            html = f.read()  # Alles einlesen
 +            f.close()        # Datei schliessen
 +
 +
 +            # Datum der aus zwei verschiedenen Formaten einlesen
 +            # Alle nötigen Angaben werden in Klammern "ge-captured"
 +            daten = re.findall("(\d{1,4})-(\d{1,2})-(\d{1,2})T(\d{1,2}):(\d{1,2}):(\d{1,2}).000Z", html)
 +            daten2 = re.findall("(\d{1,4})-(\d{1,2})-(\d{1,2}) (\d{1,2}):(\d{1,2}):(\d{1,2})", html)
 +            #print(daten2)
 +            #print(daten2)
 +            
 +            if(debug>0):
 +                print(file,": ",len((daten+daten2)))
 +                debug-=1
 +
 +
 +            # Alle Einträge durchgehen, d enthält jeweils den nächsten Eintrag
 +            for d in (daten2+daten):
 +                # Einträge in Zahlen umwandeln
 +                # Monat plus die anderen Einträge (ohne AM/PM) in Zahlen umgewandelt 
 +                #   Die Zeichenkette "42" ist nicht das gleiche wie die Zahl 42.
 +    
 +                e = [int(x) for x in d]
 +                if debug>0:
 +                    # Ausgabe zur Kontrolle, sollte folgendes Format Produzieren
 +                    print(e) # [1, 6, 2021, 21, 23, 12]
 +                    debug -= 1  # Um 1 vermindern
 +
 +                # Datum daraus generieren (macht die Datumsmanipulation einfacher).
 +                # Jahr, Monat, Tag, Stunde, Minute, Sekunde
 +                datum = datetime.datetime(e[0], e[1], e[2], e[3], e[4],e[5])
 +
 +                if debug>0:
 +                    # Ausgabe zur Kontrolle, produziert folgendes Format
 +                    print(datum)   # 2021-01-06 21:23:12
 +                    debug -= 1  # Um 1 vermindern
 +
 +
 +                # Formatierte Ausgabe des Datums, siehe https://www.w3schools.com/python/python_datetime.asp
 +                # \n heisst neue Zeile.
 +                csv += datum.strftime("%Y-%m-%d %H:%M:%S;"+os.path.splitext(file)[0]+"\n" #Das Format soll so angepasst werden, damit die Tabellenkalkulation dann damit umgehen kann.
 +
 +            # Ausgabe in Datei schreiben
 +        f = open("resultat_twitter.csv", "w")
 +        f.write(csv)
 +        f.close()
 +</code>
 +== Snapchat ==
 +<code python snapchat.py>
 +import re        # Regular Expressions
 +import datetime  # Datum/Zeit 
 +import os        # Files suchen
 +
 +# Erklärungen zu diesem Code sind Analog dem Youtube-Extraktor.
 +
 +rootdir = "C:/Users/Simon.Knaus/OneDrive - Kt. SG BLD/ksbg/Informatik/bigdata/mydata_1678177023208/html"
 +
 +# Resultat, das am Schluss geschrieben werden soll
 +csv = ""   # Comma separated values
 +# Wie viele Kontrollausgaben?
 +debug = 30
 +
 +# Alle HTML-Dateien im Verzeicznis anzeigen            
 +for root, dirs, files in os.walk(rootdir):
 +    for file in files:
 +        if file.endswith(".html"):
 +            filepath = os.path.join(root, file) 
 +            # Datei oeffnen
 +            f = open(filepath, "r")
 +            html = f.read()  # Alles einlesen
 +            f.close()        # Datei schliessen
 +
 +
 +            # Datum der Form 30.12.2021, 22:13 einlesen
 +            # Alle nötigen Angaben werden in Klammern "ge-captured"
 +            daten = re.findall("(\d{1,4})-(\d{1,2})-(\d{1,2}) (\d{1,2}):(\d{1,2}):(\d{1,2}) UTC", html)
 +            daten2 = re.findall("(\d{1,4})-(\d{1,2})-(\d{1,2}) UTC", html)
 +            if(debug>0):
 +                print(file,": ",len(daten))
 +                debug-=1
 +
 +
 +            # Alle Einträge durchgehen, d enthält jeweils den nächsten Eintrag
 +            for d in (daten+daten2):
 +                # Einträge in Zahlen umwandeln
 +                # Monat plus die anderen Einträge (ohne AM/PM) in Zahlen umgewandelt 
 +                #   Die Zeichenkette "42" ist nicht das gleiche wie die Zahl 42.
 +
 +                e = [int(x) for x in d]
 +                if debug>0:
 +                    # Ausgabe zur Kontrolle, sollte folgendes Format Produzieren
 +                    print(e) # [1, 6, 2021, 21, 23, 12]
 +                    debug -= 1  # Um 1 vermindern
 +
 +                # Datum daraus generieren (macht die Datumsmanipulation einfacher).
 +                # Jahr, Monat, Tag, Stunde, Minute, Sekunde
 +                datum = datetime.datetime(e[0], e[1], e[2], e[3], e[4],e[5])
 +
 +                if debug>0:
 +                    # Ausgabe zur Kontrolle, produziert folgendes Format
 +                    print(datum)   # 2021-01-06 21:23:12
 +                    debug -= 1  # Um 1 vermindern
 +
 +
 +                # Formatierte Ausgabe des Datums, siehe https://www.w3schools.com/python/python_datetime.asp
 +                # \n heisst neue Zeile.
 +                csv += datum.strftime("%Y-%m-%d %H:%M:%S;"+os.path.splitext(file)[0]+"\n" #Das Format soll so angepasst werden, damit die Tabellenkalkulation dann damit umgehen kann.
 +
 +            # Ausgabe in Datei schreiben
 +        f = open("resultat_snapchat.csv", "w")
 +        f.write(csv)
 +        f.close()
 +</code>
 +== Instagram Deutsch ==
 +<code python insta_deutsch.py>
 +import re        # Regular Expressions
 +import datetime  # Datum/Zeit 
 +import os        # Files suchen
 +
 +# Erklärungen zu diesem Code sind Analog dem Youtube-Extraktor.
 +
 +rootdir = "C:/pfad/zum/entpackten/instagram/ordner/"
 +
 +# Resultat, das am Schluss geschrieben werden soll
 +csv = ""   # Comma separated values
 +# Wie viele Kontrollausgaben?
 +debug = 10
 +
 +# Alle HTML-Dateien im Verzeicznis anzeigen            
 +for root, dirs, files in os.walk(rootdir):
 +    for file in files:
 +        if file.endswith(".html"):
 +            filepath = os.path.join(root, file) 
 +            # Datei oeffnen
 +            f = open(filepath, "r")
 +            html = f.read()  # Alles einlesen
 +            f.close()        # Datei schliessen
 +            
 +            
 +            # Datum der Form 30.12.2021, 22:13 einlesen
 +            # Alle nötigen Angaben werden in Klammern "ge-captured"
 +            daten = re.findall("(\d{1,2}).(\d{1,2}).(\d{1,4}), (\d{1,2}):(\d{1,2})", html)
 +            if(debug>0):
 +                print(file,": ",len(daten))
 +                debug-=1
 +                   
 +         
 +            # Alle Einträge durchgehen, d enthält jeweils den nächsten Eintrag
 +            for d in daten:
 +                # Einträge in Zahlen umwandeln
 +                # Monat plus die anderen Einträge (ohne AM/PM) in Zahlen umgewandelt 
 +                #   Die Zeichenkette "42" ist nicht das gleiche wie die Zahl 42.
 +                
 +                e = [int(x) for x in d]
 +                if debug>0:
 +                    # Ausgabe zur Kontrolle, sollte folgendes Format Produzieren
 +                    print(e) # [1, 6, 2021, 21, 23, 12]
 +                    debug -= 1  # Um 1 vermindern
 +            
 +                # Datum daraus generieren (macht die Datumsmanipulation einfacher).
 +                # Jahr, Monat, Tag, Stunde, Minute, Sekunde
 +                datum = datetime.datetime(e[2], e[1], e[0], e[3], e[4],0)
 +
 +                if debug>0:
 +                    # Ausgabe zur Kontrolle, produziert folgendes Format
 +                    print(datum)   # 2021-01-06 21:23:12
 +                    debug -= 1  # Um 1 vermindern
 +            
 +                
 +                # Formatierte Ausgabe des Datums, siehe https://www.w3schools.com/python/python_datetime.asp
 +                # \n heisst neue Zeile.
 +                csv += datum.strftime("%Y-%m-%d %H:%M:%S;"+os.path.splitext(file)[0]+"\n" #Das Format soll so angepasst werden, damit die Tabellenkalkulation dann damit umgehen kann.
 +            
 +            # Ausgabe in Datei schreiben
 +        f = open("resultat.csv", "w")
 +        f.write(csv)
 +        f.close()
 +</code>
 +== Instagram Englisch ==
 +<code python insta_englisch.py>
 +import re        # Regular Expressions
 +import datetime  # Datum/Zeit 
 +import os        # Files suchen
 +
 +# Erklärungen zu diesem Code sind Analog dem Youtube-Extraktor.
 +
 +rootdir = "C:/pfad/zum/entpackten/instagram/ordner/"
 +mnum = {"Jan":1, "Feb":2, "Mar":3, "Apr":4, "May":5, "Jun":6, "Jul":7, "Aug":8, "Sep":9, "Oct":10,"Nov":11, "Dec":12}; 
 +
 +# Resultat, das am Schluss geschrieben werden soll
 +csv = ""   # Comma separated values
 +# Wie viele Kontrollausgaben?
 +debug = 10
 +
 +# Alle HTML-Dateien im Verzeicznis anzeigen            
 +for root, dirs, files in os.walk(rootdir):
 +    for file in files:
 +        if file.endswith(".html"):
 +            filepath = os.path.join(root, file) 
 +            # Datei oeffnen
 +            f = open(filepath, "r")
 +            html = f.read()  # Alles einlesen
 +            f.close()        # Datei schliessen
 +            
 +            
 +            # Datum der Form 30.12.2021, 22:13 einlesen
 +            # Alle nötigen Angaben werden in Klammern "ge-captured"
 +            daten = re.findall("([A-Z][a-z][a-z]) (\d{1,2}), (\d{4}), (\d{1,2}):(\d{1,2}) ([AP]M)", html)
 +
 +            
 +            if(debug>0):
 +                print(file,": ",len(daten))
 +                debug-=1
 +                   
 +         
 +            # Alle Einträge durchgehen, d enthält jeweils den nächsten Eintrag
 +            for d in daten:
 +                # Einträge in Zahlen umwandeln
 +                # Monat plus die anderen Einträge (ohne AM/PM) in Zahlen umgewandelt 
 +                #   Die Zeichenkette "42" ist nicht das gleiche wie die Zahl 42.
 +                
 +                e = [mnum[d[0]]] + [int(x) for x in d[1:-1]]
 +                if d[5]=="PM":  # Nachmittag? Plus 12 Stunden (Ausser Mitternacht = 0)
 +                   e[3]=(e[3]+12) % 24
 +                if debug>0:
 +                    # Ausgabe zur Kontrolle, sollte folgendes Format Produzieren
 +                    print(e) # [1, 6, 2021, 21, 23, 12]
 +                    debug -= 1  # Um 1 vermindern
 +            
 +                # Datum daraus generieren (macht die Datumsmanipulation einfacher).
 +                # Jahr, Monat, Tag, Stunde, Minute, Sekunde
 +                datum = datetime.datetime(e[2], e[0], e[1], e[3], e[4],0)
 +
 +                if debug>0:
 +                    # Ausgabe zur Kontrolle, produziert folgendes Format
 +                    print(datum)   # 2021-01-06 21:23:12
 +                    debug -= 1  # Um 1 vermindern
 +            
 +                # Wochentag (Mo=0, Di=1, ..., So=6)
 +                # Sämtliche Methoden für datetime-Objekte sind hier beschrieben: https://docs.python.org/3/library/datetime.html#datetime-objects
 +                wday = datum.weekday()
 +            
 +                # Formatierte Ausgabe des Datums, siehe https://www.w3schools.com/python/python_datetime.asp
 +                # \n heisst neue Zeile.
 +                csv += datum.strftime("%Y-%m-%d %H:%M:%S;"+os.path.splitext(file)[0]+"\n" #Das Format soll so angepasst werden, damit die Tabellenkalkulation dann damit umgehen kann.
 +            
 +            # Ausgabe in Datei schreiben
 +        f = open("resultat.csv", "w")
 +        f.write(csv)
 +        f.close()
 +</code>
 +
 +== Youtube Englisch ==
 +<code python youtube_englisch.py>
 +import re        # Regular Expressions
 +import datetime  # Datum/Zeit 
 +
 +# Erklärungen zu diesem Code gibt es auch als Video hier:
 +# https://web.microsoftstream.com/video/4c478e5b-609d-4429-bc20-78b9f8abab93
 +# und für Datensparsame und solche ohne BLDSG-Account auch hier:
 +# https://fginfo.ksbg.ch/~ivo/videos/informatik/vierte-klasse/daten-extraktion-youtube-watchtime-extraktion.mp4
 +
 +# Daten einlesen
 +# Entweder vollständiger Pfad zur Datei oder (wie z.B. C:\Users\Hansli\Desktop\watch-history.html) oder
 +# nur Dateiname, wenn die Datei im gleichen Verzeichnis wie das Pythonprogramm liegt.
 +f = open("C:/temp/watch-history.html", "r")
 +html = f.read()  # Alles einlesen
 +f.close()        # Datei schliessen
 +
 +print(html)
 +# Datum der Form Jan 6, 2021, 9:23:12 PM CET
 +# Alle nötigen Angaben werden in Klammern "ge-captured"
 +daten = re.findall(r"([A-Z][a-z][a-z]) (\d{1,2}), (\d{4}), (\d{1,2}):(\d{1,2}):(\d{1,2}) ([AP]M) CET", html)
 +
 +#Erste 3 Einträge zur Kontrolle ausgeben
 +print(daten[0:3])
 +
 +# Zuordnung der Monatsnamen zu Monatsnummern, z.B. ist mnum["Jul"] gleich 7
 +mnum = {"Jan":1, "Feb":2, "Mar":3, "Apr":4, "May":5, "Jun":6, "Jul":7, "Aug":8, "Sep":9, "Oct":10,"Nov":11, "Dec":12}; 
 +
 +# Resultat, das am Schluss geschrieben werden soll
 +csv = ""   # Comma separated values
 +
 +# Wie viele Kontrollausgaben?
 +debug = 10
 +
 +# Alle Einträge durchgehen, d enthält jeweils den nächsten Eintrag
 +for d in daten:
 +    # Einträge in Zahlen umwandeln
 +    # Monat plus die anderen Einträge (ohne AM/PM) in Zahlen umgewandelt 
 +    #   Die Zeichenkette "42" ist nicht das gleiche wie die Zahl 42.
 +    e = [mnum[d[0]]] + [int(x) for x in d[1:-1]]
 +    if d[6]=="PM":  # Nachmittag? Plus 12 Stunden (Ausser Mitternacht = 0)
 +        e[3]=(e[3]+12) % 24
 +
 +    if debug>0:
 +        # Ausgabe zur Kontrolle, sollte folgendes Format Produzieren
 +        print(e) # [1, 6, 2021, 21, 23, 12]
 +        debug -= 1  # Um 1 vermindern
 +
 +    # Datum daraus generieren (macht die Datumsmanipulation einfacher).
 +    # Jahr, Monat, Tag, Stunde, Minute, Sekunde
 +    datum = datetime.datetime(e[2], e[0], e[1], e[3], e[4], e[5])
 +
 +    if debug>0:
 +        # Ausgabe zur Kontrolle, produziert folgendes Format
 +        print(datum)   # 2021-01-06 21:23:12
 +        debug -= 1  # Um 1 vermindern
 +
 +    # Wochentag (Mo=0, Di=1, ..., So=6)
 +    # Sämtliche Methoden für datetime-Objekte sind hier beschrieben: https://docs.python.org/3/library/datetime.html#datetime-objects
 +    wday = datum.weekday()
 +
 +    # Formatierte Ausgabe des Datums, siehe https://www.w3schools.com/python/python_datetime.asp
 +    # \n heisst neue Zeile.
 +    csv += datum.strftime("%Y-%m-%d %H:%M:%S\n" #Das Format soll so angepasst werden, damit die Tabellenkalkulation dann damit umgehen kann.
 +
 +# Ausgabe in Datei schreiben
 +f = open("resultat.csv", "w")
 +f.write(csv)
 +f.close()
 +</code>
 +
 +== Youtube Deutsch ==
 +<code python youtube_deutsch.py>
 +import re        # Regular Expressions
 +import datetime  # Datum/Zeit 
 +
 +# VERSION FUER DEUTSCHE EXPORTE, Datumsangabe in der Form 09.02.2012, 14:15:59 MEZ
 +
 +# Erklärungen zu diesem Code gibt es auch als Video hier:
 +# https://web.microsoftstream.com/video/4c478e5b-609d-4429-bc20-78b9f8abab93
 +# und für Datensparsame und solche ohne BLDSG-Account auch hier:
 +# https://fginfo.ksbg.ch/~ivo/videos/informatik/vierte-klasse/daten-extraktion-youtube-watchtime-extraktion.mp4
 +
 +# Daten einlesen
 +# Entweder vollständiger Pfad zur Datei oder (wie z.B. C:\Users\Hansli\Desktop\watch-history.html) oder
 +# nur Dateiname, wenn die Datei im gleichen Verzeichnis wie das Pythonprogramm liegt.
 +f = open("jan14-history.html", "r")
 +html = f.read()  # Alles einlesen
 +f.close()        # Datei schliessen
 +
 +
 +# Datum der Form Jan 6, 2021, 9:23:12 PM CET
 +# Alle nötigen Angaben werden in Klammern "ge-captured"
 +
 +# Datum der Form 09.02.2012, 14:15:59 MESZ
 +daten = re.findall(r"(\d{2})\.(\d{2})\.(\d{4}), (\d{2}):(\d{2}):(\d{2}) MESZ", html)
 +
 +
 +#Erste 3 Einträge zur Kontrolle ausgeben
 +print(daten[0:3])
 +
 +# Zuordnung der Monatsnamen zu Monatsnummern, z.B. ist mnum["Jul"] gleich 7
 +mnum = {"Jan":1, "Feb":2, "Mar":3, "Apr":4, "May":5, "Jun":6, "Jul":7, "Aug":8, "Sep":9, "Oct":10,"Nov":11, "Dec":12}; 
 +
 +# Resultat, das am Schluss geschrieben werden soll
 +csv = ""   # Comma separated values
 +
 +# Wie viele Kontrollausgaben?
 +debug = 10
 +
 +# Alle Einträge durchgehen, d enthält jeweils den nächsten Eintrag
 +for d in daten:
 +    # Einträge in Zahlen umwandeln
 +    # Monat plus die anderen Einträge (ohne AM/PM) in Zahlen umgewandelt 
 +    #   Die Zeichenkette "42" ist nicht das gleiche wie die Zahl 42.
 +    e = [int(x) for x in d]
 +
 +    if debug>0:
 +        # Ausgabe zur Kontrolle, sollte folgendes Format Produzieren
 +        print(e) # [1, 6, 2021, 21, 23, 12]
 +        debug -= 1  # Um 1 vermindern
 +
 +    # Datum daraus generieren (macht die Datumsmanipulation einfacher).
 +    # Jahr, Monat, Tag, Stunde, Minute, Sekunde
 +    datum = datetime.datetime(e[2], e[1], e[0], e[3], e[4], e[5])
 +
 +    if debug>0:
 +        # Ausgabe zur Kontrolle, produziert folgendes Format
 +        print(datum)   # 2021-01-06 21:23:12
 +        debug -= 1  # Um 1 vermindern
 +
 +    # Wochentag (Mo=0, Di=1, ..., So=6)
 +    # Sämtliche Methoden für datetime-Objekte sind hier beschrieben: https://docs.python.org/3/library/datetime.html#datetime-objects
 +    wday = datum.weekday()
 +
 +    # Formatierte Ausgabe des Datums, siehe https://www.w3schools.com/python/python_datetime.asp
 +    # \n heisst neue Zeile.
 +    csv += datum.strftime("%Y-%m-%d %H:%M:%S\n" #Das Format soll so angepasst werden, damit die Tabellenkalkulation dann damit umgehen kann.
 +
 +# Ausgabe in Datei schreiben
 +f = open("resultat.csv", "w")
 +f.write(csv)
 +f.close()
 +
 +</code>
 ==== KW 10 ==== ==== KW 10 ====
 +
 +Lade deine Daten bei Youtube, Instagram, o.ä. herunter resp. beantrage das Herunterladen. Trage dann [[https://forms.office.com/r/UGDmxD7XzG|hier]]  ein, wo du die Daten <<bestellt>> hast.
 +
 +Üblicherweise kannst du deine Daten in HTML und JSON herunterladen. HTML (i.e., Webseiten-Format) kann direkt angeschaut werden JSON ist einfacher weiterzuverarbeiten.
 +
 +Achtung: Die Daten können sehr gross sein, dass sie unter Umständen kein Platz in deinem Home-Verzeichnis haben.
 +Dazu entweder
 +  * Home-Verzeichnis löschen
 +  * Oder, auf dem Laufwerk C ein Ordner (z.B. ''temp'') oder auf einen Memorystick erstellen und dann den Ziel-Speicherordner des Downloads (s.u.) anpassen.
 +
 +<hidden Download-Location anpassen>
 +{{ :lehrkraefte:ks:informatik-glf4-23:download_change.png?400 |}}
 +</hidden>
 +
 +Wenn du die Daten nicht <<findest>>, schau dir die Tipps unten an.
 +<hidden Tipps>
 +  * **Instagram**: Webseite: Mehr -> Deine Aktivität -> [[https://www.instagram.com/download/request|Deine Informationen herunterladen]]. Als Format sollte mindestens HTML gewählt werden.((JSON wäre praktischer, ist aber <<mühsamer>> um direkt anzuschauen))
 + 
 +  *  **YouTube**: Ist Teil von Googles Data-Takeout Portal: [[https://takeout.google.com/|Takeout Portal]]. Bei YouTube (unten) Verlauf wählen und wiederum mindestens HTML herunterladen.((JSON wäre praktischer, ist aber <<mühsamer>> um direkt anzuschauen))
 +  * **SnapChat**: Bei Snapchat ider Download bei der Privatsphäre untergebracht, schliesslich bei [[https://accounts.snapchat.com/accounts/downloadmydata?lang=de-DE]]
 +  * Irgendeine andere Platform
 +</hidden>
 +
 +<WRAP alert center  round 70%>
 +**Achtung**: Die Daten sind für alle einsehbar, wenn sie nicht im persönlichen Home-Verzeichnis sind! Ggf. nachher wieder löschen.
 +</WRAP>
 +Fordere die Daten an und trage im [[https://forms.office.com/r/UGDmxD7XzG|Formular]] ein, welche Daten du angefordert hast. Hast du mehrere Daten angefordert, kannst du diese mehrfach eintragen.
 +
 +== Ressourcen ==
 +  * Weniger reisserische Kurz-Dokumentation von ARD zu [[https://www.ardmediathek.de/video/planet-wissen/der-fall-cambridge-analytica/wdr/Y3JpZDovL3dkci5kZS9CZWl0cmFnLTY5N2RmYTYwLTA1ZTktNGY0Ni1hZTg1LWQyYmY0Njk1YTNmNw|Cambridge Analytica]]
 +  * Forschung zu neurologischen Effekten von Likes in einer [[https://www.cdmc.ucla.edu/wp-content/uploads/sites/170/2019/12/The-Power-of-the-Like-in-Adolescence-Effects-of-Peer-I....pdf|wissenschaftlichen Publikation]].
 +  * [[https://www.theguardian.com/global/2021/aug/22/how-digital-media-turned-us-all-into-dopamine-addicts-and-what-we-can-do-to-break-the-cycle|Artikel des Guardians]] zum Thema Abhängigkeit und Social Media.
 +
 +==== KW 9 ====
 === Ziele === === Ziele ===
   * Jede:r hat die wichtigsten Konzepte und Funktionen (siehe Aufträge letzte Woche) festgehalten   * Jede:r hat die wichtigsten Konzepte und Funktionen (siehe Aufträge letzte Woche) festgehalten
Line 58: Line 629:
  
  
-==== KW ====+==== KW ====
 === Ziele === === Ziele ===
   * Jede:r kann mit Excel Zufallszahlen simulieren und visuell darstellen, wie die untersuchte Grösse sich mit zunehmender Anzahl Versuche stabilisiert.   * Jede:r kann mit Excel Zufallszahlen simulieren und visuell darstellen, wie die untersuchte Grösse sich mit zunehmender Anzahl Versuche stabilisiert.
  • lehrkraefte/ks/informatik-glf4-23-4hw.txt
  • Last modified: 2023/06/05 15:33
  • by Simon Knaus