1

Тема: AHK: Написал и отладил программу --X--> "Коллекция скриптов и идей."

В общем - делал для себя, но увлёкся и сделал больше. Хочу поделиться. Читая форум, я понял, что многим она пригодилась бы.
Ничего "сверхъестественного" - просто сделал качественно.
Прога из серии -нудятина +комфорт.
Применима в: RGB, коррекция, графики, интерфейсы, если не потеряю интерес - то V.2 хочу ещё завести в тригонометрию... собственно там, в V.1 - больше платформы на развитие, чем самой программы (говорю увлёкся)...
Не зачем здесь углубляться в детали, вся инфа есть в справке, в проге.

Какое макс. разрешение (или вес) на скриншоты? PNG Не отображались на предпросмотре...
Впрочем, если "Коллекция скриптов и идей." - не принципиально, я могу и в касательных темах её выкладывать.
Решил спросить, так, из культурных соображений

Уравнение абсолютной прогрессии:
|0| Однажды, я осознал - мои знания ровны нолю...
|1| С тех пор, ноль - бесконечно, стремиться к бесконечности...

2

Re: AHK: Написал и отладил программу --X--> "Коллекция скриптов и идей."

Я так и не понял, в чём вопрос.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

3

Re: AHK: Написал и отладил программу --X--> "Коллекция скриптов и идей."

Можно ли выложить код, непонятно для чего предназначенный.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

4 (изменено: <IvanSan>, 2014-12-15 02:31:59)

Re: AHK: Написал и отладил программу --X--> "Коллекция скриптов и идей."

Не могу я по той ссылке.... тьфу бл... ссылку то и не сделал.

http://forum.script-coding.com/viewforum.php?id=2

Ссылка там - так и называется: "Коллекция скриптов и идей."

В общем не могу там ни тем ни сообщений писать, а смотрел, там и выкладывают "самодеятельность"...
И какие требования к скришотам ?

Уравнение абсолютной прогрессии:
|0| Однажды, я осознал - мои знания ровны нолю...
|1| С тех пор, ноль - бесконечно, стремиться к бесконечности...

5

Re: AHK: Написал и отладил программу --X--> "Коллекция скриптов и идей."

В Коллекцию могут постить только участники, носящие гордое звание Разработчика. Если хотите поделиться какой-то разработкой, пишите сюда. Если кто-либо из модераторов или постоянных участников форума сочтёт код достойным Коллекции, получите статус Разработчика и сможете создавать посты в Коллекции. К скриншотам никаких требований нет, но практика показала, что картинки размещать лучше на сторонних ресурсах, у данного случаются тормоза с отображением. Если картинка очень большого размера, здесь помещаете только кликабельное превью со ссылкой на полный размер.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

6

Re: AHK: Написал и отладил программу --X--> "Коллекция скриптов и идей."

http://forum.script-coding.com/rules.html#2.

Уже прочитал.

serzh82saratov пишет:

Можно ли выложить код, непонятно для чего предназначенный.

А я не спрашивал, "разрешения". Я проявил такт, предупредив о своих намерениях. Видать надменность глаза заслоняет?

Уравнение абсолютной прогрессии:
|0| Однажды, я осознал - мои знания ровны нолю...
|1| С тех пор, ноль - бесконечно, стремиться к бесконечности...

7

Re: AHK: Написал и отладил программу --X--> "Коллекция скриптов и идей."

<IvanSan>, пока что действительно непонятно, для чего предназначен ваш код, здесь коллега serzh82saratov совершенно прав. И у нас не приветствуется флуд и переход на личности, впредь постарайтесь этого избегать.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

8 (изменено: <IvanSan>, 2014-12-15 02:56:53)

Re: AHK: Написал и отладил программу --X--> "Коллекция скриптов и идей."

teadrinker я по минимуму 640х480 сделал,  (понятно что можно резать сужать) - не прошли

http://forum.script-coding.com/viewtopic.php?id=10193

под 2к. ширина - весит, может mail-облако не умеет делиться? ща попробую через обычный файловик.

Давно я на форумах не общался...

