Forum Code Kopierer (Speichert alle Code-Boxen einer Seite in einzelne Dateien)

  • Heute bin ich im englischen Forum über ein Script gestolpert, das dort das erste Script der aktuellen Seite speichert (und sonst noch was macht ... um die 150 Zeilen rum)

    Habe das Ganze mal etwas einfacher für das Forum hier und den FireFox gemacht:

    Spoiler anzeigen
    [autoit]


    ; by Stilgar
    ; Thu Apr 09 12:59:26 CEST 2009 @499 /Internet Time/
    #region Includes
    #include <FF.au3>
    #endregion Includes

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

    Global $sBaseDir = "C:\Scripte von Autoit.de\"

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

    ; e.g. C:\Scripte von Autoit.de\
    ; Titel\
    ; Nach drücken von STRG(rechts) eine bestimmte Mausposition anklicken - Hilfe Unterstützung\
    ; Seite_Function_Nr.au3
    ; 1_Function_1.au3
    ; ...
    ; 1_Function_14.au3

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

    _FFConnect()

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

    If _FFIsConnected() Then
    Global $sTitle = _FFCmd(".title")
    $sTitle = StringMid($sTitle,1,StringInStr($sTitle,"- .:")-1)
    Global $sHref = _FFCmd(".location.href")
    Else
    Exit
    EndIf

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

    Global $aCode = _GetData()
    If Not @error Then
    _Data2ClipBoard($sTitle, $sHref, $aCode)
    _WriteData($sBaseDir, $sTitle, $sHref, $aCode)
    EndIf

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

    Exit
    ;===============================================================================
    Func _GetData()
    Local $aTmp[1]
    If _FFIsConnected() Then
    $aTmp = _FFXPath("//td[@class='codeLines' and position()=2]//pre","textcontent",7)
    If Not @error And $aTmp[0] > 0 Then
    Return $aTmp
    Else
    SetError(1)
    Return $aTmp
    EndIf
    EndIf
    SetError(1)
    Return $aTmp
    EndFunc
    ;===============================================================================
    Func _Data2ClipBoard(ByRef $sTitle, ByRef $sHref, ByRef $aCode)
    Local $sString = "; " & $sTitle & @crlf
    $sString &= "; " & $sHref & @crlf
    $sString &= "; ###################################################################" & @crlf & @crlf
    For $i = 1 To $aCode[0]
    $sString &= $aCode[$i] & @crlf & "; ===================================================================" & @crlf
    Next
    ClipPut($sString)
    EndFunc
    ;===============================================================================
    Func _WriteData(ByRef $sBaseDir, ByRef $sTitle, ByRef $sHref, ByRef $aCode)
    If Not FileExists($sBaseDir) Then DirCreate($sBaseDir)

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

    $sTitle = StringRegExpReplace($sTitle,"[\\&/:\?\*~]"," ") ; Sonderzeichen filtern
    $sTitle = StringRegExpReplace($sTitle,"\[.*?\]","") ; offen, gelöst ...
    $sTitle = StringStripWS($sTitle,7) ; Leerzeichen filtern

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

    If Not FileExists($sBaseDir & $sTitle) Then DirCreate($sBaseDir & $sTitle)

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

    Local $sPage = StringMid($sHref,StringInStr($sHref,"pageNo=")+7) ; Seitenzahl
    If StringLen($sPage) > 3 Then
    $sPage = "1_"
    Else
    $sPage &= "_"
    EndIf

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

    For $i = 1 To $aCode[0]
    $hFile = FileOpen($sBaseDir & $sTitle & "\" & $sPage & "Function_" & $i & '.au3',1)
    If $hFile <> -1 Then
    FileWriteLine($hFile, "; " & $sTitle)
    FileWriteLine($hFile, "; " & $sHref)
    FileWrite($hFile, $aCode[$i] )
    FileClose($hFile)
    EndIf
    NExt
    EndFunc

    [/autoit]

    Es kopiert einfach den Thread Titel, die URL und alle Scripte der aktuellen Seite ins Clipboard und in bestimmtes Verzeichnis, dessen Struktur folgendermaßen erstellt wird:

    $sBaseDir\Titel\ Seite_Function_Nr.au3

    in jede Datei wird noch zusätzlich der Titel und URL geschrieben.

    Grüße
    Stilgar

    [EDIT]
    Wieder gefunden ...
    Das war die Vorlage für die Idee:
    http://www.autoitscript.com/forum/index.php?showtopic=92646

    5 Mal editiert, zuletzt von Stilgar (15. April 2009 um 16:10)

  • Klar, dann seht ihr morgen mein Ergebniss :D

    Ernsthaft jetzt mal: Ich habe keine Ahnung davon ;)