Что нового

[yadisk] Яндекс.Диск UDF

inververs

AutoIT Гуру
Сообщения
2 135
Репутация
462
AutoIt: 3.3.12.0
Версия: 1.0

Категория: Автоматизация, Интернет,API, yandex disk, Яндекс диск.

Описание: Яндекс.Диск UDF позволяет управлять ресурсами Диска (файлами и папками) посредством HTTP-запросов REST API.

API Диска предназначен для приложений, которые работают с файлами пользователей Яндекс.Диска или хранят на Диске собственные файлы и настройки.

На данный момент UDF позволяет:
загружать файлы на Диск и скачивать их;
создавать новые папки;
копировать, перемещать и удалять ресурсы.

Если еще нету диска, то регистрируйся здесь. По этой ссылке дадут лишний гигабайт!

Прежде всего вам необходим OAuth-токен, выданный вашему приложению для доступа к Диску определенного пользователю. Токен нужно передать в функцию _yadisk_set_access_token в самом начале.

Как получить OAuth-токен :
1. Зарегистрироваться на яндекс.
2. Перейти по адресу https://oauth.yandex.ru/
3. Создать приложение, нажав на ссылку Регистрация клиентских приложений
3.1 Заполните название, описание.
3.2 Дайте приложению следующие права:
а) Яндекс.Диск REST API: Все;
б) Яндекс.Диск WebDAV API: Все
3.3 Callback URL - установите "Подставить URL для разработки"
Сохраните и получите ID приложения. Например: b7a724f16b134fc3858c872215b64d2d
4. Составьте и перейдите по ссылке вида: https://oauth.yandex.ru/authorize?response_type=token&client_id=b7a724f16b134fc3858c872215b64d2d&display=popup
4.1 Разрешите доступ приложению.
5. Перепишите и сохраните OAuth-токен (Например: fb1b2ca38d3942378dfc3ce1ff9c4d41). !Не спутайте его с ID

Этот токен действует 1 год.

Все методы API смотрите здесь: https://tech.yandex.ru/disk/doc/dg/concepts/about-docpage/
В UDF реализованы часть из них. Остальные делаются по аналогии либо под заказ.

Примечание: Библиотеке требуется WinHTTP.au3 Найти и скачать ее можно здесь http://www.autoitscript.com/forum/topic/84133-winhttp-functions/

Код/Пример:
Код:
#include 'yadisk.au3'
;Впишем токен
_yadisk_set_access_token('fb1b2ca38d3942378dfc3ce1ff9c4d41') ;OAuth-токен

;Создадим 2 папки
_yadisk_create_dir('/autoit')
_yadisk_create_dir('/autoit/test')
MsgBox(0, '', 'Создан каталог /autoit/test')

$test_file = 'ydisk_example.txt'
FileWrite($test_file, FileRead(@ScriptFullPath))

;Загрузка файла
_yadisk_upload_file($test_file, '/autoit/test/' & $test_file)
MsgBox(0, '', 'Загрузили файл /autoit/test/' & $test_file)

;Скачивание файла
$binary = _yadisk_download_file('/autoit/test/' & $test_file)
MsgBox(0, 'Скачали файл /autoit/test/' & $test_file, BinaryToString($binary))

;Переименование
_yadisk_move('/autoit/test/' & $test_file, '/autoit/test/ydisk_autoit.au3')
MsgBox(0, '', 'Переименовали файл /autoit/test/ydisk_autoit.au3')

;Перемещение
_yadisk_create_dir('/autoit/test/copy')
_yadisk_move('/autoit/test/ydisk_autoit.au3', '/autoit/test/copy/ydisk_autoit.au3')
MsgBox(0, '', 'Переместили в /autoit/test/copy/ydisk_autoit.au3')

;Копирование
_yadisk_copy('/autoit/test/copy/ydisk_autoit.au3', '/autoit/test/copy/ydisk_autoit_copy.au3')
MsgBox(0, '', 'Сделали копию /autoit/test/copy/ydisk_autoit_copy.au3')

;Удаление файла
_yadisk_delete('/autoit/test/copy/ydisk_autoit_copy.au3')
MsgBox(0, '', 'Удалили копию /autoit/test/copy/ydisk_autoit_copy.au3')