Уравнение абсолютной прогрессии:
|0| Однажды, я осознал - мои знания ровны нолю...
|1| С тех пор, ноль - бесконечно, стремиться к бесконечности...

9 (изменено: <IvanSan>, 2014-12-15 03:09:53)

Re: AHK: Написал и отладил программу --X--> "Коллекция скриптов и идей."

teadrinker пишет:

...пока что действительно непонятно, для чего предназначен ваш код...

А почему и тут и там слово код? Я то хотел ексешник.exe выложить.

teadrinker пишет:

...И у нас не приветствуется флуд и переход на личности, впредь постарайтесь этого избегать...

Не вопрос. Но материться я буду тем более правила форума это позволяют. ))

Уравнение абсолютной прогрессии:
|0| Однажды, я осознал - мои знания ровны нолю...
|1| С тех пор, ноль - бесконечно, стремиться к бесконечности...

10

Re: AHK: Написал и отладил программу --X--> "Коллекция скриптов и идей."

<IvanSan> пишет:

А почему и тут и там слово код? Я то хотел ексешник.exe выложить.

Нет, «ексешник.exe» без кода не нужно. Лучше наоборот, код без «ексешника». Материться тоже не нужно. Хотя правила это впрямую не запрещают, тут это не принято. Вот пример, как выкладывать большую картинку:

http://i.imgur.com/rSpKakF.jpg
Код изображения:
http://i.imgur.com/PfsM3PE.jpg, где внутри тега img ссылка на маленькое изображение, внутри тега url — на большое.

<IvanSan> пишет:

может mail-облако не умеет делиться?

+ mail-облако умеет

https://cloclo15.cloud.mail.ru/weblink/thumb/xw1/d052967487e5/Small.jpg?x-email=dfiveg%40mail.ru

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

11

Re: AHK: Написал и отладил программу --X--> "Коллекция скриптов и идей."

mail-облако умеет

Тоже так думал, но нет. Картинка видна только авторизованному пользователю.

Я то хотел ексешник.exe выложить.

Так у нас тут как бэ - коды обсуждают.

Не вопрос. Но материться я буду  тем более правила форума это позволяют. ))

Спасибо за культурное предупреждение о своих намерениях. Мы, все, будем теперь осторожнее.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

12

Re: AHK: Написал и отладил программу --X--> "Коллекция скриптов и идей."

serzh82saratov пишет:

Тоже так думал, но нет. Картинка видна только авторизованному пользователю.

А так:

https://cloclo15.cloud.mail.ru/weblink/thumb/xw1/d052967487e5/Small.jpg?x-email=dfiveg%40mail.ru

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

13 (изменено: serzh82saratov, 2014-12-15 18:37:07)

Re: AHK: Написал и отладил программу --X--> "Коллекция скриптов и идей."

Off:
А так красота!
Что интересно тут:

https://cloclo13.cloud.mail.ru/weblink/thumb/xw1/a89f01979cf9/Big.jpg?x-email=dfiveg%40mail.ru

синяя часть вообще не нужна, красная это имя файла, чёрная - префикс.

Там кстати есть какая-то кнопка, чтобы получать такие ссылки?

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

14

Re: AHK: Написал и отладил программу --X--> "Коллекция скриптов и идей."

Я делал так: получил "публичную ссылку" через интерфейс сайта (кнопка «Получить ссылку») или через папку Облака на компьютере (контекстное меню «Облако@Mail.Ru: Скопировать публичную ссылку»), открыл её в браузере, далее правой кнопкой на изображении, меню «Копировать ссылку на изображение».

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

15

Re: AHK: Написал и отладил программу --X--> "Коллекция скриптов и идей."

Я себе добавил так:

Clipboard := "https://cloclo13.cloud.mail.ru/weblink/thumb/xw1" SubStr(Clipboard, 29)

при копировании публичной ссылки.
Интересно, возможно-ли получить прямую ссылку на файл, без загрузки странички маил ру? Что-то невыходит.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

16

Re: AHK: Написал и отладил программу --X--> "Коллекция скриптов и идей."

Нет, там "префикс" разный может быть.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

17

