Total Commander Forum Index Total Commander
Форум поддержки пользователей Total Commander
Сайты: Все о Total Commander | Totalcmd.net | Ghisler.com | RU.TCKB
 
 RulesRules   SearchSearch   FAQFAQ   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

[AutoIt] Работа с Яндекс.Диск и плагином WebDAV
Goto page 1, 2  Next
 
Post new topic   Reply to topic    Total Commander Forum Index -> Автоматизация Total Commander printer-friendly view
View previous topic :: View next topic  
Author Message
Skif_off



Joined: 28 Nov 2012
Posts: 1010

Post (Separately) Posted: Sat Apr 22, 2017 05:23    Post subject: [AutoIt] Работа с Яндекс.Диск и плагином WebDAV Reply with quote

Преамбула. Плагин WebDAV имеет одну неудобную особенность: операция удаления файлов/папок не может работать в фоне, блокируя окно ТС, что неудобно, если процесс затянулся. В поисках возможности прикрутить для этого стороннее средство в голову пришла мысль избавиться от необходимости логиниться в браузере и родилось это.

Скрипт умеет:
- удалять файлы/папки;
- публиковать файлы/папки (если объект уже был опубликован, то будет показана предыдущая ссылка);
- закрывать файлы/папки;
- проверять, опубликованы ли выделенные файлы/папки;
- показать доступное и занятое место.
В первом и третьем случае будет показан диалог, подобный ТС (подтверждение и список имён, не более 5 штук). Во втором и четвёртом - окно с результирующей таблицей с возможностью скопировать все или только выделенные (просто ссылки или оформленные, как ссылка в HTML или в BBcode), при этом копируются только пункты со ссылкой.

Если это не быстрое соединение ("Quick connection"), то скрипт попытается прочитать адрес сервера, имя пользователя и пароль из файла конфигурации tcwebdav.ini:
- если удалось прочитать имя пользователя и пароль, то они будут использоваться без запроса ввода;
- если удалось прочитать только имя пользователя, то в окно ввода имени пользователя/пароля будет автоматически вставлено имя пользователя, а фокус ввода (курсор) будет поставлен на поле ввода пароля;
Если пароль защищён главным паролем, то скрипт предложит ввести пароль аккуанта!

Задуман и реализован для работы с Total Commander и Double Commander (учтены особенности получения списка файлов/папок и адресов): скрипт проверяет имя родительского процесса и если в его имени не содержится "doublec" или "totalcmd", то скрипт будет завершён с предупреждением.

Ссылка (0.0.3.6 / 2017.05.15).
Писалось и проверялось на AutoIt 3.3.8.1, версии выше пока не проверялись, могут быть проблемы (что-то там менялось в работе с COM-объектами), т.к. используется COM-объект WinHttp.WinHttpRequest.5.1.
Скрипт использует WebDAV API, для доступа используется Basic-аутентификация (как и в плагине WebDAV).

Параметры запуска:
Code:
удаляем файлы/папки
  "%WL" --del
публикуем файлы/папки (если файл/папка уже опубликованы, будет просто показан адрес)
  "%WL" --public
закрываем файлы/папки
  "%WL" --public-del
проверяем, опубликованы ли файлы/папки
  "%WL" --public-check
свободное и занятое место
  "%WL" --size

Где %WL - список в UTF-16LE. Для Double Commander список для единообразия необходимо задавать как "%/1%LW" (без кавычек).

Пример кнопки:
Code:
TOTALCMD#BAR#DATA
"%COMMANDER_PATH%\AutoIt3.exe" "%COMMANDER_PATH%\Utils\YandexDiskWebDAV.au3"
"%WL" --public-check
%COMMANDER_PATH%\AutoIt3.exe
проверить, опубликованы ли файлы/папки
%COMMANDER_PATH%\Utils\

-1

AutoIt3.exe брать на офсайте, либо попробовать вариант с /AutoIt3ExecuteScript (пример запуска нескомпилированного скрипта здесь, если используется скомпилированная версия TabsList, то вполне можно использовать её).