;Удаление папки и всех файлов внутри!
_yadisk_delete('/autoit/test/copy')
MsgBox(0, '', 'Удалили папку /autoit/test/copy')

Файл: yadisk.au3


История версий:
1.0 - Первая версия

Автор(ы): inververs
 

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5 379
Репутация
2 702
UDF пока не проверял (лень регистрироваться), но идея определенно стоящая. От меня +1.
 

BSerj

Чайник
Сообщения
3
Репутация
0
Спасибо, пригодится! Особенно учитывая, что я регистрировался в то время, когда яндекс расщедрился на 200 гигов :smile:

От себя могу добавить несколько функций:
1. Получение информации о содержимом каталога. Возвращает в виде массива список файлов и папок выбранного каталога:

Код:
; #FUNCTION# ====================================================================================================================
; Name ..........: _yadisk_dir_contains_request
; Description ...:  Вернуть массив $aDirContent[ИндексФайлаПапки][ИндексПараметра] с параметрами папок и файлов, находящихся в выбранном каталоге
; Syntax ........: _yadisk_dir_contains_request($s_yadisk_path)
; Parameters ....: $s_yadisk_path Путь к каталогу относительно корня /   - A string value.
; Return values .: Успех - Returns 2D array $aDirContent[ResIndex][6]
;                  $aDirContent[0][0] - количество объектов в каталоге
;                  $aDirContent[ResIndex][0] - имя файла/каталога
;                  $aDirContent[ResIndex][1] - тип объекта (файл или каталог)
;                  $aDirContent[ResIndex][2] - размер в байтах
;                  $aDirContent[ResIndex][3] - дата создания
;                  $aDirContent[ResIndex][4] - дата последнего изменения
;                  $aDirContent[ResIndex][5] - тип файла
;                  Failure - Returns response and sets @error:
;                  |1 - Не удалось выполнить _WinHttpOpen
;                  |2 - Не удалось выполнить _WinHttpConnect
;                  |3 - Не удалось выполнить _WinHttpSimpleSSLRequest
;                  |5 - Операция не выполнена.
; Author ........: [email protected]
; Modified ......:
; Remarks .......: В ячейке $aDirContent[0][0] возвращаемого массива содержится общее количество объектов в каталоге.
;				   Собственно свойства файлов и папок начинаются с индекса $aDirContent[1][PropIndex].
;				   Путь к папке чувствителен к регистру.
; Related .......: _yadisk_create_dir
; Link ..........: https://tech.yandex.ru/disk/doc/dg/reference/propfind_contains-request-docpage/
; Example .......: _yadisk_dir_contains_request('/') - вывод всех папок и файлов в корне яндекс.диска
; ===============================================================================================================================
Func _yadisk_dir_contains_request($s_yadisk_path)
   Local $oDirObjResponse
   Local $oDirObjPropStat
   Local $oDirObjProps
   Local $iObjPropsNum
   Local $oDirObjProp
   Local $sDirObjName

    __yadisk_open()
    If @error Then Return SetError(@error, @extended, False)

    Local $head = 'Host: webdav.yandex.ru' & @CRLF & _
                  'Accept: */*' & @CRLF & _
                  'Depth: 1' & @CRLF & _
                  'Authorization: OAuth ' & $__g_yadisk_access_token & @CRLF
    Local $data = Default

    Local $a_response = _WinHttpSimpleSSLRequest($__g_yadisk_http_connect, 'PROPFIND', $s_yadisk_path, Default, $data, $head, True, 1)
    If @error Then Return SetError(3, @error, False)

    If StringInStr($a_response[0], '207 Multi-Status') Then
         Local $oXML = ObjCreate('Msxml2.DOMDocument.6.0')
         $oXML.LoadXML($a_response[1])
         Local $oXMLElement = $oXML.documentElement
         Local $oDirObjList = $oXMLElement.childNodes
         Local $iDirObjNum = $oDirObjList.length-1
         Local $aDirContent[$oDirObjList.length][6]
         $aDirContent[0][0] = $iDirObjNum
         $aDirContent[0][1] = 'ResourceType'
         $aDirContent[0][2] = 'Size'
         $aDirContent[0][3] = 'CreateDate'
         $aDirContent[0][4] = 'LastModifiedDate'
         $aDirContent[0][5] = 'FileType'
         For $i = 1 To $iDirObjNum
            $oDirObjResponse = $oDirObjList.item($i).childNodes
            $oDirObjPropStat = $oDirObjResponse.item(1).childNodes
            $oDirObjProps = $oDirObjPropStat.item(1).childNodes
            $iObjPropsNum = $oDirObjProps.length
            For $j = 0 To $iObjPropsNum
               $oDirObjProp = $oDirObjProps.item($j)
                  Switch  $oDirObjProp.nodeName
                     Case 'd:displayname'
                        $aDirContent[$i][0] = $oDirObjProp.text
					 Case 'd:resourcetype'
                        If $oDirObjProp.hasChildNodes() Then
                           $aDirContent[$i][1] = 'dir'
                        Else
                           $aDirContent[$i][1] = 'file'
                        EndIf
                     Case 'd:getcontentlength'
                        $aDirContent[$i][2] = $oDirObjProp.text
                     Case 'd:creationdate'
                        $aDirContent[$i][3] = $oDirObjProp.text
                     Case 'd:getlastmodified'
                        $aDirContent[$i][4] = $oDirObjProp.text
                     Case 'd:getcontenttype'
                        $aDirContent[$i][5] = $oDirObjProp.text
                     Case Else
                  EndSwitch
            Next
         Next

         Return $aDirContent
    EndIf

    __yadisk_debug_response('_yadisk_dir_contains_request(' & $s_yadisk_path & ')', $a_response)

    Return SetError(5, 0, $a_response[0] & $a_response[1])
EndFunc   ;==>_yadisk_dir_contains_request



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


2. Запрос количества доступного/занятого пространства яндекс.диска:

Код:
; #FUNCTION# ====================================================================================================================
; Name ..........: _yadisk_space_request
; Description ...: Запросить количество доступного/занятого пространства яндекс.диска
; Syntax ........: _yadisk_space_request()
; Parameters ....: $sFormatFileSize - Формат вывода результата
;				   $sFormatFileSize = 'B' - байты (по умолчанию)
;				   $sFormatFileSize = 'KB' - килобайты
;				   $sFormatFileSize = 'MB' - мегабайты
;				   $sFormatFileSize = 'GB' - гигабайты
; Return values .: Успех - Returns array $aYadiskSpace[2]
;                  $aYadiskSpace[0] - количество доступного пространства
;                  $aYadiskSpace[1] - количество занятого пространства
;                  Failure - Returns response and sets @error:
;                  |1 - Не удалось выполнить _WinHttpOpen
;                  |2 - Не удалось выполнить _WinHttpConnect
;                  |3 - Не удалось выполнить _WinHttpSimpleSSLRequest
;                  |5 - Операция не выполнена.
; Author ........: [email protected]
; Modified ......:
; Remarks .......: По умолчанию формат вывода - в байтах
; Related .......:
; Link ..........: https://tech.yandex.ru/disk/doc/dg/reference/propfind_space-request-docpage/
; Example .......: _yadisk_space_request('GB') - запросить количество доступного/занятого пространства яндекс.диска с форматом вывода в гигабайтах
; ===============================================================================================================================
Func _yadisk_space_request($sFormatFileSize = 'B')
   Local $oDirObjResponse
   Local $oDirObjPropStat
   Local $oDirObjProps
   Local $iObjPropsNum
   Local $oDirObjProp
   Local $aYadiskSpace[2]
   Local $iKB = 1024
   Local $iMB = 1048576
   Local $iGB = 1073741824
   Local $iDiv = 1

   __yadisk_open()
   If @error Then Return SetError(@error, @extended, False)

   Local $s_yadisk_path = ''
   Local $head = 'Host: webdav.yandex.ru' & @CRLF & _
                  'Accept: */*' & @CRLF & _
                  'Depth: 0' & @CRLF & _
                  'Authorization: OAuth ' & $__g_yadisk_access_token & @CRLF
   Local $data = '<D:propfind xmlns:D="DAV:"><D:prop><D:quota-available-bytes/><D:quota-used-bytes/></D:prop></D:propfind>'

   Local $a_response = _WinHttpSimpleSSLRequest($__g_yadisk_http_connect, 'PROPFIND', $s_yadisk_path, Default, $data, $head, True, 1)
   If @error Then Return SetError(3, @error, False)

    If StringInStr($a_response[0], '207 Multi-Status') Then
         Local $oXML = ObjCreate('Msxml2.DOMDocument.6.0')
         $oXML.LoadXML($a_response[1])
         Local $oXMLElement = $oXML.documentElement
         Local $oDirObjList = $oXMLElement.childNodes
		 $oDirObjResponse = $oDirObjList.item(0).childNodes
		 $oDirObjPropStat = $oDirObjResponse.item(1).childNodes
		 $oDirObjProps = $oDirObjPropStat.item(1).childNodes
		 $iObjPropsNum = $oDirObjProps.length
		 ConsoleWrite ( '$iObjPropsNum: ' & $iObjPropsNum & @CRLF )
		 For $j = 0 To $iObjPropsNum
			$oDirObjProp = $oDirObjProps.item($j)
			   Switch  $oDirObjProp.nodeName
				  Case 'd:quota-available-bytes'
					 $aYadiskSpace[0] = Number ($oDirObjProp.text, 2)
				  Case 'd:quota-used-bytes'
					 $aYadiskSpace[1] = Number ($oDirObjProp.text, 2)
				  Case Else
			   EndSwitch
		 Next

		 Switch  $sFormatFileSize
			Case 'KB'
			   $iDiv = $iKB
			Case 'MB'
			   $iDiv = $iMB
			Case 'GB'
			   $iDiv = $iGB
			Case Else
			   $iDiv = 1
		 EndSwitch

		 For $Index = 0 To 1
			$aYadiskSpace[$Index] = Floor ($aYadiskSpace[$Index] / $iDiv)
		 Next

         Return $aYadiskSpace
    EndIf

    __yadisk_debug_response('_yadisk_space_request(' & $s_yadisk_path & ')', $a_response)

    Return SetError(5, 0, $a_response[0] & $a_response[1])
