Log-File von ShoutBox

    • 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
    [autoit]

    #Include <File.au3>
    #include <Array.au3>

    [/autoit] [autoit][/autoit] [autoit]

    HotKeySet('!+e', '_exit') ; (Shift+Alt+e) <== nach Bedarf anpassen
    Func _exit()
    Exit
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    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

    [/autoit] [autoit][/autoit] [autoit]

    Local $url = 'http://www.autoit.de/index.php?page=ShoutboxContent'
    Local $aSpecialChr[14][2] = [['Ä','Ä'],['Ö','Ö'],['Ãœ','Ü'],['ä','ä'],['ö','ö'],['ü','ü'],['ß','ß'], _
    ['â','µ'],['¬','€'],['&quot;','"'],['&lt;','<'],['&gt;','>'],['&amp;','&'],['§','§']]
    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

    [/autoit] [autoit][/autoit] [autoit]

    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

    [/autoit] [autoit][/autoit] [autoit]

    $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

    [/autoit] [autoit][/autoit] [autoit]

    Do
    Sleep(1000)
    Until Int(TimerDiff($t)/1000) >= $refresh_sec
    WEnd

    [/autoit]
  • 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.

    Ja, das kenne ich!

    Super Sache gleich mal testen :thumbup:

    mfg Ubuntu