- Offizieller Beitrag
Hi,
ihr kennt das alle: Man muß für 'ne Weile weg vom PC - möchte aber gern alles, was in der SB passiert mitbekommen.
Ich hab jetzt mal ein kleines Logprogramm geschrieben, dass alle Änderungen mitschreibt.
Ich hab es ohne Login gemacht, Whispern wird also nicht erfasst. Vielleicht kann es ja wer brauchen.
Edit: Da ich bei Programmstart einen Datumseintrag mache, hatte ich nicht bedacht, dass dieser (letzte) Eintrag dazu führt, dass alles als neu angesehen wird. Jetzt korrigiert.
Und einen weiteren Fehler beseitigt: Anfangs war der gestrige Tag noch als 'Heute' zu sehen, aber später wurde es dann doch zu 'Gestern'. Wird jetzt korrekt erkannt.
Spoiler anzeigen
#Include <File.au3>
#include <Array.au3>
HotKeySet('!+e', '_exit') ; (Shift+Alt+e) <== nach Bedarf anpassen
Func _exit()
Exit
EndFunc
Local $lastline = '', $pathLOG = @ScriptDir & '\SBautoit.log'
If Not FileExists($pathLOG) Then
FileWrite($pathLOG,@YEAR & '-' & @MON & '-' & @MDAY)
Else
$lastline = FileReadLine($pathLOG, 1)
_FileWriteToLine($pathLOG, 1, @YEAR & '-' & @MON & '-' & @MDAY)
EndIf
Local $refresh_sec = 40 ; <== Refresh-Time, aber weniger als 40 sec ist nicht sinnvoll
Local $url = 'http://www.autoit.de/index.php?page=ShoutboxContent'
Local $aSpecialChr[14][2] = [['Ä','Ä'],['Ö','Ö'],['Ãœ','Ü'],['ä','ä'],['ö','ö'],['ü','ü'],['ß','ß'], _
['â','µ'],['¬','€'],['"','"'],['<','<'],['>','>'],['&','&'],['§','§']]
Local $patSmilies = '(\<img src="wcf/images/smilies/.+\..+" alt=")(.+)(" />)'
Local $patCol = '\<strong>\<font color=".+">(.+)\</font></strong>:'
Local $patUrl = '(\<a href=".+" target=".+">)(.+)(\</a>)'
Local $patCont = '\<span class="light">\[.+, (\d{1,2}:\d{2}).+\r\n\t(.+)\r\n(.+)\</span>'
Local $aRet, $currContent, $aCurrent, $cnt = 0, $sNew, $indx
While True
$t = TimerInit()
$currContent = StringRegExpReplace(StringRegExpReplace(StringRegExpReplace(BinaryToString(InetRead($url, 1)), _
$patCol, '$1'), $patSmilies, '$2'), $patUrl, '$2')
$aRet = StringRegExp($currContent, $patCont, 3)
$currContent = ''
For $i = 0 To UBound($aRet) -1
$cnt += 1
If $i = 0 Or Mod($i, 3) = 0 Then
$currContent &= '[' & $aRet[$i] & '] '
ContinueLoop
EndIf
For $j = 0 To 13
$aRet[$i] = StringRegExpReplace($aRet[$i], $aSpecialChr[$j][0], $aSpecialChr[$j][1])
Next
$currContent &= $aRet[$i] & ' '
If $cnt = 3 Then
$currContent &= @CRLF
$cnt = 0
EndIf
Next
$aCurrent = StringSplit($currContent, @CRLF, 1)
If $lastline = '' Then
$indx = UBound($aCurrent)
Else
$indx = _ArraySearch($aCurrent, $lastline)
EndIf
If $indx > 1 Then
$sNew = ''
For $i = 1 To $indx -1
$sNew &= $aCurrent[$i] & @CRLF
Next
_FileWriteToLine($pathLOG, 1, StringTrimRight($sNew, 2))
$lastline = FileReadLine($pathLOG, 1)
EndIf
Do
Sleep(1000)
Until Int(TimerDiff($t)/1000) >= $refresh_sec
WEnd