Re: AHK: Написал и отладил программу --X--> "Коллекция скриптов и идей."

Наверно, можно через какие-нибудь COM-объекты, поэкспериментируй, я сейчас не у компа.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

18

Re: AHK: Написал и отладил программу --X--> "Коллекция скриптов и идей."

serzh82saratov пишет:

Интересно, возможно-ли получить прямую ссылку на файл, без загрузки странички маил ру? Что-то невыходит.

У меня так вышло:

SourcePictureFile := "D:\Фото\Фотки\0wJit2tS5cw.jpg"                     ; путь к изображению
CloudFolder := "D:\Облако Mail.ru\Тест"                                  ; папка или подпапка облака, если не существует, то будет создана
CloudExePath := "C:\Users\User\AppData\Local\Mail.Ru\Cloud\Cloud.exe"    ; путь к Cloud.exe

MsgBox, % Url := GetMailRuPictureLink(SourcePictureFile, CloudFolder, CloudExePath)
Run, % Url
Return

GetMailRuPictureLink(filePath, MailRuFolder, CloudExe)
{
   if !Verify(filePath, CloudExe)
      Return
   
   if !FileExist(MailRuFolder)
      FileCreateDir, % MailRuFolder
   
   Process, Exist, Cloud.exe
   if !ErrorLevel {
      Run, % CloudExe
      Process, Wait, Cloud.exe
   }
   SplitPath, filePath, FileName
   
   if !FileExist(Dest := MailRuFolder . "\" FileName) {
      FileCopy, % filePath, % Dest
      if ErrorLevel {
         MsgBox, Не удалось скопировать файл %filePath% в папку %MailRuFolder%
         Return
      }
   }
   
   PrevClipboard := ClipboardAll, Clipboard := ""
   Loop 3
   {
      error := oVerb := ""
      try {
         for item in ComObjCreate("Shell.Application").Namespace(MailRuFolder).Items
            if (item.Path = Dest)
               for Verb in item.Verbs
                  if InStr(Verb.Name, "публич") && oVerb := Verb
                     break 2
            
         if !IsObject(oVerb) {
            MsgBox, Меню «Скопировать публичную ссылку» не найдено
            Return
         }
               
         Loop {
            Sleep 1000
            oVerb.DoIt
         } until Clipboard != "" || (A_Index = 20 && error := 1)
      }
      catch
         continue
      break
   }
   
   if error
      MsgBox, Не удалось получить ссылку
   else
   {
      WebRequest := ComObjCreate("WinHttp.WinHttpRequest.5.1")
      WebRequest.Open("GET", Clipboard)
      WebRequest.Send()
      Url := RegExReplace(WebRequest.ResponseText, "s).+""original"".+?""(.+?)"".*", "$1")
   }
   Clipboard := PrevClipboard
   Return Url
}

