Что нового

Скрипт загрузки изображений с описанием в фотоальбомы VK

DOMINANT

Новичок
Сообщения
42
Репутация
0
Версия AutoIt: 3.3.14.2

Описание:
Скрипт исправно работал, подключался к базе товаров /база_товаров.xlsx, брал оттуда названия изображений, искал их в папке /img , с недавних пор в Windows 10, в IE11 начала выходить ошибка следующего вида

--> IE.au3 T3.0-2 Error from function _IELoadWait, $_IESTATUS_InvalidObjectType ()
>Exit code: 2 Time: 3.741

Сам скрипт:
Код:
Opt("TrayIconDebug", 1)
#include <Array.au3>; подключаем библиотеку для работы с массивами
#include <File.au3>; подключаем библиотеку для работы с файлами
#include <IE.au3>; подключаем библиотеку для работы с браузером IE
#include <Excel.au3>; подключаем библиотеку для работы с Excel
Local $tmp, $arr, $oIE, $aFiles, $sImageFilePath, $oTextareas, $oButtons, $oDiv, $oPhotos_add_s_caption, $oDivs, $iFlag = 0; переменные
Local $sConfigFilePath = @UserProfileDir & "\vk_photos_album_config.ini"; путь к конфигурационному файлу
Local $sPathXL = @ScriptDir & "\XLSX_женская.xlsx"; путь к Excel файлу с данными о товарах
Local $sPathImages = @ScriptDir & "\img"; папка, где искать изображения

