#include <IE.au3>
Opt('MustDeclareVars', 1)
Opt('TrayMenuMode', 1)
Global $aLogin, $aUrl[1][6][2], $oIE
If WinExists(@ScriptName & '{[/@$@\]}') Then Exit
AutoItWinSetTitle(@ScriptName & '{[/@$@\]}')
_Get_Login_Array($aLogin)
If @error Then
MsgBox(16, 'Error', '_Get_Login_Array')
Exit
EndIf
_Get_Url_Array($aUrl)
If @error Then
MsgBox(16, 'Error', '_Get_Url_Array')
Exit
EndIf
For $i = 1 To $aLogin[0][0]
_Exit_Login($oIE)
If @error Then ExitLoop
_Avtor($oIE, $aLogin[$i][0], $aLogin[$i][1])
If @error Then ContinueLoop
For $j = 1 To $aUrl[0][0][0]
_Click_Plus_Minus_Url($oIE, $aUrl, $j, $aLogin[$i][0])
Next
Next
_IEQuit($oIE)
Func _Avtor(ByRef $o_Obj, $s_Login, $s_Pass)
Local $s_Url_Avtor = 'http://newsland.ru/user/login/', $o_Form, $o_Login, $o_Pass, _
$o_Enter, $i_Start, $i_Error = 1, $s_LocUrl
For $i = 1 To 1
_IENavigate($o_Obj, $s_Url_Avtor)
If @error Then ExitLoop
$o_Form = _IEGetObjById($o_Obj, 'user_login_form')
If @error Then ExitLoop
$o_Login = _IEFormElementGetObjByName($o_Form, 'login_or_email')
If @error Then ExitLoop
$o_Pass = _IEFormElementGetObjByName($o_Form, 'password')
If @error Then ExitLoop
$o_Enter = _IEFormElementGetObjByName($o_Form, 'Войти')
If @error Then ExitLoop
_IEFormElementSetValue($o_Login, $s_Login)
If @error Then ExitLoop
_IEFormElementSetValue($o_Pass, $s_Pass)
If @error Then ExitLoop
_IEAction($o_Enter, 'click')
If @error Then ExitLoop
$i_Start = TimerInit()
While 1
If WinExists('[Title:Сообщение с веб-страницы; Class:#32770]') Then
ControlClick('[Title:Сообщение с веб-страницы; Class:#32770]', '', '[CLASS:Button; INSTANCE:1]')
ExitLoop 2
EndIf
$s_LocUrl = _IEPropertyGet($o_Obj, 'locationurl')
If @error Then ExitLoop 2
If $s_LocUrl == 'http://www.newsland.ru/' Then ExitLoop
If TimerDiff($i_Start) > 10000 Then ExitLoop 2
Sleep(1000)
WEnd
$i_Error = 0
Next
Return SetError($i_Error)
EndFunc ;==>_Avtor
Func _Exit_Login(ByRef $o_Obj)
Local $s_Text, $s_Exit = 'Выйти', $s_Url = 'http://www.newsland.ru/', $i_Error = 1
If Not IsObj($o_Obj) Then
$o_Obj = _IECreate()
If @error Then Return SetError(1)
EndIf
For $i = 1 To 1
_IENavigate($o_Obj, $s_Url)
If @error Then ExitLoop
$s_Text = _IEBodyReadText($o_Obj)
If @error Then ExitLoop
If StringInStr($s_Text, $s_Exit) Then
_IELinkClickByText($o_Obj, $s_Exit)
If @error Then ExitLoop
EndIf
$i_Error = 0
Next
Return SetError($i_Error)
EndFunc ;==>_Exit_Login
Func _Click_Plus_Minus_Url(ByRef $o_Obj, $a_Array, $i_Index, $s_Login)
Local $s_Url = 'http://www.newsland.ru/onair/comments/user/', $i_Count_Click_Plus = 0, _
$i_Count_Click_Minus = 0, $i_CountPlus, $i_CountMinus, $o_Tags, _
$s_FileLog = @ScriptDir & '\Log\' & @MDAY & '_' & @MON & '.txt', $h_File
$s_Url &= $a_Array[$i_Index][0][0] & '/'
For $j = 1 To 1
_IENavigate($o_Obj, $s_Url)
If @error Then ExitLoop
$o_Tags = _IETagNameGetCollection($o_Obj, 'a')
If @error Then ExitLoop
For $o_Tag In $o_Tags
If $o_Tag.classname == 'buttonPlus' Then
$i_CountPlus += 1
For $i = 1 To 5
If $a_Array[$i_Index][$i][0] == $i_CountPlus And $a_Array[$i_Index][$i][1] == 'p' Then
_IEAction($o_Tag, 'click')
If Not @error Then
If WinWait('[Title:Сообщение с веб-страницы; Class:#32770]', '', 2) Then
ControlClick('[Title:Сообщение с веб-страницы; Class:#32770]', '', '[CLASS:Button; INSTANCE:1]')
Else
_IELoadWait($o_Obj)
If Not @error Then $i_Count_Click_Plus += 1
EndIf
EndIf
EndIf
Next
EndIf
If $o_Tag.classname == 'buttonMinus' Then
$i_CountMinus += 1
For $i = 1 To 5
If $a_Array[$i_Index][$i][0] == $i_CountPlus And $a_Array[$i_Index][$i][1] == 'm' Then
_IEAction($o_Tag, 'click')
If Not @error Then
If WinWait('[Title:Сообщение с веб-страницы; Class:#32770]', '', 2) Then
ControlClick('[Title:Сообщение с веб-страницы; Class:#32770]', '', '[CLASS:Button; INSTANCE:1]')
Else
_IELoadWait($o_Obj)
If Not @error Then $i_Count_Click_Minus += 1
EndIf
EndIf
EndIf
Next
EndIf
Next
Next
$h_File = FileOpen($s_FileLog, 9)
If $h_File <> -1 Then
FileWrite($h_File, @HOUR & ':' & @MIN & ':' & @SEC & @CRLF & 'От имени ' & $s_Login & @CRLF & _
'Пользователю № ' & $a_Array[$i_Index][0][0] & @CRLF & 'Поставили плюсов:' & @TAB & _
$i_Count_Click_Plus & @CRLF & 'Поставили минусов:' & @TAB & $i_Count_Click_Minus & _
@CRLF & '-----------------------' & @CRLF & @CRLF)
FileClose($h_File)
EndIf
EndFunc ;==>_Click_Plus_Minus_Url
Func _Get_Login_Array(ByRef $a_Array)
Local $s_FileLogin = @ScriptDir & '\Login.ini', $s_Section = 'Login'
If Not FileExists($s_FileLogin) Then Return SetError(1)
$a_Array = IniReadSection($s_FileLogin, $s_Section)
If @error Then Return SetError(1)
EndFunc ;==>_Get_Login_Array
Func _Get_Url_Array(ByRef $a_Array)
Local $s_FileLogin = @ScriptDir & '\Url.ini', $a_Sections, $a_Temp
If Not FileExists($s_FileLogin) Then Return SetError(1)
$a_Sections = IniReadSectionNames($s_FileLogin)
If @error Then Return SetError(1)
ReDim $a_Array[$a_Sections[0] + 1][6][2]
$a_Array[0][0][0] = $a_Sections[0]
For $i = 1 To $a_Array[0][0][0]
$a_Temp = IniReadSection($s_FileLogin, $a_Sections[$i])
If @error Then Return SetError(1)
$a_Array[$i][0][0] = $a_Sections[$i]
For $j = 1 To $a_Temp[0][0]
$a_Array[$i][$j][0] = $a_Temp[$j][0]
$a_Array[$i][$j][1] = $a_Temp[$j][1]
If $j = 5 Then ExitLoop
Next
Next
EndFunc ;==>_Get_Url_Array