Michael Schröpl: Bauanleitung für einen plattformunabhängigen Self-Browser

Beitrag lesen

Hi Matthias,

könnte man in diesem Forum nicht eine Funktion einbauen,
dass man nur Nachrichten von einem bestimmten Bereich sehen will ?

  • Ich will nur Nachrichten im Bereich PHP sehen!
  • Ich will nur Nachrichten im Bereich JavaScript sehen
  • Ich will nur Nachrichten im Bereich HTML sehen
    und so weiter. Dann würde man auch etwas schneller zum Ziel kommen.

ich habe mir so etwas vor einem halben Jahr mal geschrieben (angeregt
übrigens durch ein Posting hier im Forum, wo jemand andeutete, das mit
PHP realisiert zu haben - danke ;-).

Das kannst Du auch, wenn Du willst - es ist alles keine Zauberei.

Bauanleitung:
 1. ein CGI-Skript (in meinem Falle Perl).
 2. ein HTTP-Zugriff auf die Forumshauptdatei (LWP::Simple reicht).
 3. Abspeichern dieser Daten in eine lokale Datei, weil ich sie vom
    Self-Server möglichst selten absaugen will. (Vor allem, weil LWP::Simple
    kein HTTP/1.1 spricht und deshalb unkomprimiert saugt; ich möchte die
    Last für das wiederholte Viewen möglichst vom Portal-Server weg halten.)
    Mein Skript ist also noch nicht multiuser-tauglich [1].
 4. Einlesen dieser Datei; Kopf- und Fußabschnitt des Inhalts erkennen
    und abtrennen.
 5. Kopf und Fuß sonderbehandeln: Alles herausparsen, was nach einem URL
    riecht, und explizit "http://forum.de.selfhtml.org/" davor einfügen.
    (Denn die Ausgabe meines Skripts zeigt ja auf _meinen_ Server, diese
    Links, Bilder etc. sind aber durch relative Links addressiert.)
    Ersatzweise könntest Du Kopf und Fuß einfach unterdrücken; ich wollte
    aber, daß meine Ausgabe wie das Original aussieht.
 6. Zerlegen des Restes in Threads und Postings (regular expressions). [2]
 7. Daraus Listen aller Topics, Autoren etc. erzeugen.
 8. Ausgabe eines HTML-Formulars mit generierten Dropdown-Listen für
    Topics und Autoren; ein radio-button für AND bzw. OR zwischen beiden.
 9. Die Menüs haben auch Einträge 'alle', 'Positivliste' bzw. 'Negativliste'.
    Dabei werden die Positiv- und Negativlisten aus einfachen ASCII-Dateien
    eingelesen, die ich per Hand angelegt und per FTP auf den Server geschoben
    habe (ein Config-GUI erschien mir als Overkill).
10. Das Formular hat noch einen radio-button 'Anzeige als Threads' bzw.
    'Anzeige sortiert nach Posting-Datum'.
11. Eine Checkbox im Formular: 'Vorher Hauptdatei absaugen'.
12. Auswertung der CGI-Parameter; sinnvolle Defaults
13. Alle gelesenen Threads sequentiell abarbeiten und gemäß der Filter-
    kriterien diejenigen auswählen, die Du sehen willst.
14. Ausgabe: Formular, behandelten Kopf, gefilterte Threads, behandelten Fuß.

Das sind etwa 1100 Zeilen Perl, mit ca. 60% Kommentaren; ich habe ein
ziemlich langes Wochenende dafür gebraucht.

Ergebnis: Ein definitiv plattformunabhängiger Self-Browser. ;-)
Genauer gesagt: Eine CGI-Schale um die Forum-Hauptdatei herum.
Sie muß nur noch im WWW an einer Stelle installiert sein, die CGI darf und
HTTP-Verbindung zum Self-Portal hat.

Meine Haupt-Einsatzmodi:
a) Positivliste-Author AND Positivliste-Topic, threaded (ca.  5-10%)
   => interessante Autoren zu interessanten Themen; dort surfe ich dann
   teilweise die gesamten Threads ab.
b) Positivliste-Author OR  Positivliste-Topic, by date  (ca. 20-30%)
   => alles was ich ungern verpassen möchte, in zeitlicher Reihenfolge.

Das komplette Forum zu lesen schaffe ich natürlich nicht mehr, aber b)
möchte ich eigentlich gerne gelesen haben, falls die Zeit vorhanden ist.

Viele Grüße
      Michael

[1] Ich könnte das Skript in ein per server authentication geschütztes
    Verzeichnis legen und alle Dateinamen aus der Benutzerkennung generieren,
    dann wäre es für eine konfigurierte Benutzergruppe parallel nutzbar -
    ca. 10 Zeilen zusätzlich.
[2] Ich habe gemogelt. Mein Skript versteht die geschachtelte Thread-
    Struktur nicht wirklich (ich bin viel zu faul, einen rekursiven Parser
    dafür zu schreiben), das ist aber glücklicherweise egal:
    - Für die lineare zeitsortierte Ausgabe brauche ich sie nicht,
    - für die Thread-Ausgabe macht es nichts, wenn ich aus den Threads
      einzelne Posting-Köpfe aus dem großen Thread-Block herauslösche,
      die <dd> / <dl>-Struktur der Threads bleibt dabei erhalten.
      Ich muß bloß den Anfang und das Ende eines solchen Posting-Links
      erkennen ... den Rest fasse ich nicht an. ;-)