_Excel_BookReadToArray($sPathXL, $arr, 20); читаем только первые 20 элементов для скорости и для теста
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
Local $str = ""
For $i = $tmp To UBound($arr) - 1
	ConsoleWrite("For#" & $i & "/" & UBound($arr) & @CRLF)
	$str = StringFormat("Название: %s\r\n Артикул: %s\r\n Размеры: %s\r\n Цена: %s", $arr[$i][2], $arr[$i][3], $arr[$i][4], $arr[$i][5])
	ConsoleWrite($str & @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 = ""
	If $aFiles[0] < 1 Then ContinueLoop
	For $f = 1 To $aFiles[0]
		If Not StringInStr($aFiles[$f], '"') Then
			$sImageFilePath &= StringFormat('"%s"', $aFiles[$f]) & " "
		Else
			$sImageFilePath &= $aFiles[$f] & " "
		EndIf
	Next
	_IENavigate($oIE, $arr[$i][0])
	Sleep(500)
	;_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(500)
	ControlSetText($hWin, "", "Edit1", $sImageFilePath)
	Sleep(500)
	ControlFocus($hWin, "", "Button1")
	Sleep(500)
	ControlClick($hWin, "", "Button1", "main", 1)
	ConsoleWrite("Selected files: " & $sImageFilePath & @CRLF)
	WinWaitNotActive($hWin, "", 2)
	While 1
		Sleep(500)
		$oDiv = $oIE.document.getElementById("photos_add_bar_progress")
		If IsObj($oDiv) Then
			ConsoleWrite("div_css_display" & @TAB & $oDiv.style.display & @CRLF)
			If $oDiv.style.display = "none" Then ExitLoop
		EndIf
	WEnd
	Do
		Sleep(500)
		$oTextareas = $oIE.document.getElementsByTagName("textarea")
		If Not IsObj($oTextareas) Then ContinueLoop
		$oPhotos_add_s_caption = 0
		For $oTextarea In $oTextareas
			ConsoleWrite("$oTextarea.className" & @TAB & $oTextarea.className & @TAB & @TAB & "$oTextarea.id" & @TAB & $oTextarea.id & @CRLF)
			If $oTextarea.className = "photos_add_s_caption" Then
				$oPhotos_add_s_caption = $oTextarea
				_IEAction($oPhotos_add_s_caption, "focus")
				Sleep(100)
				_IEFormElementSetValue($oPhotos_add_s_caption, $str)
				Sleep(100)
				_IEAction($oPhotos_add_s_caption, "blur")
				;ExitLoop
			EndIf
		Next
	Until IsObj($oPhotos_add_s_caption)
	Do
		Sleep(500)
		$oButtons = $oIE.document.getElementsByTagName("button")
		If Not IsObj($oButtons) Then ContinueLoop
		For $oButton In $oButtons
			If $oButton.innerHTML = "Сохранить фотографии" Or $oButton.className = "flat_button" Then
				_IEAction($oButton, "focus")
				Sleep(500)
				_IEAction($oButton, "click")
				ExitLoop
			EndIf
		Next
	Until IsObj($oButtons)
	$iFlag = 0
	Do
		Sleep(500)
		$oDivs = $oIE.document.getElementsByTagName("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, $iLimit = 0)
	If Not FileExists($_sPath) Then Return SetError(1, 0, 0)
	Local $_sCSV = @TempDir & "\xl" & Random(111111, 999999, 1) & ".tmp.csv"
	If Not StringIsDigit($iLimit) Then $iLimit = 0
	Local $oAppl = _Excel_Open(False)
	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][0]
	_Excel_BookSaveAs($oWorkbook, $_sCSV, $xlTextWindows, True, Default, Default, True)
	If @error Then Return SetError(4, 0, 0)
	_Excel_Close($oAppl)
	Local $aRows
	Local $hFile = FileOpen($_sCSV), $sLine = "", $sLines = "", $c = 0
	If $hFile = -1 Then Return SetError(5, 0, 0)
	$sLines = ""
	While 1
		$sLine = FileReadLine($hFile)
		If @error Then ExitLoop
		$sLine = StringReplace($sLine, '"', '')
		$sLines &= $sLine & @CRLF
		If ($iLimit > 0) And (($c + 1) >= $iLimit) Then ExitLoop
		$c += 1
	WEnd
	FileClose($hFile)
	$hFile = FileOpen($_sCSV, 2)
	If $hFile = -1 Then Return SetError(6, 0, 0)
	FileWrite($hFile, $sLines)
	FileClose($hFile)
	_FileReadToArray($_sCSV, $aRows, $FRTA_NOCOUNT, @TAB)
	If $hFile = -1 Then Return SetError(7, 0, 0)
	FileDelete($_sCSV)
	$_aArray = $aRows
	Return 1
EndFunc   ;==>_Excel_BookReadToArray

Примечания:
Во вложении прикрепил файл с базой товаров для примера, и изображения
 

Вложения

alex33

Скриптер
Сообщения
1 457
Репутация
184
OffTopic:
Ой, так это же я этот скрипт около года назад написал... :IL_AutoIt_1: :ok: :shok: :whistle: 8) ;D ;) :smile:


Поставьте AutoIt 3.3.12.0 или меньше...


Добавлено:
Сообщение автоматически объединено:

alex33 сказал(а):
А вообще, эта ошибка возникает у многих, в том числе и у меня. Выход я вижу только один, поставить AutoIt версии 3.3.12.0 или ниже (Previous Versions).
 
Автор
DOMINANT

DOMINANT

Новичок
Сообщения
42
Репутация
0
Угу)))! Теперь вроде исчезла эта ошибка, но вылезла следующая, фотографии не видно что загружаются progress bar не вылазит как при добавлении фотографий. В логе сыпятся эти надписи


div_css_display block
div_css_display block
div_css_display block
div_css_display block
div_css_display block
div_css_display block
div_css_display block
div_css_display block
div_css_display block
div_css_display block
div_css_display block
div_css_display block
div_css_display block
div_css_display block
div_css_display block
div_css_display block
div_css_display block
div_css_display block
div_css_display block
div_css_display block
 

alex33

Скриптер
Сообщения
1 457
Репутация
184
Возможно у ВК поменялся HTML или ещё что-нибудь, как время появится - может быть разберусь...
 
Автор
DOMINANT

DOMINANT

Новичок
Сообщения
42
Репутация
0
Может кто нибудь попробует решить проблему? :smile:
 

alex33

Скриптер
Сообщения
1 457
Репутация
184
Я сейчас несколько раз на своей группе запустил, всё нормально, ошибок никаких не было... Всё загрузилось...


