Skip to content

fmatsch/CommentMonitor

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Kommentar-Monitor (CommentMonitor)

macOS-App, die Kommentare („Postings") unter Nachrichtenartikeln automatisch überwacht, speichert und gelöschte Kommentare als gelöscht markiert behält.

Aktuell unterstützte Quellen: derStandard.at, kurier.at, krone.at und kleinezeitung.at.

Hinweise:

  • oe24.at / Österreich und diepresse.com bieten kein öffentliches Leser-Kommentarsystem (nur Umfragen bzw. redaktionelle „Kommentare/ Gastkommentare") – dort gibt es nichts zu überwachen.
  • Kleine Zeitung nutzt dasselbe Coral wie Kurier; in anonymen Tests hatten die Artikel jedoch durchwegs 0 öffentlich sichtbare Kommentare (Kommentieren ist dort vermutlich abo-/login-gebunden). Technisch ist die Quelle korrekt integriert – vorhandene öffentlich lesbare Kommentare werden angezeigt.

Bauen & Starten

Es wird kein Xcode benötigt – nur die Command Line Tools (swiftc).

./build.sh          # erzeugt CommentMonitor.app
open CommentMonitor.app

Das App-Icon liegt als Resources/AppIcon.icns bei und wird beim Build ins Bundle kopiert. Neu erzeugen lässt es sich mit:

swiftc -O -framework AppKit -o /tmp/makeicon Tools/makeicon.swift
/tmp/makeicon /tmp/AppIcon.iconset
iconutil -c icns /tmp/AppIcon.iconset -o Resources/AppIcon.icns

Bedienung

  1. Mit „+“ einen Artikel-Link einfügen, z. B. https://www.derstandard.at/story/3000000318428/...
  2. Die App ruft die Kommentare ab und zeigt sie mit Autor, Datum, Bewertungen und Thread-Verschachtelung.
  3. „Einstellungen“ → Abfrage-Intervall (Standard 5 min). Die Überwachung läuft, solange die App geöffnet ist.

Artikelsuche (Lupe-Symbol)

  • Über das Lupen-Symbol in der Toolbar lässt sich quellenübergreifend nach Artikeln suchen; Treffer können direkt mit „+“ zum Monitor hinzugefügt werden.
  • Durchsucht derStandard (/search-Trefferseite) und Kurier (efs-varnish.kurier.at/api/v1/cfs/search, liefert sogar Kommentarzahlen).
  • Krone hat keine frei aufrufbare Such-API – Krone-Artikel daher per Link über „+“ hinzufügen.

Stichwort-Benachrichtigungen

  • In „Einstellungen“ ein Stichwort pro Zeile eintragen.
  • Taucht in einem neuen Kommentar (Text, Autor oder Titel) ein Stichwort auf, gibt es eine macOS-Mitteilung und der Kommentar wird gelb hervorgehoben.
  • In der Artikelansicht zeigt „N Treffer“ die Anzahl; mit „nur Treffer“ lässt sich auf Treffer filtern.
  • Mitteilungen erscheinen nur, wenn die App als Bundle gestartet wird (open CommentMonitor.app) und beim ersten Start die Erlaubnis erteilt wurde.

Gelöschte / bearbeitete Kommentare

  • Gelöschte Postings werden nicht entfernt, sondern durchgestrichen mit rotem „gelöscht“-Badge und Zeitpunkt angezeigt.
  • Zwei Erkennungswege:
    1. Direkt von der Quelle: derStandard liefert pro Posting einen lifecycleStatus; alles außer Published gilt als gelöscht.
    2. Verschwinden: fehlt ein zuvor gesehenes Root-Posting im vollständigen Snapshot, wird es als gelöscht markiert.
  • Textänderungen werden als Bearbeitung protokolliert (frühere Fassung aufklappbar).

Datenablage

~/Library/Application Support/CommentMonitor/data.json (Pfad auch in den Einstellungen einsehbar.)

Technik

  • SwiftUI, gebaut direkt mit swiftc (kein Xcode-Projekt nötig).
  • derStandard: GraphQL capi.ds.at/forum-serve-graphql/v1/ über Persisted Queries (GetForumInfo, ThreadsByForumQuery). Kein Login/Token – nur der Apollo-CSRF-Header x-apollo-operation-name.
  • Kurier: Kommentarsystem Coral (community.kurier.at). Coral erlaubt nur Persisted Queries, aufgerufen per GET ?query=&id=<persistedId>&variables=… (AllCommentsTabQuery). Ebenfalls kein Login nötig.
  • Kleine Zeitung: gleiches moderne Coral wie Kurier (comments.kleinezeitung.at), eigene Persisted-Query-ID; storyURL ist die Kurz-URL kleinezeitung.at/<id>. Parser wird mit Kurier geteilt (KurierSource.parse).
  • Krone: älteres Coral „Talk" v4 (talk.krone.at). Erlaubt rohe GraphQL-Queries per POST /api/v1/graph/ql (asset(url:){comments{nodes…}}). Felder u. a. status, deleted_at (Löschungen), user.username, created_at, action_summaries.count (Reaktionen), verschachtelte replies.
  • Weitere Zeitungen lassen sich über das NewsSource-Protokoll (Sources/Adapters.swift, Sources/KurierSource.swift) ergänzen.

Zum erneuten Erfassen der Coral-Query-IDs gibt es das Capture-Hilfsprogramm Tests/coral_capture.swift (lädt das Embed in einer WKWebView und protokolliert die echten GraphQL-Requests).

Bekannte Grenzen

  • Persisted-Query-Hashes (Sources/Adapters.swift) sind an die aktuelle derStandard-Forum-App gebunden. Aktualisiert derStandard das Forum, können sich die Hashes ändern; die App meldet das dann als Fehler („Persisted-Query“). Dann müssen die Hashes neu erfasst werden (siehe unten).
  • Sehr tief verschachtelte Antworten jenseits der von der Query gelieferten Ebene werden nur über ihren Status erkannt, nicht über Verschwinden.
  • Kurier: Es wird die erste Seite der Diskussion geladen (bis ~20 Wurzel-Kommentare samt verschachtelter Antworten). Bei sehr großen Diskussionen werden tiefere Seiten noch nicht nachgeladen (Pagination ist als Erweiterung vorgesehen).

Hashes neu erfassen (falls die API sich ändert)

Im Browser einen Artikel öffnen, Entwicklertools → Netzwerk, nach forum-serve-graphql filtern und die sha256Hash-Werte von GetForumInfo und ThreadsByForumQuery aus den Request-URLs übernehmen.

About

macOS-App, die Kommentare unter österreichischen Nachrichtenartikeln (derStandard, Kurier, Krone, Kleine Zeitung) überwacht und gelöschte Kommentare als gelöscht behält.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors