====== Social Media Meta-Daten ======
Ziel: Graphen erstellen, die die Anzahl Zugriffe in der Zeit aufzeigen, z.B.
* Zugriffe pro Tag (für jeden Tag), damit sollten Schulferien sichtbar werden.
* Zugriffe pro Stunde und Wochentag (damit sollten Stundenpläne/Trainingspläne o.ä. sichtbar werden).
Dazu müssen erst mal die Daten eingelesen und in ein Format gebracht werden, womit gearbeitet werden kann.
{{lehrkraefte:blc:informatik:yt-watch-history.svg?300}}
===== JSON-Dateien =====
==== Kurz-Übersicht ====
JSON-Dateien sind sehr gut maschinenlesbar und auch einfach zu produzieren. JSON kann verschiedene Datenstrukturen enthalten, u.a.
* Zahlen: Ganzzahlen, Dezimalbrüche (mit Dezimalpunkt), z.B. ''42'', oder ''3.1415926''
* Strings (Zeichenketten) zwischen doppelten Anführungszeichen ''"'', z.B. ''"Hallo"''.
* Listen (Arrays), zwischen ''['' und '']'', Einträge durch Kommas getrennt, z.B. ''[2,5,"Bla", [42,67],1]''
* Die Einträge selbst können beliebige JSON-Datenstrukturen sein.
* Objects (Dictionaries), zwischen ''{'' und ''}'', Schlüssel-Wert Paar durch Kommas getrennt, z.B. ''{"name":"Vreni", "alter":27, "pets":["dog", "cat", "rat"]}''
* Die Schlüssel sind immer Strings zwischen doppelten Anführungszeichen, gefolgt von einem Doppelpunkt '':''
* Die Werte sind beliebige JSON-Datenstrukturen.
* Leerschläge, Tabs, Zeilenumbrüche werden ignoriert (ausser in Strings natürlich).
==== Einlesen einer JSON-Datei in Python ====
import json
with open('name_meiner_datei_im_gleichen_verzeichnis.json', encoding="utf-8") as f:
data = json.load(f)
==== Ausgabe in JSON-Datei ====
import json
with open('datei_wird_ueberschrieben.json', 'w') as f:
json.dump(data, f) # Kompakte Datei
# json.dump(data, f, indent=2) # Indentierte Datei mit Zeilenumbrüchen
==== Zugriff auf die Daten in Python ====
Wir betrachten als Beispiel folgenden JSON Eintrag
''{"name":"Vreni", "alter":27, "pets":["dog", "cat", "rat"]}''
# Daten in der Variable data eingelesen
print(f"Name ist {data["name"]})
print(f"Zweites pet ist {data["pets"][1]}")
==== Datenstrukturen anlegen ====
data = {} # Leerer dictionary (JSON Object)
data["name"] = "Vreni"
# Oder obige zwei Zeilen in einer: data = {"name":"Vreni"}
data["pets"] = ["dog", "cat"]
data["pets"].append("rat") # Liste vergrössern
data["alter"] = 3**3
===== Umgang mit Datum/Zeit-Angaben =====
Dokumentation https://docs.python.org/3/library/datetime.html
==== Datum/Zeit in ISO-Format ====
from datetime import datetime
zeit = datetime.fromisoformat("2026-02-03T13:55:38.223Z")
print(zeit)
print(f" hour={zeit.hour} weekday={zeit.weekday()} timestamp={zeit.timestamp()}")
==== Andere Formate ====
''2026-02-06 15:12:18''
zeit = "2026-02-06 15:12:18"
time = datetime.strptime(zeit, "%Y-%m-%d %H:%M:%S")
Instagramm liefert einen Timestamp. Versuchen Sie ''datetime.fromtimestamp(ts)''
Eventuell gibt es für das vorliegende Format bereits einen Parser, sonst Format selbst beschreiben und mit
[[https://docs.python.org/3/library/datetime.html#datetime.datetime.strptime|datetime.strptime]] umwandeln.
====== Beispielcodes und -Daten ======
* [[https://bldsg-my.sharepoint.com/:f:/g/personal/ivo_bloechliger_ksbg_ch/IgDxVQONflH2RKaNwrpyaWY3AQPGWz18Ba9TdV1FD8JzrCU?email=4DNP%40ksbg.ch&e=nQ7JcN|Siehe in diesem One-Drive Ordner]]. Legen Sie hier auch Ihre Scripts ab (mit bezeichnendem Dateinamen).
===== Alte Seiten mit Konvertierungsprogrammen =====
* [[lehrkraefte:blc:informatik:glf4-23:socialmedia-data:analyze|Scripts Blc vom 2023]]
* [[lehrkraefte:ks:teaching:informatik-glf4-23-4fnp#code|Scripts Ks vom 2023]]