EndFunc   ;==>_yadisk_space_request

3. Управление общим доступом к файлам и каталогам яндекс.диска

Код:
; #FUNCTION# ====================================================================================================================
; Name ..........: _yadisk_resource_share
; Description ...: Управление общим доступом к файлам и каталогам яндекс.диска
; Syntax ........: _yadisk_resource_share()
; Parameters ....: $s_yadisk_path - путь к каталогу или файлу (string)
;				   $s_share_action = 'open' - открытие доступа к ресурсу (string)
;				   $s_share_action = 'close' - закрытие доступа к ресурсу (string)
;				   $s_share_action = 'check' - проверка доступа к ресурсу (string)
; Return values .: Успех - Returns
;                  _yadisk_resource_share($s_yadisk_path, 'open') - при успешном выполнении операции возвращает ссылку на ресурс для общего доступа (string), иначе False
;                  _yadisk_resource_share($s_yadisk_path, 'close') - при успешном выполнении операции возвращает True, иначе False
;                  _yadisk_resource_share($s_yadisk_path, 'check') - при наличии открытого доступа возвращается ссылка на ресурс (string), при закрытом - False
;                  Failure - Returns response and sets @error:
;                  |1 - Не удалось выполнить _WinHttpOpen
;                  |2 - Не удалось выполнить _WinHttpConnect
;                  |3 - Не удалось выполнить _WinHttpSimpleSSLRequest
;                  |5 - Сервер ответил с ошибкой, возвращается полный ответ от сервера.
;                  |6 - Параметр $s_share_action введён неверно.
;                  |7 - Неправильный ответ сервера при открытии доступа к ресурсу, @extended = полный ответ от сервера.
;                  |8 - Неправильный ответ сервера при закрытии доступа к ресурсу, @extended = полный ответ от сервера.
; Author ........: [email protected]
; Modified ......:
; Remarks .......: Не забудьте закрывающий слеш '/' при открытии доступа к каталогу.
;				   На запрос открытия уже открытого ресурса возвращается существующая ссылка, перегенерации ссылки не происходит.
;				   Для этого нужно закрыть и заново открыть доступ к ресурсу.
; Related .......:
; Link ..........: https://tech.yandex.ru/disk/doc/dg/reference/proppatch-docpage/
; Example .......: _yadisk_resource_share('/autoit/test/') - открытие общего доступа к каталогу
; 				   _yadisk_resource_share('/autoit/test/ydisk_example.txt') - открытие общего доступа к файлу
; 				   _yadisk_resource_share('/autoit/test/ydisk_example.txt', 'close') - закрытие доступа к файлу
; 				   _yadisk_resource_share('/autoit/test/ydisk_example.txt', 'check') - проверка доступа к файлу
; ===============================================================================================================================
Func _yadisk_resource_share($s_yadisk_path, $s_share_action = 'open')
   Local $s_result = ''
   Local $data = ''
   Local $s_depth = ''
   Local $s_method = 'PROPPATCH'

   __yadisk_open()
   If @error Then Return SetError(@error, @extended, False)

   Switch StringLower($s_share_action)
	  Case 'open'
		 $data = '<propertyupdate xmlns="DAV:"><set><prop><public_url xmlns="urn:yandex:disk:meta">true</public_url></prop></set></propertyupdate>'
	  Case 'close'
		 $data = '<propertyupdate xmlns="DAV:"><remove><prop><public_url xmlns="urn:yandex:disk:meta" /></prop></remove></propertyupdate>'
	  Case 'check'
		 $data = '<propfind xmlns="DAV:"><prop><public_url xmlns="urn:yandex:disk:meta"/></prop></propfind>'
		 $s_depth = 'Depth: 0'
		 $s_method = 'PROPFIND'
	  Case Else
		 Return SetError(6, 0, 'Word of second parameter is wrong! Please select "open", "close" or "check".')
   EndSwitch

   Local $head =  'User-Agent: my_application/0.0.1' & @CRLF & _
				  'Host: webdav.yandex.ru' & @CRLF & _
				  'Authorization: OAuth ' & $__g_yadisk_access_token & @CRLF & _
				  $s_depth & @CRLF & _
				  'Content-Length: ' & StringLen($data)

   Local $a_response = _WinHttpSimpleSSLRequest($__g_yadisk_http_connect, $s_method, $s_yadisk_path, Default, $data, $head, True, 1)
   If @error Then Return SetError(3, @error, False)

   If StringInStr($a_response[0], '207 Multi-Status') Then
	  Local $oXML = ObjCreate('Msxml2.DOMDocument.6.0')
	  $oXML.LoadXML($a_response[1])
	  Local $oXMLElement = $oXML.documentElement
	  Local $oDirObjList = $oXMLElement.childNodes
	  Local $oDirObjResponse = $oDirObjList.item(0).childNodes
	  Local $oDirObjPropStat = $oDirObjResponse.item(1).childNodes
	  Local $oDirObjProps = $oDirObjPropStat.item(1).childNodes
	  Local $oDirObjProp = $oDirObjProps.item(0)
	  $s_result = $oDirObjProp.text

	  Switch StringLower($s_share_action)
		 Case 'open'
			If $s_result <> '' Then
			   Return SetError(0, 0, $s_result)
			Else
			   Return SetError(7, $a_response[0] & $a_response[1], False)
			EndIf
		 Case 'close'
			If $s_result == '' Then
			   Return SetError(0, 0, True)
			Else
			   Return SetError(8, $a_response[0] & $a_response[1], False)
			EndIf
		 Case 'check'
			If $s_result <> '' Then
			   Return SetError(0, 0, $s_result)
			Else
			   Return SetError(0, 0, False)
			EndIf
		 Case Else
	  EndSwitch
   EndIf

   __yadisk_debug_response('_yadisk_resource_share(' & $s_yadisk_path & ')', $a_response)

   Return SetError(5, 0, $a_response[0] & $a_response[1])
