[TeeWorlds] Alle Playerskins sowie Gameskins!

  • Guten Tag.

    Heute stelle ich euch mein kleines Programm vor, dass von der Seite http://www.teedb.info/ alle Player- und Gameskins runterlädt.
    Die Links und Namen der Skins kriege ich mithilfe von StringRegExp und mit _INetGetSource heraus.

    Einfach starten und warten, bis alle Player- (459) und Gameskins (40) runtergeladen sind.

    Playerskins-Skript:

    [autoit]

    #include <INet.au3>

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

    $sSource = _INetGetSource('http://teedb.info/index.php?section=skins')

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

    $aPic = _GetPicture($sSource)
    If Not IsArray($aPic) Then Exit MsgBox(16,'Error','Quelltext hat keinen Inhalt. Rückgabewert von StringRegExp ergab kein Array.')
    $sRes = ''
    DirCreate(@ScriptDir & '\Playerskins')
    For $i = 0 To UBound($aPic) -1 Step +1
    $sSource_Player = _INetGetSource('http://teedb.info/' & StringReplace($aPic[$i],'&amp;','&'))
    $sFileName = _GetFileName($sSource_Player)
    $sDownloadPath = _GetDLPath($sSource_Player)
    InetGet(StringReplace($sDownloadPath,'&amp;','&'),@ScriptDir & '\Playerskins\' & $sFileName)
    Next

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

    Func _GetPicture($sSrc)
    If $sSrc = '' Then Return -1
    $aRegExp = StringRegExp($sSrc,'(?:<div style="[^"]+"><img src="[^"]+"\salt="[^"]+"></div><div style="[^"]+"><a href="([^"]+)"\sclass="[^"]+">|<a href="([^"]+)"\sclass="[^"]+"><img src="[^"]+"\salt="[^"]+"></a></td>)',3)
    If IsArray($aRegExp) Then Return $aRegExp
    Return -2
    EndFunc

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

    Func _GetFileName($sSrc)
    If $sSrc = '' Then Return -1
    $aRegExp = StringRegExp($sSrc,'"\s>([^<]+)</a>\s\(\d+\skB\)\s+</li>',3)
    $sRet = ''
    If IsArray($aRegExp) Then
    $sRet = $aRegExp[0]
    Return $sRet
    EndIf
    Return -2
    EndFunc

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

    Func _GetDLPath($sSrc)
    If $sSrc = '' Then Return -1
    $aRegExp = StringRegExp($sSrc,'<a href="([^"]+)"\s>[^<]+</a>\s\(\d+\skB\)',3)
    $sRet = ''
    If IsArray($aRegExp) Then
    $sRet = 'http://teedb.info/' & $aRegExp[0]
    Return $sRet
    EndIf
    Return -2
    EndFunc

    [/autoit]

    Gameskins-Skript:

    [autoit]

    #include <INet.au3>

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

    Global $sURL = 'http://www.teedb.info/index.php?section=gameskins'
    Global $sDirPath = @ScriptDir & '\Gameskins'
    Global $sSource
    Global $aLinksToSkin

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

    If Not FileExists($sDirPath & '\') Then DirCreate($sDirPath)

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

    $sSource = _INetGetSource($sURL)
    $aLinksToSkin = _GetLinksToSkin($sSource)
    If Not IsArray($aLinksToSkin) Then Exit MsgBox(16,'Error','Quelltext beinhaltet keine Zeichen. StringRegExp ergab kein Array. _GetLinksToArray($sSrc) = ' & $aLinksToSkin)

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

    For $i = 0 To UBound($aLinksToSkin) -1 Step +1
    $sSrc_DirectLink = _INetGetSource('http://teedb.info/' & StringReplace($aLinksToSkin[$i],'&amp;','&'))
    $sFile = _GetFileName($sSrc_DirectLink)
    $sDownloadPath = _GetDLPath($sSrc_DirectLink)
    InetGet($sDownloadPath,$sDirPath & '\' & $sFile)
    Next

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

    Func _GetLinksToSkin($sSrc)
    Local $aRet
    If $sSrc = '' Then Return -1
    $aRet = StringRegExp($sSrc,'<td><a href="([^"]+)"\sclass="[^"]+"><img src="[^"]+"\salt="[^"]+"></a></td>',3)
    If IsArray($aRet) Then Return $aRet
    Return -2
    EndFunc

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

    Func _GetFileName($sSrc)
    If $sSrc = '' Then Return -1
    $aRet = StringRegExp($sSrc,'<a href="[^"]+"\s>\s+([^<]+)</a>\s\(\d+\skB\)',3)
    If Not IsArray($aRet) Then Return -2
    $sRet = $aRet[0]
    Return $sRet
    EndFunc

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

    Func _GetDLPath($sSrc)
    If $sSrc = '' Then Return -1
    $aRet = StringRegExp($sSrc,'<a href="([^"]+)"\s>\s+[^<]+</a>\s\(\d+\skB\)',3)
    If Not IsArray($aRet) Then Return -2
    $sRet = 'http://teedb.info/' & StringReplace($aRet[0],'&amp;','&')
    Return $sRet
    EndFunc

    [/autoit]

    Viel Spass.

    Mit freundlichen Grüßen,
    Understood.

  • Ehm, was ist Teedb?

    TeeDatabase, da kann man Sachen rund um Teeworlds (Skins, Gameskins,Tilesets ..etc) hochladen und runterladen..


    das Programm ist aber nun nicht wirklich sehr sinnvoll^^, zumal da auch richtige Müllskins dabei sind :P

    Offtopic/ wie heißte Ingame?

  • RegEx heiße ich. :)
    Spiele Instagib - CTF4 und DM1. ;)

    Du kannst mich gegebenenfalls in Skype einfügen - silverlight84, können dann ein 1on1 machen. ;)

  • das Game ist ein reines Cheater game. AUf jeder map sind immer min 2 Chater unterwegs.

    Das finden von Rechtschreibfehlern muss sofort und unverzüglich dem Autor gemeldet werden. Das eigennützige Verwenden dieser Rechtschreibfehler ist strengstens untersagt und kann mit Freiheitsenzug bestraft werden.

  • Darter, deshalb wurde die 'Vote Kick'-Funktion eingeführt, damit genau dies nicht passiert. ;)

  • Ich würde mal sagen, dass Du mich eventuell mal bei Skype hinzufügst, bevor wir hier vom eigentlichen Thema ableiten. Genaueres können wir dort besprechen.

    Mit freundlichen Grüßen,
    Understood.