From a92a3f409d075f47812284844d35354f4e55796b Mon Sep 17 00:00:00 2001
From: Jan Eggers <janeggers@untergeekPro.local>
Date: Wed, 22 Jan 2025 07:47:11 +0100
Subject: [PATCH] Checkpoint

---
 pyproject.toml |  3 +++
 tg_hr_check.py | 47 +++++++++++++++++++++++++++++++++++++----------
 2 files changed, 40 insertions(+), 10 deletions(-)

diff --git a/pyproject.toml b/pyproject.toml
index 6a61e5c..9a65ae4 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -17,6 +17,9 @@ dependencies = [
     "requests", # Alle bsky-Calls über Requests
     "openai", # für die Bildbeschreibung
     "ollama", # für die Bildbeschreibung
+    "openai-whisper", # für die Transkription
+    "bs4", # Seitenanalyse
+    "pydub", # Transkription/Audioformate
 ]
 readme="README.md"
 license = {file = "LICENSE"}
diff --git a/tg_hr_check.py b/tg_hr_check.py
index 0ee16b1..d39135e 100644
--- a/tg_hr_check.py
+++ b/tg_hr_check.py
@@ -39,12 +39,11 @@ def is_hr_url(url):
         return True
     return False
 
-def find_hr_links(text):
-    # Regex, um Links zu extrahieren
+def find_links(text):
+    # Regex, um Links aus Text zu extrahieren
     if text is None or text=="":
         return []
     urls = re.findall(r'https?://[^\s]+', text)
-    hr_links = [url for url in urls if is_hr_url(url)]
     return hr_links
 
 if __name__ == "__main__":
@@ -52,14 +51,30 @@ if __name__ == "__main__":
     # Schau, ob es schon Daten gibt
     if not os.path.exists('tg-checks'):
         os.makedirs('tg-checks')
-    filename = f'tg-checks/config.csv'
+    filename = f'tg-checks/channels.csv'
     if os.path.exists(filename):
         channels_df = pd.read_csv(filename)
         print(f"Config-Datei mit {len(channels_df)} Kanälen")
         channels = channels_df['Kanal'].to_list()
     else:
         channels=['fragunsdochdasoriginal','freiheitffm']
-    hr_links = []
+    # Datei mit den Links, auf die geprüft werden soll
+    # Durchsucht in den gefunden Links auf diese Strings (naiv).
+    #
+    # Strings sollten also z.B. hessenschau.de 
+    filename = f'tg-checks/checks.csv'
+    if os.path.exists(filename):
+        checks_df = pd.read_csv(filename)
+        checks = checks_df['Kanal'].to_list()
+    else:
+        channels=['hessenschau.de',
+                  'hrinforadio.de',
+                  "hr3.de",
+                  'hrfernsehen.de',
+                  'ardmediathek.hr',
+                  'hr.de',
+                  ]
+    warning_links = []
     for c in channels: 
         existing_df = pd.DataFrame()
         profile = tgc_profile(c)
@@ -93,14 +108,26 @@ if __name__ == "__main__":
                 print(f"Einlesen {start_post+1} bis {last_post}...")
                 posts = tgc_read_range(c, start_post+1, last_post, save=False, describe= False)
                 # Nach hr-Links suchen
+                # Die Posts, die hr-Links enthalten, markieren
+                # und später als Tabelle ausgeben, die dann von einem Watch-Programm 
+                # beobachtet wird
+                alerts=[]
                 for post in posts:
-                    interessant = find_hr_links(post['text'])
-                    if post['links']:
-                        interessant.extend(post['links'])
-                hr_links.extend(interessant)
-                print(f"Potenziell interessant: {interessant}")
+                    # Links gegen Liste prüfen
+                    for l in post['links']:
+                        for ch in checks:
+                            # Taucht der Link in der Liste auf?
+                            alert = post
+                            # Speichern, was verlinkt wurde
+                            alert['alert'] = ch
+                            alerts.append(alert)
+                print(f"Neue Alerts: ")
+                for a in alerts:
+                    print(a)
                 # Posts anhängen an das csv dieses Kanals
+                alerts_df = pd.DataFrame(alerts)
                 df = pd.DataFrame(posts)
                 df = pd.concat([existing_df, df]).drop_duplicates(subset=['nr']).reset_index(drop=True)
                 df.to_csv(f'tg-checks/{c}.csv', index=False)  # Save to CSV for example
     print("Ende Gelände.")
+    df.to_csv(f'tg-checks/alerts.csv', index=False)
-- 
GitLab