EndFunc   ;==>_yadisk_resource_share
 

dilon

Чайник
Сообщения
5
Репутация
0
inververs, Спасибо за труды и разжеванные инструкции. Только я не пойму: почему у меня не получается скачать файлы с Я.Диска? Загрузить, создать папки могу, а скачать - нет. Никакой ошибки при этом не выдает.
 
Автор
inververs

inververs

AutoIT Гуру
Сообщения
2 135
Репутация
462
Файл большой? Мелкие скачивает? Путь к файлу правильный? Покажите код(без токена)
 

dilon

Чайник
Сообщения
5
Репутация
0
На вашем примере:
Код:
#include 'yadisk.au3'
_yadisk_set_access_token('fb8b2ca58d4942878dfc5ce0ff9c4d42')
_yadisk_download_file('/autoit/test/ydisk_example.txt')


После выполнения скрипта файл должен быть скачан в папку, откуда запускался скрипт?
Если да - то у меня его нет :smile:
 
Автор
inververs

inververs

AutoIT Гуру
Сообщения
2 135
Репутация
462
dilon [url_ex=javascript:qq.OpenLink('http://autoit-script.ru/index.php?topic=19415.msg121114#msg121114')][?][/url_ex]
После выполнения скрипта файл должен быть скачан в папку, откуда запускался скрипт?
Нет не должен. У меня сделано так, что файл скачивается в переменную, как binary, поэтому функция и завется download, a не save..
Смотрите пример, там содержимое файла выводится в MsgBox.
Что бы сохранить файл на диск есть функции
Код:
FileOpen, FileWrite, FileClose
 