User Agent, не мудрствуя лукаво, соответствует IE11 на Win7x86, без излишеств
Code:
Mozilla/5.0 (Windows NT 6.1; Trident/7.0; rv:11.0) like Gecko


Last edited by Skif_off on Mon May 15, 2017 02:51; edited 8 times in total
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 11695
Location: Москва

Post (Separately) Posted: Sat Apr 22, 2017 05:55    Post subject: Reply with quote

Skif_off wrote:
Ссылка.
Ну, вот зачем эти сложности, если есть спойлер? Если код открыт, то заливать его на облако по меньшей мере странно.
_________________
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Back to top
View user's profile Send private message
Skif_off



Joined: 28 Nov 2012
Posts: 1010

Post (Separately) Posted: Sat Apr 22, 2017 13:42    Post subject: Reply with quote

Flasher
Сам файл видел? ~9 сотен строк кода копировать устанешь, иначе так бы и сделал.
Не уловил, как связаны облако и открытость кода.
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 11695
Location: Москва

Post (Separately) Posted: Sat Apr 22, 2017 13:56    Post subject: Reply with quote

Skif_off
Файл весит 39 Кб. У нас тут можно картинки на 100 Кб размещать.
Вот и я не уловил, как они могут быть связаны. Это же не GitHub.
_________________
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Back to top
View user's profile Send private message
Skif_off



Joined: 28 Nov 2012
Posts: 1010

Post (Separately) Posted: Sat Apr 22, 2017 15:17    Post subject: Reply with quote

Flasher
При чём тут килобайты и ограничения в 100 КБ? Говорю о неудобстве копирования 9 сотен строк кода супротив кнопки Скачать. GitHub тут по очевидным причинам вообще не подойдёт.
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 11695
Location: Москва

Post (Separately) Posted: Sat Apr 22, 2017 15:31    Post subject: Reply with quote

Skif_off
Ну, так у тебя два варианта есть. А ты выбрал только один. Можно же совместить, чтобы была возможность и код в онлайн-режиме читать.
А что в GitHub не так? Там что портянок мало?
_________________
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Back to top
View user's profile Send private message
Skif_off



Joined: 28 Nov 2012
Posts: 1010

Post (Separately) Posted: Sat Apr 22, 2017 15:49    Post subject: Reply with quote

Flasher
Файл большой, сливай и смотри в нормальном редакторе - с подсветкой синтаксиса и фолдингом (структуре уделено внимание). Или не сливай.
GitHub не дружит с cp1251.
От дискуссии не по работе скрипта/со скриптом или непонятного в описании устраняюсь.
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 11695
Location: Москва

Post (Separately) Posted: Sat Apr 22, 2017 16:20    Post subject: Reply with quote

Действительно, что дискутировать и что-то доказывать, когда проще самому сделать.
Оформленный код. Только текст (ПКМ > Cохранить ссылку как... > YandexDiskWebDAV.au3).
_________________
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Back to top
View user's profile Send private message
Skif_off



Joined: 28 Nov 2012
Posts: 1010

Post (Separately) Posted: Thu Apr 27, 2017 12:26    Post subject: Reply with quote

0.0.2.3 / 2017.04.27
- добавлено окно прогресса для всех операций (кроме получения размера, конечно), в окне прогресса отображается текущая папка от корня, а под ней имя обрабатываемого файла/папки;
- различные внутренние изменения.


Last edited by Skif_off on Thu Apr 27, 2017 22:01; edited 2 times in total
Back to top
View user's profile Send private message
Skif_off



Joined: 28 Nov 2012
Posts: 1010

Post (Separately) Posted: Thu Apr 27, 2017 21:59    Post subject: Reply with quote

Кто-нибудь пробовал? Что-то засомневался, если копировать ссылки на опубликованные файлы/папки как оформленные, то в буфер обмена выделеные попадают в таком виде (для HTML и BBcode соотв.)
Code:
<a href="link">name</a>
[url=link]name[/url]

где name - то же, что и в первом столбце таблицы (полный путь от корня диска): может быть, стоит оставить только имя файла/папки?
Back to top
View user's profile Send private message
ZZZAlexZZZ