Verify(files*)
{
   for k, v in files
      if !FileExist(v) {
         MsgBox, Путь %v% не существует
         Return
      }
      
   if !Ping("cloud.mail.ru") {
      MsgBox, Нет связи с cloud.mail.ru`nПроверьте подключение к интернету!
      Return
   }
   
   Return 1
}

Ping(strHost)
{
   oWMI := ComObjGet("winmgmts:")
   Loop 2
      bRet :=  oWMI.Get("Win32_PingStatus.address='" . strHost . "'").StatusCode = 0
   until bRet
   return bRet
}
Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

19

Re: AHK: Написал и отладил программу --X--> "Коллекция скриптов и идей."

Прикольно. Но это опять-же только для картинок. Вообще с файлами разобратся бы ещё насчёт прямых ссылок.
Ну и вписать скрипт в контекстное меню проводника, типа скопировать файл в облако, получить прямую ссылку. Думаю, что вариант без Cloud.exe тоже возможен.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

20

Re: AHK: Написал и отладил программу --X--> "Коллекция скриптов и идей."

serzh82saratov пишет:

Думаю, что вариант без Cloud.exe тоже возможен.

В смысле, прямо на сайт отправлять? По-моему, заморочно очень.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

21

Re: AHK: Написал и отладил программу --X--> "Коллекция скриптов и идей."

Наверняка заморочно, это к слову пришлось. Кнопочку в проводнике хочется на прямые ссылки, файлообмены - зло.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

22

Re: AHK: Написал и отладил программу --X--> "Коллекция скриптов и идей."

А вот на файл прямую ссылку не получить, похоже.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

23

Re: AHK: Написал и отладил программу --X--> "Коллекция скриптов и идей."

А на Dropbox можно:

Прямая ссылка.txt

https://dl.dropboxusercontent.com/s/w0h7ak6thmai3db/2014.12.18-17.03.25.9.jpg

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

24

Re: AHK: Написал и отладил программу --X--> "Коллекция скриптов и идей."

Зато на mail.ru можно получить изображение в нескольких размерах:

SourcePictureFile := "D:\Фото\Фотки\0wJit2tS5cw.jpg"                     ; путь к изображению
CloudFolder := "D:\Облако Mail.ru\Тест"                                  ; папка или подпапка облака, если не существует, то будет создана
CloudExePath := "C:\Users\User\AppData\Local\Mail.Ru\Cloud\Cloud.exe"    ; путь к Cloud.exe

Urls := GetMailRuPictureLink(SourcePictureFile, CloudFolder, CloudExePath)

oPictures := []
Loop, parse, Urls, `n, `r
{
   item := Trim(A_LoopField)
   RegExMatch(item, """(.+?)"".+?""(.+?)""", found)
   oPictures[A_Index] := {size: found1, url: found2}
}

Gui, Margin, 15, 15
Loop % oPictures.MaxIndex()
{
   Gui, Add, Edit, x15 y+15 r1 w60, % oPictures[A_Index].size
   Gui, Add, Edit, x+5 yp r1 w400, % oPictures[A_Index].url
   Number1 := 1 + (A_Index - 1)*2, Number2 := Number1 + 1
   Gui, Add, Button, v%Number1% x+5 hp gShow, Show
   Gui, Add, Button, v%Number2% x+5 wp hp gCopy, Copy
}
Gui, Show
Return

Show:
Copy:
   EditNumber := A_GuiControl + mod(A_GuiControl, 2)
   GuiControlGet, url,, Edit%EditNumber%
   if (A_ThisLabel = "Show")
      Run, % url
   else
      Clipboard := url
   Return

GuiClose:
GuiEscape:
   ExitApp

GetMailRuPictureLink(filePath, MailRuFolder, CloudExe)
{
   if !Verify(filePath, CloudExe)
      Return
   
   if !FileExist(MailRuFolder)
      FileCreateDir, % MailRuFolder
   
   Process, Exist, Cloud.exe
   if !ErrorLevel {
      Run, % CloudExe
      Process, Wait, Cloud.exe
   }
   SplitPath, filePath, FileName
   
   if !FileExist(Dest := MailRuFolder . "\" FileName) {
      FileCopy, % filePath, % Dest
      if ErrorLevel {
         MsgBox, Не удалось скопировать файл %filePath% в папку %MailRuFolder%
         Return
      }
   }
   
   PrevClipboard := ClipboardAll, Clipboard := ""
   Loop 3
   {
      error := oVerb := ""
      try {
         for item in ComObjCreate("Shell.Application").Namespace(MailRuFolder).Items
            if (item.Path = Dest)
               for Verb in item.Verbs
                  if InStr(Verb.Name, "публич") && oVerb := Verb
                     break 2
            
         if !IsObject(oVerb) {
            MsgBox, Меню «Скопировать публичную ссылку» не найдено
            Return
         }
               
         Loop {
            Sleep 1000
            oVerb.DoIt
         } until Clipboard != "" || (A_Index = 20 && error := 1)
      }
      catch
         continue
      break
   }
   
   if error
      MsgBox, Не удалось получить ссылку
   else
   {
      WebRequest := ComObjCreate("WinHttp.WinHttpRequest.5.1")
      WebRequest.Open("GET", Clipboard)
      WebRequest.Send()
      html := WebRequest.ResponseText
      urls := RegExReplace(html, "s).+""thumbnails"": \{\s*(.+?)\s*}.+", "$1")
   }
   Clipboard := PrevClipboard
   Return urls
}

Verify(files*)
{
   for k, v in files
      if !FileExist(v) {
         MsgBox, Путь %v% не существует
         Return
      }
      
   if !Ping("cloud.mail.ru") {
      MsgBox, Нет связи с cloud.mail.ru`nПроверьте подключение к интернету!
      Return
   }
   
   Return 1
}