dilon

Чайник
Сообщения
5
Репутация
0
Код:
#include 'yadisk.au3'
#include <FileConstants.au3>
_yadisk_set_access_token('fb8b2ca58d4942878dfc5ce0ff9c4d42')
$binary = _yadisk_download_file('/autoit/test/ydisk_example.txt')
FileWrite("ydisk_example.txt", $binary)


Так получилось :smile:
С файлами понятно, а папку целиком как можно скачать? Ведь FileWrite уже не подойдет...
 

neobychno

Чайник
Сообщения
2
Репутация
0
Пробую загрузить архив, сообщает что всё загружено. На яндекс диске появляется только размер отличный от оригинального и если уже этот файл слить то архив повреждён.
Тестовый пример с txt файлом отлично работает. Покапался в yadisk.au3. Там при загрузка файла используется команда FileRead. Для формирования самого запроса ещё определяется длина файла, вот он эту длину неправильно считывает. Подскажите как правильно загрузить архивы чтобы файл был корректного размера и содержания?
Код:
Func _yadisk_upload_file($s_local_path, $s_yadisk_path)
	If Not FileExists($s_local_path) Then
		Return SetError(4, 0, False)
	EndIf

	__yadisk_open()
	If @error Then Return SetError(@error, @extended, False)

	Local $file_tag = __yadisk_tag($s_local_path)
	Local $file_sha = __yadisk_sha($s_local_path)
	Local $content_type = __WinHttpMIMEType($s_local_path)
	Local $data = FileRead($s_local_path)
	Local $content_length = StringLen($data)

	Local $head = _
			__yadisk_default_head() & _
			'Etag: ' & $file_tag & @CRLF & _
			'Sha256: ' & $file_sha & @CRLF & _
			'Expect: 100-continue' & @CRLF & _
			'Content-Type: ' & $content_type & @CRLF & _
			'Content-Length: ' & $content_length & @CRLF

	ConsoleWrite($head) ;### Debug Console

	Local $a_response = _WinHttpSimpleSSLRequest($__g_yadisk_http_connect, "PUT", $s_yadisk_path, Default, $data, $head, True, 1)
	If @error Then Return SetError(3, @error, False)

	If StringInStr($a_response[0], 'Created') Then
		Return True
	EndIf

	__yadisk_debug_response('_yadisk_upload_file(' & $s_local_path & ', ' & $s_yadisk_path & ')', $a_response)

	Return SetError(5, 0, $a_response[0] & $a_response[1])
EndFunc   ;==>_yadisk_upload_file
 

alex33

