- Offizieller Beitrag
Hi,
unter der Rubrik Mitglieder findet man ja Angaben zu Anmeldedatum und Postanzahl. Das sind zur Zeit aber 12 Seiten (Tendenz steigend ).
Ich habe hier 2 Skripte geschrieben um
a) die entsprechenden Daten herunterzuladen und in eine Datei zu speichern
b) diese Daten in einem Listview darzustellen.
Die Liste ist per Klick auf den Spaltenkopf sortierbar, aber bitte Geduld - über 1400 Einträge wollen erst mal umsortiert sein.
Allerdings weist die Sortierung in der Post-Spalte einen Fehler auf. Anscheinend funktioniert die Sortierung hier nur bei Zahlen < 1000.
Hauptsortierkriterium ist das Anmeldedatum (deshalb auch die sortierbare Schreibweise). Alle Einträge gleichen Datums sind mit gleicher Hintergrundfarbe belegt.
2 Skripte sind es, weil ich nicht jedes mal, wenn ich die Daten ansehen möchte, vorher auch aktualisieren will (dauert immerhin z.Zt. ca. 2 min).
Im ersten Skript ist meine ArrayMore.au3 includet.
Daten holen:
Spoiler anzeigen
#include <IE.au3>
#include <string.au3>
#include 'C:\Dokumente und Einstellungen\Standard\Desktop\AU3-Scripte\ArrayMore.au3'
$url = 'http://www.autoit.de/memberslist.php?letter=&order=ASC&sortby=regdate&page='
$oIE = _IECreate($url & 1, 0, 0)
$nSite = 0
$oTable = _IETableGetCollection ($oIE, 9)
$aTableData = _IETableWriteToArray ($oTable)
$ret = _StringBetween($aTableData[0][0], '(', ')')
$nSite = $ret[0]
Dim $aAllData[1][1], $pathWrite = @ScriptDir & '\AllUsers.txt'
For $i = 1 To $nSite
If $i > 1 Then _IENavigate($oIE, $url & $i)
$oTable = _IETableGetCollection ($oIE,
$aTableData = _IETableWriteToArray ($oTable)
_Array2DMirror($aTableData)
_Array2DDelete($aTableData, 0)
_Array2DDelete($aTableData, 0)
_Array2DDelete($aTableData, UBound($aTableData)-1)
For $k = 0 To UBound($aTableData)-1
$aTableData[$k][1] = ''
$aTableData[$k][2] = ''
$aTableData[$k][3] = ''
$aTableData[$k][4] = ''
$aTableData[$k][5] = ''
Next
_Array2DEmptyDel($aTableData, 1)
If UBound($aAllData) = 1 Then
$aAllData = $aTableData
Else
_Array2DJoin($aAllData, $aTableData)
EndIf
Next
For $i = 0 To UBound($aAllData)-1
$var = StringSplit($aAllData[$i][1], '.')
$aAllData[$i][1] = $var[3] & '-' & $var[2] & '-' & $var[1]
Next
_ArraySort($aAllData, 0,0,0,3,1)
If FileExists($pathWrite) Then FileDelete($pathWrite)
$fh = FileOpen($pathWrite, 1)
For $i = 0 To UBound($aAllData)-1
FileWriteLine($fh, $aAllData[$i][0] & ';' & $aAllData[$i][1] & ';' & $aAllData[$i][2])
Next
FileClose($fh)
_IEQuit($oIE)
Anzeige im ListView
Spoiler anzeigen
#include <GUIConstants.au3>
#include <GUIListView.au3>
#include <file.au3>
Opt("GUIOnEventMode", 1)
Dim $pathUser = @ScriptDir & '\AllUsers.txt', $aUser, $aItem[1], $last = 1, $lastCol
Dim $col1 = 0xAFEEEE, $col2 = 0xFFF0F5, $col = $col1
$Form1 = GUICreate("www.AutoIt.de - Userübersicht", 429, 601, -1, -1)
GUISetOnEvent($GUI_EVENT_CLOSE, "Form1Close")
$ListView1 = GUICtrlCreateListView("User|Anmeldedatum|Posts", 8, 8, 413, 585, Default, $LVS_EX_GRIDLINES)
GUICtrlSetOnEvent(-1, "ListClick")
GUICtrlSendMsg($ListView1, 0x101E, 0, 222)
GUICtrlSendMsg($ListView1, 0x101E, 1, 100)
GUICtrlSendMsg($ListView1, 0x101E, 2, 60)
_GUICtrlListViewJustifyColumn($ListView1, 1, 2)
_GUICtrlListViewJustifyColumn($ListView1, 2, 1)
LoadData()
GUISetState(@SW_SHOW)
Dim $B_DESCENDING[_GUICtrlListViewGetSubItemsCount ($ListView1)]
While 1
Sleep(100)
WEnd
Func Form1Close()
Exit
EndFunc
Func LoadData()
_FileReadToArray($pathUser, $aUser)
_ArrayDelete($aUser, 0)
_ArrayDelete($aUser, UBound($aUser)-1)
ReDim $aItem[UBound($aUser)]
For $i = 1 To UBound($aUser)-1
$var = StringSplit($aUser[$i], ';')
If IsArray($var) Then
$aItem[$i] = GUICtrlCreateListViewItem($var[1] &'|'& $var[2] &'|'& Number($var[3]), $ListView1)
Select
Case $last = 1
$last = $var[2]
$lastCol = $col1
Case Else
If $var[2] <> $last Then
If $lastCol = $col1 Then
$col = $col2
Else
$col = $col1
EndIf
$lastCol = $col
$last = $var[2]
EndIf
EndSelect
GUICtrlSetBkColor($aItem[$i], $col)
EndIf
Next
EndFunc
Func ListClick() ; Sortierung ist aber fehlerhaft bei Postanzahl > 999
_GUICtrlListViewSort($ListView1, $B_DESCENDING, GUICtrlGetState($ListView1))
EndFunc