Ping(strHost)
{
   oWMI := ComObjGet("winmgmts:")
   Loop 2
      bRet :=  oWMI.Get("Win32_PingStatus.address='" . strHost . "'").StatusCode = 0
   until bRet
   return bRet
}

Пожалуй, добавлю в контекстное меню jpg и png.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

25

Re: AHK: Написал и отладил программу --X--> "Коллекция скриптов и идей."

Браво! Помнится, в "Коллекции скриптов и идей" уже есть скрипт для снятия скриншотов с (части) экрана, логично было бы объединить их в очень удобное средство для быстрой публикации снимков.

26

Re: AHK: Написал и отладил программу --X--> "Коллекция скриптов и идей."

Ну, объединять в Коллекции, наверно, не обязательно (достаточно ссылки на тот скрипт), а запостить можно (правда, с оговоркой, что там у них может что-то поменяться).

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

27

Re: AHK: Написал и отладил программу --X--> "Коллекция скриптов и идей."

Зато на mail.ru можно получить изображение в нескольких размерах:

Любопытно.

А на Dropbox можно:

Я не в теме, а Dropbox это тоже пожизненное хранение файлов?

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

28

Re: AHK: Написал и отладил программу --X--> "Коллекция скриптов и идей."

Ну да, только места меньше.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

29

Re: AHK: Написал и отладил программу --X--> "Коллекция скриптов и идей."