Скриптер
Сообщения
1 451
Репутация
180
На замену FileRead:
Код:
Local $h_BinFile = FileOpen($s_local_path, 16)
    Local $data = FileRead($h_BinFile)
	FileClose($h_BinFile)
    ;~ Local $content_length = FileGetSize($s_local_path)
    Local $content_length = BinaryLen($data)



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

Этот код надо вставить после этой строки:
Код:
Local $content_type = __WinHttpMIMEType($s_local_path)

Вместо этой:
Код:
Local $data = FileRead($s_local_path)
 

neobychno

Чайник
Сообщения
2
Репутация
0
Спасибо, приведённый код работает.
 

kopeheb

Чайник
Сообщения
17
Репутация
0
чтот изменилось на Яндекс-диск?
у меня вот что выдает:
Код:
#include 'yadisk.au3'
#include <FileConstants.au3>
_yadisk_set_access_token('8d1bc6e5985e4a15b09118b3c85*****')
$binary = _yadisk_download_file('/date/date.txt')
FileWrite("data.txt", $binary)

Код:
C:\......\AutoIt\?????\autoriz.au3 (50) : ==> Unterminated string.: 
<!-- </textarea> --><!-- '"` --><meta content="authenticity_token" name="csrf-param" /> 

>Exit code: 1    Time: 0.04415
а из примера автора:
Код:
#include 'yadisk.au3'

;Впишем токен
_yadisk_set_access_token('8d1bc6e5985e4a15b09118b3c85*****') ;OAuth-токен(изменен)

$test_file = 'data.txt'
FileWrite($test_file, FileRead(@ScriptFullPath))

;Скачивание файла
$binary = _yadisk_download_file('/data/' & $test_file)
MsgBox(0, 'Скачали файл /data/' & $test_file, BinaryToString($binary))

Код:
C:\Users\Kopeheb\Desktop\AutoIt\testYD\yadisk.au3 (2) : ==> Error opening the file.: 
#include <WinHTTP.au3> 

>Exit code: 1    Time: 0.04
 

kopeheb

Чайник
Сообщения
17
Репутация
0
доброй ночи CreatoR
А если почитать внимательно первое сообщение?
как раз разбираюсь
и я так понял, что не так все просто, что пример автора просто пример, а yadisk.au3 не универсален?
:(
все, нашел чего не доставало, соррь :-\ :-[
 

bugmenot

Чайник
Сообщения
17
Репутация
0
А как организовать загрузку нескольких файлов из массива? С ftp получается, а здесь только первый файл заливает.
 
Автор
inververs

inververs

AutoIT Гуру
Сообщения
2 135
Репутация
462
bugmenot [url_ex=javascript:qq.OpenLink('http://autoit-script.ru/index.php?topic=19415.msg125684#msg125684')][?][/url_ex]
А как организовать загрузку нескольких файлов из массива?
По очереди
 

bugmenot

Чайник
Сообщения
17
Репутация
0
Код:
_yadisk_set_access_token('b7e44f77bfd1125c81b923e***d19c78')
$uploads_file = _FO_FileSearch (@scriptdir, '~*.new', True, 0, 2, 2)
for $i = 0 to UBound($uploads_file)
_yadisk_upload_file($uploads_file, '/krl/' & $uploads_file)
Next


И не идет.
 

CrazyDoc

Чайник
Сообщения
75
Репутация
2
bugmenot сказал(а):
Код:
_yadisk_set_access_token('b7e44f77bfd1125c81b923e***d19c78')
$uploads_file = _FO_FileSearch (@scriptdir, '~*.new', True, 0, 2, 2)
for $i = 0 to UBound($uploads_file)
_yadisk_upload_file($uploads_file, '/krl/' & $uploads_file)
Next


И не идет.
В таком виде и не должно. Попробуйте это:
Код:
_yadisk_set_access_token('b7e44f77bfd1125c81b923e***d19c78')
$uploads_file = _FO_FileSearch (@scriptdir, '~*.new', True, 0, 2, 2)
for $i = 0 to UBound($uploads_file)
_yadisk_upload_file($uploads_file[$i], '/krl/' & $uploads_file[$i])
Next
 
Верх