Joined: 08 Mar 2014
Posts: 26

Post (Separately) Posted: Fri Apr 28, 2017 20:13    Post subject: Reply with quote

Прошу поподробнее расписать как его правильно вмонтировать и пользоваться.
У меня кнопка каждый раз запрашивает пароль - в чем смысл и удобство тогда?
Back to top
View user's profile Send private message
Skif_off



Joined: 28 Nov 2012
Posts: 1010

Post (Separately) Posted: Fri Apr 28, 2017 21:44    Post subject: Reply with quote

ZZZAlexZZZ wrote:
Прошу поподробнее расписать как его правильно вмонтировать и пользоваться.

Добавляется как и любой другой скрипт в большинстве случаев Smile Скачиваете YandexDiskWebDAV.au3 и кладёте в удобное место, скачиваете с офсайта autoit-v3.3.8.1.zip, достаёте из архива AutoIt3.exe и кладёте в удобное место. Теперь добавляете кнопку(и), пример в первом сообщении темы, только поправьте пути на свои. Немного позже выложу скомпилированную версию.
Открываете Яндекс.Диск в плагине WebDAV, выделяете файл(ы)/папку(и) и жмёте кнопку.
ZZZAlexZZZ wrote:
У меня кнопка каждый раз запрашивает пароль - в чем смысл и удобство тогда?

Естественно запрашивает, как без него? Смысл и удобство перечислены в первом сообщении*, плагин этого не умеет. Не думаю, что необходимо уточнять, но на всякий случай: "публикация" - то, что в браузере называется "поделиться ссылкой", "закрытие" - удалить ссылку, соотв..
Не знаю, как безопасно сохранить пароль, и пока не пробовал разобраться, как хранит его плагин WebDAV (это ещё не учитывая возможность плагина защищать пароли главным паролем) - поэтому запрашивает. Ну и чтобы меньше спрашивать, скрипт пытается прочитать и использовать хотя бы логин из tcwebdav.ini.

* ещё была мысль добавить возможность закрыть файлы/папки из окна просмотра после запуска с параметром --public или --public-check и, может быть, запрос подтверждения при запуске с --public-del.

P.S. Добавил в первом сообщении: используемый API и способ аутентификации.
Back to top
View user's profile Send private message
ZZZAlexZZZ



Joined: 08 Mar 2014
Posts: 26

Post (Separately) Posted: Sat Apr 29, 2017 23:10    Post subject: Reply with quote

Тогда мной не верно было прочитано ТЗ и использование данного скрипта для меня не имеет смысла - искать и вводить каждый раз пароль не хватит терпения.
Quote:
Ну и чтобы меньше спрашивать, скрипт пытается прочитать и использовать хотя бы логин из tcwebdav.ini.

За это спасибо, но без пароля - не думаю.
Спасибо за проделанную работу.
Back to top
View user's profile Send private message
Skif_off



Joined: 28 Nov 2012
Posts: 1010

Post (Separately) Posted: Sun Apr 30, 2017 02:34    Post subject: Reply with quote

ZZZAlexZZZ
Я не програмист, сходу не разберусь, как Гислер хранит пароль, поэтому пока не совался, вариант держать скрипт в памяти, чтобы водить пароль только при первом вызове мне не нравится. (В крайнем случае есть KeePass.)
Back to top
View user's profile Send private message
Skif_off



Joined: 28 Nov 2012
Posts: 1010

Post (Separately) Posted: Sun Apr 30, 2017 23:42    Post subject: Reply with quote

0.0.2.9 / 2017.04.30
- размер и расположение элементов окна прогресса немного изменены;
- добавлен запрос подтверждения при закрытии файлов/папок;
- различные внутренние изменения (окно прогресса и отправка сообщений выделены в одну функцию и совмещены для всех операций, прочее).
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    Total Commander Forum Index -> Автоматизация Total Commander All times are GMT + 4 Hours
Goto page 1, 2  Next
Page 1 of 2

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2005 phpBB Group