#include <Array.au3>; подключаем библиотеку для работы с массивами
#include <File.au3>; подключаем библиотеку для работы с файлами
#include <IE.au3>; подключаем библиотеку для работы с браузером IE
#include <Excel.au3>; подключаем библиотеку для работы с Excel
Local $tmp, $arr, $oIE, $aFiles, $sImageFilePath, $oTextareas, $oButtons, $oDivs, $iFlag = 0; переменные
Local $sConfigFilePath = @UserProfileDir & "\vk_photos_album_config.ini"; путь к конфигурационному файлу
Local $sPathXL = @ScriptDir & "\tovar.xlsx"; путь к Excel файлу с данными
Local $sPathImages = @ScriptDir & "\photos"; папка, где искать изображения
_Excel_BookReadToArray($sPathXL, $arr)
If @error Then Exit 1
;_ArrayDisplay($arr)
_IELoadWaitTimeout(10000)
$oIE = _IECreate("http://vk.com/")
If @error Or Not IsObj($oIE) Then Exit 2
$tmp = IniRead($sConfigFilePath, "config", "line", "0")
If (Not StringIsDigit($tmp)) Or ($tmp > UBound($arr)) Or ($tmp < 1) Then $tmp = 0
If $tmp > 0 Then $tmp += 1
For $i = $tmp To UBound($arr) - 1
ConsoleWrite("For#" & $i & "/" & UBound($arr) & @CRLF)
If StringInStr($arr[$i][0], "http") = 0 Then ContinueLoop
Sleep(1000)
$aFiles = _FileListToArrayRec($sPathImages, $arr[$i][1], $FLTAR_FILES, $FLTAR_NORECUR, $FLTAR_NOSORT, $FLTAR_FULLPATH)
If @error Or Not IsArray($aFiles) Then ContinueLoop
$sImageFilePath = $aFiles[1]
If Not StringInStr($sImageFilePath, '"') Then $sImageFilePath = StringFormat('"%s"', $sImageFilePath)
_IENavigate($oIE,$arr[$i][0])
Sleep(100)
ConsoleWrite(StringFormat("URL: %s; Files: %s; Desc: %s\r\n", $arr[$i][0], $arr[$i][1], $arr[$i][2]))
;_ArrayDisplay($aFiles,"files#"&$i)
_IENavigate($oIE, 'javascript:document.getElementById("photos_upload_area").click();void(0);', 0)
$hWin = WinWait("[TITLE:Выбор выкладываемого файла; CLASS:#32770]", "", 10)
If Not $hWin Then ContinueLoop
ControlFocus($hWin, "", "Edit1")
Sleep(100)
ControlSetText($hWin, "", "Edit1", $sImageFilePath)
Sleep(100)
ControlFocus($hWin, "", "Button1")
Sleep(100)
ControlClick($hWin, "", "Button1", "main", 1)
ConsoleWrite("Selected file: " & $sImageFilePath & @CRLF)
WinWaitNotActive($hWin, "", 2)
Do
Sleep(100)
$oTextareas = _IETagNameGetCollection($oIE, "textarea")
If Not IsObj($oTextareas) Then ContinueLoop
$oPhotos_add_s_caption = 0
For $oTextarea In $oTextareas
If $oTextarea.className = "photos_add_s_caption" Then
$oPhotos_add_s_caption = $oTextarea
ExitLoop
EndIf
Next
Until IsObj($oPhotos_add_s_caption)
_IEAction($oPhotos_add_s_caption, "focus")
Sleep(100)
_IEFormElementSetValue($oPhotos_add_s_caption, $arr[$i][2])
Sleep(100)
_IEAction($oPhotos_add_s_caption, "blur")
Do
Sleep(100)
$oButtons = _IETagNameGetCollection($oIE, "button")
If Not IsObj($oButtons) Then ContinueLoop
For $oButton In $oButtons
If $oButton.innerHTML = "Сохранить фотографии" Or $oButton.className = "flat_button" Then
_IEAction($oButton, "focus")
Sleep(100)
_IEAction($oButton, "click")
ExitLoop
EndIf
Next
Until IsObj($oButtons)
$iFlag = 0
Do
Sleep(100)
$oDivs = _IETagNameGetCollection($oIE, "div")
If Not IsObj($oDivs) Then ExitLoop
For $oDiv In $oDivs
If StringInStr($oDiv.id, "photo_save_result-") Then
$iFlag = 1
ExitLoop
EndIf
Next
Until $iFlag = 0
ConsoleWrite("Save OK" & @CRLF)
IniWrite($sConfigFilePath, "config", "line", $i)
ConsoleWrite("----------" & @CRLF)
Next
_IEQuit($oIE)
Func _Excel_BookReadToArray($_sPath, ByRef $_aArray)
If Not FileExists($_sPath) Then Return SetError(1, 0, 0)
Local $oAppl = _Excel_Open()
If @error Then Return SetError(2, 0, 0)
Local $oWorkbook = _Excel_BookOpen($oAppl, $_sPath)
If @error Then
_Excel_Close($oAppl)
Return SetError(3, 0, 0)
EndIf
Dim $_aArray[0][3]
Local $iIndex = 0, $A = "", $B = "", $C = ""
While 1
$A = _Excel_RangeRead($oWorkbook, Default, "A" & Execute($iIndex + 1))
If @error Or $A == "" Then ExitLoop
$B = _Excel_RangeRead($oWorkbook, Default, "B" & Execute($iIndex + 1))
If @error Or $B == "" Then ExitLoop
$C = _Excel_RangeRead($oWorkbook, Default, "C" & Execute($iIndex + 1))
If @error Or $C == "" Then ExitLoop
ReDim $_aArray[$iIndex + 1][3]
$_aArray[$iIndex][0] = $A
$_aArray[$iIndex][1] = $B
$_aArray[$iIndex][2] = $C
$iIndex += 1
WEnd
_Excel_Close($oAppl)
Return 1
EndFunc ;==>_Excel_BookReadToArray