Я бегло поискал, так и не понял, у них сколько гигов? И этот сервер ведь где то за бугром, а то что-то после github`а и прочего, зарубежные ресурсы как то приходится рассматривать в последнюю очередь.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

30

Re: AHK: Написал и отладил программу --X--> "Коллекция скриптов и идей."

Бесплатно только 2 гигабайта. Считается одним из самых надёжных, да и всяких возможностей больше.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

31

Re: AHK: Написал и отладил программу --X--> "Коллекция скриптов и идей."

Тот же mail.ru предоставляет 100Гб бесплатно, Яндекс - 15Гб, вроде бы. У яндекса мне не нравится то, что при редактировании файла ссылка на него становится недействительной, приходится заново включать общий доступ. Dropbox ссылки не меняет при редактировании?

32

Re: AHK: Написал и отладил программу --X--> "Коллекция скриптов и идей."

Бесплатно только 2 гигабайта.

Ну это минусует плюсы. Не-прямая ссылка на файлы уже не кажется, чем-то плохим.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

33

Re: AHK: Написал и отладил программу --X--> "Коллекция скриптов и идей."

Можно расширить до 16Гб, по 500Мб за каждого приглашенного друга.

34

Re: AHK: Написал и отладил программу --X--> "Коллекция скриптов и идей."

Irbis пишет:

Тот же mail.ru предоставляет 100Гб бесплатно

Ну, некоторым повезло чуть больше.

Irbis пишет:

Dropbox ссылки не меняет при редактировании?

Нет, проверял.

serzh82saratov пишет:

Ну это минусует плюсы.

Почему, в основном приходится давать ссылки на небольшие файлы, тут на первом месте удобство работы с облаком.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

35

Re: AHK: Написал и отладил программу --X--> "Коллекция скриптов и идей."

Так мы сейчас удобства и хотим добится. А удалять в последствии совсем недавнюю мелочь, неудобно.
По мне, так на первом месте не парится, что ссылка которую дал месяц назад, уже мёртвая.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

36

Re: AHK: Написал и отладил программу --X--> "Коллекция скриптов и идей."

А с чего она мёртвая-то будет? Ты уже на форуме больше, чем на 2 гига ссылок надавал?

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

37

Re: AHK: Написал и отладил программу --X--> "Коллекция скриптов и идей."

Ну извините.

А с чего она мёртвая-то будет?

Ааа, файла то уже не будет.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

38

Re: AHK: Написал и отладил программу --X--> "Коллекция скриптов и идей."

Почему не будет? Когда 2 гига кончатся? Так, на самом деле, сколько бы пространства не давали, всё равно мало покажется. У меня на mail.ru из одного ТБ уже половина фильмами занята. Можно разные облака использовать для разных целей, приложение много места на диске не занимает.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

39

Re: AHK: Написал и отладил программу --X--> "Коллекция скриптов и идей."

2 больше чем 100? Или фиолетово?

Так, на самом деле, сколько бы пространства не давали, всё равно мало покажется

Фильмами можно лихо забить "не важно сколько терабайт".

Я же про скриншоты и скрипты. Картинки забьют память быстрее конечно, чем сама суть. Ну в целом аккаунта может хватить на такие цели, на 1 - 2 года. Аккаунтов, под разную медию можно создавать сколько душе угодно (видно у мэйл.мутников места, никто ни чем не ест).

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

40

Re: AHK: Написал и отладил программу --X--> "Коллекция скриптов и идей."

serzh82saratov пишет:

Ну в целом аккаунта может хватить на такие цели, на 1 - 2 года.

Можно посчитать. Скриншот ну самое большее может занимать 1 МБ. Скрипты тогда можно в расчёт не брать. 2 ГБ — это 2048 скриншотов по одному МБ. Чтобы потратить это пространство за два года, нужно в день постить примерно по 3 таких скриншота, и все должны быть разные. А теперь прикинь, на какой объём данных реально ты даёшь ссылки.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

41 (изменено: teadrinker, 2014-12-19 23:23:58)

Re: AHK: Написал и отладил программу --X--> "Коллекция скриптов и идей."

Для публикации изображений с облака Mail.Ru такой вариант:

SourcePictureFile := "D:\Screenshots\2014.12.18-17.03.25.9.jpg"   ; указать путь к файлу, если его не будет в параметре
if (SourcePictureFile = "")
   SourcePictureFile = %1%

if !IsObject(oPictures := GetMailRuPictureLinks(SourcePictureFile))
{
   MsgBox, Не удалось получить ссылки
   ExitApp
}

Gui, Margin, 15, 15
Gui, Font,, Tahoma
Loop % oPictures.MaxIndex()
{
   Gui, +LastFound
   size := oPictures[A_Index].size
   SizeStr .= (A_Index = 1 ? "" : "|") . (A_Index = 4 ? "|" : "") . size
   Gui, Add, Edit, x15 y+15 r1 w65, % size
   Gui, Add, Edit, x+5 yp r1 w400, % oPictures[A_Index].url
   Number1 := 1 + (A_Index - 1)*2, Number2 := Number1 + 1
   Gui, Add, Button, v%Number1% x+5 hp gShow, Show
   Gui, Add, Button, v%Number2% x+5 wp hp gCopy, Copy
}
GuiControlGet, Pos, Pos, % Number2

Gui, Add, Checkbox, vCheck gCheck x15 y+25, Использовать превью
Gui, Add, DDL, vDDL x+10 yp-3 w80 Disabled, % SizeStr  ; 
Gui, Add, Text, vText x+5 yp+3 Disabled, Размер превью
Gui, Add, Button, % "vBBCode gCopyBBCode x" PosX + PosW - 150 " yp-3 w150 Default", Копировать BBCode
GuiControl, Focus, BBCode

if hIcon := ExtractIcon(GetCloudExe(), 0)
   Loop 2
      PostMessage, WM_SETICON := 0x80, A_Index - 1, hIcon
Gui, Show,, Прямые ссылки
Return

Show:
Copy:
   EditNumber := A_GuiControl + mod(A_GuiControl, 2)
   GuiControlGet, url,, Edit%EditNumber%
   if (A_ThisLabel = "Show")
      Run, % url
   else
      Clipboard := url
   Return
   
Check:
   GuiControlGet, Check
   Loop 2
      GuiControl, % (Check ? "Enable" : "Disable"), % A_Index = 1 ? "DDL" : "Text"
   Return
   
CopyBBCode:
   GuiControlGet, Check
   for k, v in oPictures
      if (v.size = "original" && OriginalSizeUrl := v.url)
         break
   
   if !Check
      Clipboard := "[img]" . OriginalSizeUrl . "[/img]"
   else {
      GuiControlGet, DDL
      for k, v in oPictures
         if (v.size = DDL)
            break
      Clipboard := "[url=" . OriginalSizeUrl . "][img]" . v.url . "[/img][/url]"
   }
   ToolTip, BBCode скопирован в буфер обмена
   SetTimer, ToolTipDel, -1000
   Return
   
ToolTipDel:
   ToolTip
   Return

GuiClose:
GuiEscape:
   (hIcon && DllCall("DestroyIcon", Ptr, hIcon))
   ExitApp
   
GetMailRuPictureLinks(filePath)
{
   static i
   if !Verify(filePath)
      Return
   
   Process, Exist, Cloud.exe
   if !ErrorLevel {
      if !(CloudExe := GetCloudExe()) {
         MsgBox, Не удалось определить путь к Cloud.exe
         Return
      }
      Run, % CloudExe
      Process, Wait, Cloud.exe
   }
   
   if !(MailRuFolder := GetMailRuFolder()) {
      MsgBox, Не удалось определить путь к папке облака
      Return
   }
   
   SplitPath, filePath, FileName
   if FileExist(Dest := MailRuFolder . "\" FileName)  {
      MsgBox, 4,, Файл %Dest% уже существует.`nПереписать?
      IfMsgBox, No
         NoOverwrite := 1
   }
   
   if !NoOverwrite  {
      FileCopy, % filePath, % Dest, 1
      if ErrorLevel {
         MsgBox, Не удалось скопировать файл %filePath% в папку %MailRuFolder%
         Return
      }
   }
   
   PrevClipboard := ClipboardAll, Clipboard := "", i := 0
   SetTimer, LoadFile, 500
   link := GetPublicLink(MailRuFolder, Dest), Clipboard := PrevClipboard
   SetTimer, LoadFile, Off
   TrayTip
   if !InStr(link, "http") = 1  {
      MsgBox, Не удалось получить публичную ссылку
      Return
   }
   
   if !(html := GetHtml(link)) {
      MsgBox, Не удалось получить код страницы с файлом
      Return
   }
   Return ExtractData(html)
   
