diff --git a/pyproject.toml b/pyproject.toml index 6a61e5cdf85249d38ead207203ea4ab19708c63a..9a65ae4edbdb7141a312b5096fb54c3dd3524731 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 0ee16b1f7e5f7d1134eb836dd25127161e0786ca..d39135e19ba0b5dde794630f36c5fbbf27e4a498 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)