Добавлено:
Сообщение автоматически объединено:

Вот...
Код:
>"C:\Program Files\AutoIt3\SciTE\AutoIt3Wrapper\AutoIt3Wrapper.exe" /run /prod /ErrorStdOut /in "C:\Users\Alexey\Documents\_1tovar\4new2016_sftnms.au3" /UserParams    
+>19:41:49 Starting AutoIt3Wrapper v.2.2.0.3 SciTE v.3.4.1.0   Keyboard:00000419  OS:WIN_7/Service Pack 1  CPU:X64 OS:X86    Environment(Language:0419)
+>         SciTEDir => C:\Program Files\AutoIt3\SciTE   UserDir => C:\Users\Alexey\AppData\Local\AutoIt v3\SciTE\AutoIt3Wrapper   SCITE_USERHOME => C:\Users\Alexey\AppData\Local\AutoIt v3\SciTE 
>Running AU3Check (3.3.12.0)  from:C:\Program Files\AutoIt3  input:C:\Users\Alexey\Documents\_1tovar\4new2016_sftnms.au3
+>19:41:49 AU3Check ended.rc:0
>Running:(3.3.12.0):C:\Program Files\AutoIt3\autoit3.exe "C:\Users\Alexey\Documents\_1tovar\4new2016_sftnms.au3"    
--> Press Ctrl+Alt+F5 to Restart or Ctrl+Break to Stop
For#0/20
Название: PRODUCT_NAME
 Артикул: PRODUCT_SKU
 Размеры: SIZE
 Цена: ORIG_PRICE
For#1/20
Название: БЛЕЙЗЕР ЯРКО-СИНИЙ
 Артикул: 2386003
 Размеры: 44|46|52|54
 Цена: 9999
Selected files: "C:\Users\Alexey\Documents\_1tovar\photos\ZARA_HD8312386003TY821.jpg" "C:\Users\Alexey\Documents\_1tovar\photos\ZARA_HD8312386003TY821_1.jpg" "C:\Users\Alexey\Documents\_1tovar\photos\ZARA_HD8312386003TY821_2.jpg" "C:\Users\Alexey\Documents\_1tovar\photos\ZARA_HD8312386003TY821_4.jpg" "C:\Users\Alexey\Documents\_1tovar\photos\ZARA_HD8312386003TY821_5.jpg" 
div_css_display	block
div_css_display	block
div_css_display	block
div_css_display	block
div_css_display	block
div_css_display	none
$oTextarea.className	photos_add_s_caption		$oTextarea.id	photo_caption-36364965_403883891
$oTextarea.className	photos_add_s_caption		$oTextarea.id	photo_caption-36364965_403883894
$oTextarea.className	photos_add_s_caption		$oTextarea.id	photo_caption-36364965_403883896
$oTextarea.className	photos_add_s_caption		$oTextarea.id	photo_caption-36364965_403883897
$oTextarea.className	photos_add_s_caption		$oTextarea.id	photo_caption-36364965_403883900
Save OK
----------
For#2/20
Название: БАЗОВЫЙ БЛЕЙЗЕР
 Артикул: 2368223
 Размеры: S|M|L|XL|XXL
 Цена: 3999
Selected files: "C:\Users\Alexey\Documents\_1tovar\photos\ZARA_HD8312368223TY821.jpg" 
div_css_display	block
div_css_display	none
$oTextarea.className	photos_add_s_caption		$oTextarea.id	photo_caption-36364965_403883930
Save OK
----------
For#3/20
Название: БЛЕЙЗЕР С КОНТРАСТНЫМИ ДЕТАЛЯМИ
 Артикул: 2472026
 Размеры: 46|48|50|52|54|56
 Цена: 5999
Selected files: "C:\Users\Alexey\Documents\_1tovar\photos\ZARA_HD8312472026TY821_1.jpg" 
div_css_display	block
div_css_display	none
$oTextarea.className	photos_add_s_caption		$oTextarea.id	photo_caption-36364965_403883946
Save OK
----------
For#4/20
Название: БАЗОВЫЙ БЛЕЙЗЕР
 Артикул: 2489037
 Размеры: 46|48|50|52|54
 Цена: 5999
