####################################################################### # # # Automatische Anrede (C) Philipp Wendler # # # # Version: 1.2 vom 21.10.2001 philippwendler@web.de # # # # benötigt GetHeader.hsc von mir # # # ####################################################################### # # # Schreibt in die erste Zeile eines Postings die Worte # # " ", wobei der Vorname # # des Posters des Bezugsartikels ist. # # Wenn aus irgendwelchen Gründen kein Name ermittelt werden kann, # # wird "" geschrieben. # # # # Folgende Variable muss den kompletten Pfad zum Hamsterhaupt- # # verzeichnis enthalten (vor dem ersten Start eintragen!): # Var %HamPath%: String = Trim( "C:\Programme\Hamster" ) # Die nächste Variable muss 1 sein, wenn die Anrede auch in # # Artikeln gsetzt werden soll, die keine Antworten sind ( in dem # # Fall nur "" ), ansonsten 0: # Var %InNonReplys%: Boolean Set %InNonReplys% = False # Die nächste Variable muss den Text enthalten, der bei Antworten # # auf Postings, deren From-Header nur eine Emailadresse enthält, # # eingefügt werden soll. CRLF stellt einen Zeilenumbruch dar. # # Ist die Variable leer, wird nur die Anrede eingefügt. # Var %Tip-For-Nameless-Posters%: String = "Danke dafür, dass Du zukünftig Deinen Vor- und Zunamen " + CRLF + "verwendest. :-)" # Die nächste Variable muss 1 sein, wenn nach der Anrede ein Komma # # eingefügt werden soll. # Var %Insert-Comma%: Boolean = True # Die nächste Variable muss den Text enthalten, der als Anrede vor # # dem Namen eingefuegt werden soll. # Var %Brief-Adress%: String = "Hallo" # # ####################################################################### # # # History: # # 1.2 21.10.2001 # # [Fix] Es wird jetzt vor dem Start von Hamster abgefragt, ob # # die Hamster.exe ueberhaupt existiert. # # [Add] Der Anredentext ist jetzt konfigurierbar. # # [Add] Beschreibung der einzelnen Abschnitte des Skriptes, um # # es Lesern leichter zu machen, das Skript zu verstehen. # # [Fix] Korrnews haengt jetzt nicht mehr in einer Endlos- # # schleife, wenn aus irgendeinem Grund der Ini-Eintrag # # nicht geschrieben werden sollte. # # [Chg] Es wird jetzt eine Korrnewsversion, die Integer- # # variablen unterstuetzt, benoetigt. # # # 1.1.6 28.06.2001 # # [Fix] AutomatischeAnrede.def funktioniert jetzt auch mit # # der aktuellen Korrnews-Version. # # # # 1.1.5 22.03.2001 # # [Fix] Bei Postings mit einem Pseudonym, das kein Leer- # # zeichen enthalt, wird nicht mehr die Emailadresse # # eingefügt. # # Das Skript behandelt jetzt diese Arten von From- # # Headern korrekt: # # Vorname Nachname # # Pseudo # # email@adresse # # email@adresse (Vorname Nachname) # # email@adresse (Pseudo) # # [Add] Optional wird ein Komma nach der Anrede eingefügt. # # [Fix] Wenn der Name oder das Pseudonym in Anführungszeichen # # eingeschlossen ist, werden diese entfernt. # # # # 1.1.4 21.03.2001 # # [Add] Bei Postings ohne Namen wird optional ein Hinweis # # eingefügt. # # # # 1.1.3 21.03.2001 # # [Chg] Bei Postings ohne Namen wird statt # # " " nun nur "" eingefügt # # # # 1.1.2 11.03.2001 # # [Fix] ISO-dekodierte Header werden jetzt korrekt behandelt # # # # 1.1.1 09.03.2001 # # [Fix] Variablennamen von In-Non-Replys nach In-Replys # # geändert. # # # # 1.1 08.03.2001 # # [Add] Doku # # [Fix] ein paar "Trim()" eingefügt # # [Add] Anrede in Nicht-Antworten ja/nein # # [Chg] nur noch eine Pfadangabe notwendig # # [Fix] statt " " nun # # "" # # # # 1.0 06.03.2001 # # erstes öffentliches Release # # # ####################################################################### # Anmerkung zu den Erlaueterungen der einzelnen Abschnitte: # Ich habe sie geschrieben, weil ich es den Benutzern des Skriptes zu # ermoeglichen, das Skript zu verstehen. Wer trotzdem noch Fragen hat, # kann mich gerne anmailen: philippwendler@web.de. Bitte vorher jedoch # folgendes beachten: Ich habe nicht erklaert, was die einzelnen # Aufrufe von in Korrnews implementierten Funktionen im einzelnen genau # machen. Dies kann jedoch in der Datei Header.txt, die Korrnews # beiliegt, nachgelesen werden. # Zuerst werden ein paar Variablen definiert und die MID des Vorgaenger- # postings aus dem In-Reply-To- oder dem References-Header ausgelesen. Var %Insert-Tip%: Boolean Set %Insert-Tip% = False Var %In-Reply-To%: String = "" Set %In-Reply-To% = Header(In-Reply-To) If %In-Reply-To% = "" Set %In-Reply-To% = Last(Header(References)) endif # Wenn das Posting eine Antwort ist, oder die Antwort auch in Nicht- # Antworten gesetzt werde soll, machen wir das. Ansonsten machen wir gar # nichts weiter, alles weitere steht innerhalb der If-Bedingung und wird # uebersprungen. If ( %InNonReplys% ) or ( %In-Reply-To% <> "" ) # Jetzt bringen wir den Pfad zum Hamster in die richtige Form, das # heisst mit einem "\" hinten dran. If %HamPath% <> "" If %HamPath% matches "[^\\]$" Set %HamPath% = Trim( %HamPath% ) + "\" endif endif # Natuerlich koennen wir GetHeader.hsc nur starten, wenn das Posting # eine Antwort ist und die Hamster.exe im angegebenen Pfad existiert. # Wenn beides gegeben ist, setzen wir erstmal den Ini-Eintrag auf "", # damit wir spaeter feststellen koennen, ob er sich geaendert hat. Dann # starten wir GetHeader.hsc mit der MID und der Angabe, dass er uns den # From-Header liefern soll. If %In-Reply-To% <> "" and %HamPath% <> "" and FileExists( %HamPath% + "hamster.exe" ) Do Write IniStr %HamPath% + "hscripts.ini", "PW-GetHeader", "From", "" Do Run and wait %Hampath% + "hamster.exe", "Andere\GetHeader.hsc " + %In-Reply-To% + " From" # Jetzt warten wir solange in einer Schleife, bis sich der Ini-Eintrag # geaendert hat. Wir fragen aber nur 100 mal ab, weil wir eine Endlos- # schleife natuerlich vermeiden moechten. Der Wert muss auf langsamen # Computern eventuell angepasst werden. Var %Index%: Integer = 0 Repeat Set %Index% = %Index% + 1 Set %FromHeader% = Trim( DecodeISO( ReadIniStr( %HamPath%+"hscripts.ini", "PW-GetHeader", "From", "" ) ) ) Until %FromHeader% <> "" or %Index% = 100 If( %FromHeader% = "Error" ) Set %Fromheader% = "" else # Jetzt ueberpruefen wir, ob ein zwei-teiliger Name im From-Header # vorhanden ist. Dies wird deswegen moeglich, weil die Funktion # Firstname bei Postings ohne Vornamen die Emailadresse zurueckgibt. If Firstname( %FromHeader% ) = Adress( %FromHeader% ) # Der From-Header enthaelt keinen Realnamen, also werden wir einen # Hinweistext in das Posting einfuegen (natuerlich nur, wenn wir auch # einen solchen haben. If %Tip-For-Nameless-Posters% <> "" Set %Insert-Tip% = True endif # Es gibt 3 verschiedene Formate des From-Headers: # Email@adresse (Name) # Email@Adresse # Name # Diese muessen wir natuerlich alle beruecksichtigen, wenn wir das # Pseudonym des Posters ermitteln wollen. Im ersten Fall wird einfach # die gesamte Klammer aus dem Header extrahiert und danach an beiden # Enden jeweils 1 Zeichen abgeschnitten (naemlich die beiden Klammern). If %FromHeader% matches "^.*@.*\(.*\)$" Set %FromHeader% = CutLeft( CutRight( Extract( "\(.*\)$", %Fromheader% ), 1 ), 1 ) else # Wenn der Header kein Leerzeichen enthaelt, also nur eine Emailadresse, # fuegen wir natuerlich keinen Namen in die Anrede ein. If %FromHeader% matches "^[^ ]+$" Set %FromHeader% = "" else # Im dritten Fall nehmen wir als Namen alle Zeichen vom Anfang bis zum # ersten "<", "@" oder ">". Set %FromHeader% = Trim( Extract( "^[^<@>]+" , %FromHeader% ) ) endif endif else # Hier wir nun der Fall behandelt, dass ein zwei-teiliger Name angegeben # wurde. Wir nehmen einfach das, was uns die Funktion Firstname angibt. Set %FromHeader% = Firstname( %FromHeader% ) endif # Jetzt loeschen wir eventuelle Anfuehrungszeichen am Anfang und Ende # des Namens. If %FromHeader% matches '^"' Set %FromHeader% = CutLeft( %FromHeader%, 1 ) endif If %FromHeader% matches '"$' Set %FromHeader% = CutRight( %FromHeader%, 1 ) endif endif else Set %FromHeader% = "" endif # Falls gewuenscht, wird nun ein Komma angehaengt. Ausserdem soll # natuerlich ein Leerzeichen zwischen die Anrede und den Namen. If %FromHeader% = "" If %Insert-Comma% Set %FromHeader% = "," endif else If %Insert-Comma% Set %FromHeader% = " " + %FromHeader% + "," else Set %FromHeader% = " " + %FromHeader% endif endif # Und wenn wir ein Pseudonym gefunden haben, haengen wir noch den # Hinweis an die Anrede, bevor wir sie ins Posting schreiben. If %Insert-Tip% Set %FromHeader% = %FromHeader% + CRLF + CRLF + %Tip-For-Nameless-Posters% endif Set Introduction %Brief-Adress%%Fromheader%%CRLF% end endif