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
lehrkraefte:ks:informatik-glf4-23-4hw [2023/03/10 13:37]
Simon Knaus
lehrkraefte:ks:informatik-glf4-23-4hw [2023/06/05 15:33] (current)
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: Unter Umständen hat dein Home-Verzeichnis zu wenig Speicherplatz.
 +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.1678451852.txt.gz
  • Last modified: 2023/03/10 13:37
  • by Simon Knaus