For#5/20
Название: СЕРЫЙ ШЕРСТЯНОЙ БЛЕЙЗЕР
 Артикул: 2457567
 Размеры: 44|46|48|50|52|54
 Цена: 8999
For#6/20
Название: БАЗОВЫЙ БЛЕЙЗЕР
 Артикул: 2368223
 Размеры: S|M|L|XL|XXL
 Цена: 3999
For#7/20
Название: БЛЕЙЗЕР ИЗ ПОПЛИНА
 Артикул: 2661043
 Размеры: 44|46|48|50|52|54
 Цена: 6999
For#8/20
Название: БЛЕЙЗЕР ЯРКО-СИНИЙ
 Артикул: 2386003
 Размеры: 44|46|52|54
 Цена: 9999
For#9/20
Название: КОСТЮМНЫЙ БЛЕЙЗЕР ИЗ ХЛОПКА
 Артикул: 2645521
 Размеры: 44|46|48|50|52|54|56
 Цена: 8999
For#10/20
Название: БАЗОВЫЙ БЛЕЙЗЕР
 Артикул: 2368223
 Размеры: S|M|L|XL|XXL
 Цена: 3999
For#11/20
Название: БАЗОВЫЙ БЛЕЙЗЕР
 Артикул: 2643022
 Размеры: S|M|L|XL
 Цена: 5999
For#12/20
Название: Блейзер структурный голубой
 Артикул: 2368254
 Размеры: 46|48|50|52|54
 Цена: 6999
For#13/20
Название: БАЗОВЫЙ БЛЕЙЗЕР
 Артикул: 2643022
 Размеры: M|L|XL
 Цена: 5999
For#14/20
Название: БЛЕЙЗЕР С КОНТРАСТНЫМИ ДЕТАЛЯМИ
 Артикул: 2472026
 Размеры: 46|48|50|52|54|56
 Цена: 5999
Selected files: "C:\Users\Alexey\Documents\_1tovar\photos\ZARA_HD8312472026TY821_6.jpg" "C:\Users\Alexey\Documents\_1tovar\photos\ZARA_HD8312472026TY821_7.jpg" "C:\Users\Alexey\Documents\_1tovar\photos\ZARA_HD8312472026TY821_8.jpg" 
div_css_display	block
div_css_display	block
div_css_display	none
$oTextarea.className	photos_add_s_caption		$oTextarea.id	photo_caption-36364965_403883981
$oTextarea.className	photos_add_s_caption		$oTextarea.id	photo_caption-36364965_403883983
$oTextarea.className	photos_add_s_caption		$oTextarea.id	photo_caption-36364965_403883984
Save OK
----------
For#15/20
Название: Структурный блейзер в микроклетку
 Артикул: 2463008
 Размеры: 50|52|54|56
 Цена: 9999
For#16/20
Название: ЛЬНЯНОЙ БЛЕЙЗЕР СТРЕТЧ
 Артикул: 2619001
 Размеры: 44|46|48|50|52|54
 Цена: 7999
For#17/20
Название: БАЗОВЫЙ БЛЕЙЗЕР
 Артикул: 2368223
 Размеры: S|M|L|XL|XXL
 Цена: 3999
For#18/20
Название: БЛЕЙЗЕР С КОНТРАСТНЫМИ ДЕТАЛЯМИ
 Артикул: 2472026
 Размеры: 46|48|50|52|54|56
 Цена: 5999
For#19/20
Название: БАЗОВЫЙ СЕРЫЙ БЛЕЙЗЕР
 Артикул: 2401541
 Размеры: 44|46|48|50|52|54|56
 Цена: 5999
+>19:42:43 AutoIt3.exe ended.rc:0
+>19:42:43 AutoIt3Wrapper Finished.
>Exit code: 0    Time: 54.3
AutoIt 3.3.12.0, IE 11
 
Верх