diff --git a/src/mod_welcome.py b/src/mod_welcome.py
index 9fb3978..68d62fb 100644
--- a/src/mod_welcome.py
+++ b/src/mod_welcome.py
@@ -1,8 +1,6 @@
from shiny import module, ui, render
import json
-
-# UI ----
-# Note that we made conter_ui a function, and decorated it
+from datetime import datetime
@module.ui
@@ -20,7 +18,8 @@ def welcome_ui():
[0]: https://ag-link.xyz
"""),
- ui.output_text("dataset_infos"),
+ # ui.output_text("dataset_infos"),
+ ui.output_ui("dataset_infos"),
ui.h3("Ursprung der Idee"),
ui.markdown("""
Die Idee für dieses Projekt überkam uns bei einem Vortrag der KEW (Kritische Einführungswochen) an der Universität Leipzig im Herbst 2020. Im Zuge eines Vortrages von Copwatch Leipzig wurde dort die Rolle der Polizei auf Twitter zu den Ausschreitungen zum G20 2017 in Hamburg erläutert.
@@ -30,11 +29,13 @@ def welcome_ui():
Und die Fronten waren von Anfang an klar.
So hat die Polizei in ihrer theoretisch neutralen Rolle die Bevölkerung zu informieren versagt und von Anfang an zur eskalierenden Stimmungsmache, die zur „Welcome to Hell“ Demonstration einen Höhepunkt erreicht hat, beigetragen.
- Doch nicht nur das, laut einer Studie (https://g20.protestinstitut.eu/) wurden während des Geschehens von Medienakteuren, den schnell abgesetzten Tweets der Polizei zur aktuellen Lage von Blockaden und Ausschreitungen schnell vertraut, obwohl die Polizei ein Teil der Konfliktpartei.
+ Doch nicht nur das, laut einer [Studie][0] wurden während des Geschehens von Medienakteuren, den schnell abgesetzten Tweets der Polizei zur aktuellen Lage von Blockaden und Ausschreitungen schnell vertraut, obwohl die Polizei ein Teil der Konfliktpartei.
Einige der abgesetzten Tweets zur Dynamik der Veranstaltung und den Ausschreitungen haben sich schlussendlich sogar als falsch herausgestellt, wodurch bewusst oder unbewusst Falschinformationen verbreitet wurden.
Der Vortrag von Copwatch Leipzig hat genau solche Tweets analysiert und Folgen davon vorgestellt. Dies geschah aber von Hand, also die Tweets wurden nicht maschinell herausgesucht, verarbeitet und analysiert, sondern in mühseliger Handarbeit selektiert und analysiert.
Als Gruppe von Technik-Interessierten Menschen dachten wir uns darauf hin, warum nicht einfach ALLE Tweets der Polizei sammeln und automatisiert analysieren, um herauszufinden ob wir solche Untersuchungen, wie von Copwatch Leipzig oder der G20 Studie, nicht auch automatisieren könnten.
+
+ [0]: https://g20.protestinstitut.eu/
"""),
ui.h3("Vortragswoche"),
ui.markdown("""Infos zur Vortragswoche"""),
@@ -49,30 +50,34 @@ def welcome_ui():
with open("data/general_analysis_results.json", "r") as f:
general_analysis_dict = json.load(f)
-# Server ----
-# Note that we just added the @module.server decorator
-
@ module.server
def welcome_server(input, output, session, starting_value=0):
@output
- @render.text
+ @render.ui
def dataset_infos():
+ date_format_str = "%Y-%m-%d %H:%M:%S"
+
tweet_count = general_analysis_dict["tweet_count"]
hashtags = general_analysis_dict["hashtags"]
mentions = general_analysis_dict["mention"]
url = general_analysis_dict["url"]
num_police_accounts = general_analysis_dict["num_police_accounts"]
- date_first_tweet = general_analysis_dict["date_first_tweet"]
- date_last_tweet = general_analysis_dict["date_last_tweet"]
+ date_first_tweet = datetime.strptime(general_analysis_dict["date_first_tweet"], date_format_str).strftime("%d.%m.%Y")
+ date_last_tweet = datetime.strptime(general_analysis_dict["date_last_tweet"], date_format_str).strftime("%d.%m.%Y")
day_diff = general_analysis_dict["day_diff"]
- avg_post_hour = general_analysis_dict["avg_post_hour"]
num_text_tokens = general_analysis_dict["num_text_tokens"]
- ds_txt = f"""Der Datensatz umfasst {tweet_count} Tweets bestehend aus {num_text_tokens} Wörtern.
- Es wurden {hashtags} Hashtags, {mentions} Erwähnungen und {url} Links erfasst.
- Im Datensatz sind Tweets von {num_police_accounts} Polizei, BKA, Bundespolizei, etc. enthalten.
- Der erste erfasste Tweet ist vom {date_first_tweet}, und der letzte vom {date_last_tweet}. Damit haben wir über {day_diff} Tage Tweets gesammelt
- Und die durchschnittliche Uhrzeit für Tweets ist ca. {int(avg_post_hour)} Uhr.
- """
- return ds_txt
+ return ui.markdown(f"""
+ **Datensatz Übersicht:**
+
+ Anzahl Tweets: **{tweet_count}**
+ Anzahl Wörter/ Satzzeichen/ Emojis: **{num_text_tokens}**
+ Anzahl Hashtahs in Tweets: **{hashtags}**
+ Anzahl Erwähnungen in Tweets: **{mentions}**
+ Anzahl Links in Tweets: **{url}**
+ Anzahl Polizei Accounts: **{num_police_accounts}** (incl. Zoll, Bundespolizei, BKA, etc.)
+ Datum des ersten Tweets: **{date_first_tweet}**
+ Datum des letzter Tweets: **{date_last_tweet}**
+ Anzahl Tage mit gesammelten Tweets: **{day_diff}**
+ """)