LoadFile:
   m := mod(++i, 4)
   TrayTip,, % "Идёт загрузка файла" . (m = 1 ? ".   " : m = 2 ? "..  " : m = 3 ? "... " : "....")
   Return
}

Verify(filePath)
{
   if !FileExist(filePath) {
      MsgBox, Файл %filePath% не найден
      Return
   }
   if !Ping("cloud.mail.ru") {
      MsgBox, Нет связи с cloud.mail.ru`nПроверьте подключение к интернету!
      Return
   }
   Return 1
}
   
Ping(strHost)
{
   oWMI := ComObjGet("winmgmts:")
   Loop 2
      bRet :=  oWMI.Get("Win32_PingStatus.address='" . strHost . "'").StatusCode = 0
   until bRet
   return bRet
}

GetCloudExe()
{
   IniRead, CloudExe, % A_ScriptDir "\GetImageLink.ini", Paths, CloudExePath, % " "
   if CloudExe
      Return CloudExe
   
   SetBatchLines, -1
   Loop 2   {
      if (A_Index = 1 && !A_Is64bitOS)
         continue

      SubKey := "SOFTWARE" . (A_Index = 1 ? "\Wow6432Node" : "") . "\Microsoft\Windows\CurrentVersion\Uninstall"
      Loop, HKLM, % SubKey, 1, 1
      {
         if (A_LoopRegName = "DisplayName")   {
            RegRead, DisplayName
            if (DisplayName = "Mail.Ru Cloud")   {
               RegRead, Location, HKLM, % A_LoopRegSubKey, InstallLocation
               break 2
            }
         }
      }
   }
   if FileExist(CloudExe := RTrim(Location, "\") . "\Cloud.exe") {
      IniWrite, % CloudExe, % A_ScriptDir "\GetImageLink.ini", Paths, CloudExePath
      Return CloudExe
   }
   
   FileSelectFile, CloudExe, 1, ::{20d04fe0-3aea-1069-a2d8-08002b30309d}, Укажите файл Cloud.exe`, путь будет сохранён:, Executable (*.exe)
   if !CloudExe
      Return
   
   IniWrite, % CloudExe, % A_ScriptDir "\GetImageLink.ini", Paths, CloudExePath
   Return CloudExe
}

GetMailRuFolder()
{
   IniRead, CloudFolder, % A_ScriptDir "\GetImageLink.ini", Paths, CloudFolder, % " "
   if !FileExist(CloudFolder)
      RegRead, CloudFolder, HKCU, Software\Mail.Ru\Mail.Ru_Cloud, folder
   
   FileSelectFolder, CloudFolder, *%CloudFolder%, 1, Укажите папку или подпапку Облака для копирования файла:
   if !CloudFolder
      Return
   
   IniWrite, % CloudFolder, % A_ScriptDir "\GetImageLink.ini", Paths, CloudFolder
   Return CloudFolder
}

GetPublicLink(MailRuFolder, Dest)
{
   Loop 3  {
      error := oVerb := ""
      try {
         for item in ComObjCreate("Shell.Application").Namespace(MailRuFolder).Items
            if (item.Path = Dest)
               for Verb in item.Verbs
                  if InStr(Verb.Name, "публич") && oVerb := Verb
                     break 2
            
         if !IsObject(oVerb) {
            MsgBox, Меню «Скопировать публичную ссылку» не найдено
            Return
         }
         
         Loop {
            Loop 30  {
               Sleep 1000
               Clipboard := ""
               oVerb.DoIt
            } until Clipboard != ""
            
            if (Clipboard = "")  {
               MsgBox, 4,, Пока не удалось скопировать публичную ссылку.`nВозможно`, файл ещё не загрузился на Олако.`nПодождать?
               IfMsgBox, No
                  break
            }
         } until Clipboard != ""
      }
      catch
         continue
      break
   }
   Return Clipboard
}

GetHtml(link)
{
   Loop 3 {
      Sleep, 100
      try     {
         WebRequest := ComObjCreate("WinHttp.WinHttpRequest.5.1")
         WebRequest.Open("GET", link)
         WebRequest.Send()
         html := WebRequest.ResponseText
      }
      catch
         continue
   } until html
   Return html
}

ExtractData(html)
{
   urls := RegExReplace(html, "s).+""thumbnails"": \{\s*(.+?)\s*}.+", "$1")
   oPictures := []
   Loop, parse, Urls, `n, `r
   {
      RegExMatch(Trim(A_LoopField), "U)""(\d+x\d+|original)"".+""(http.+)""", found)
      if !(found1 && found2)  {
         MsgBox, Mail.ru изменили структуру страницы
         Return
      }
      oPictures[A_Index] := {size: found1, url: found2}
   }
   Return oPictures
}

ExtractIcon(sFile, idx)
{
   Return DllCall("Shell32\ExtractIcon", Ptr, DllCall("GetModuleHandle", UInt, 0, Ptr), Str, sFile, UInt, idx, Ptr)
}

Во время работы скрипта появляются всякие сообщения от иконки Cloud Mail.Ru, но на них можно не обращать внимания.
Скрипт написан с целью добавления в контекстное меню файлов с изображениями, но можно использовать и так.
Может, по интерфейсу будут какие-нибудь предложения?

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

42

Re: AHK: Написал и отладил программу --X--> "Коллекция скриптов и идей."

Irbis пишет:

Браво! Помнится, в "Коллекции скриптов и идей" уже есть скрипт для снятия скриншотов с (части) экрана, логично было бы объединить их в очень удобное средство для быстрой публикации снимков.

SilentScreenshotter. Работает с imgur. Поддерживает drag'n'drop файлов картинок на скрипт для их заливки на сервер.