Добрый день %habr%
Работая в JIRA/Redmine/basecamp/Wiki есть, ставший привычным, способ вставки изображения: !http://blah.com/img.png! Но бесплатные сервисы, в той или иной степени, не дают возможности работать эффективно.
Clip2net, например, не дает прямой ссылки на файл, а на выкорчевывание ее из страницы уходит время, если в таске 20 скринов и для каждого нужен URL…
Gyazo на бесплатном аккаунте ограничен по времени использования, URL приходится модифицировать дописывая ".png" в конце, картинки имеют ограниченный срок хранения, а реклама gyazo за которой уже сложно найти сам скрин — это нЕчто.
На мысль использовать Dropbox натолкнул этот комментарий. Идея мне показалось интересной и я засел за свой велосипед. DIY реализация «сервиса» и клиентской части, со своими плюсами и минусами, под катом.
Настройка осуществляется через правку config.ini в каталоге с программой:
config.ini
Собственно, скрипт AutoIT:
BoxShoot.au3
После запуска, программа висит в трее, ждет нажатия PrintScreen.
Занимает в памяти 1.5мб
Авто запуск — в ручном режиме, то-есть через создания ярлычка в «Пуск — Автозагрузка»
Файлов: ~400
Объем: ~17mb
Пользуюсь с 31 октября
Меня устраивает почти полностью, ссылки выглядят не очень красиво, подумываю прикрутить URL shortener.
Используя scrot, xclip и немного Bash скриптинга — можно легко получить аналог для любимого *nix:
Осталось XBindKeys прикрутить.
Исходный код и готовые exe доступны на GitHub
DropBox ID изменен в целях безопасности, приношу свои извинения бедолаге, чей ID фигурирует в скриптах.
Работая в JIRA/Redmine/basecamp/Wiki есть, ставший привычным, способ вставки изображения: !http://blah.com/img.png! Но бесплатные сервисы, в той или иной степени, не дают возможности работать эффективно.
Clip2net, например, не дает прямой ссылки на файл, а на выкорчевывание ее из страницы уходит время, если в таске 20 скринов и для каждого нужен URL…
Gyazo на бесплатном аккаунте ограничен по времени использования, URL приходится модифицировать дописывая ".png" в конце, картинки имеют ограниченный срок хранения, а реклама gyazo за которой уже сложно найти сам скрин — это нЕчто.
На мысль использовать Dropbox натолкнул этот комментарий. Идея мне показалось интересной и я засел за свой велосипед. DIY реализация «сервиса» и клиентской части, со своими плюсами и минусами, под катом.
Требования
- Запуск по горячей клавише
- Выбор произвольной области
- Имя файла (подобно gyazo) в виде MD5 хеша
- Прямая ссылка на файл в буфере обмена
- Формат изображения PNG
- Возможность изменять настройки
Логика
- Системный hook для горячей клавиши
- Запустить приложение для снятия скриншота
- Отметить область
- Получить MD5 hash текущего timestamp
- Сохранить файл в публичную папку Dropbox
- Положить ссылку на файл в буфер обмена
Инструменты
- Dropbox — известный сервис хранения и синхронизации файлов
- autoit — инструмент автоматизации выполнения задач в Windows
- MiniCap — приложение для создания скриншотов (понимает командную строку)
Настройка осуществляется через правку config.ini в каталоге с программой:
config.ini
[MAIN]
; куда сохранять файлы скринов
DBOX_DIR = "C:\Dropbox\Public\pic\"
; путь до приложения создающего скриншоты
CAP = "C:\Program Files\MiniCap\MiniCap.exe"
; часть внешнй ссылки (можно получить на странице Dropbox)
; пример http://dl.dropbox.com/u/2058666/pic/1c40b047e22875c8396b029b00ea9a14.png
DBOX_URL = "http://dl.dropbox.com/u/2058666/pic/"
; hotkey по которому делаем скриншот
shoot_key = "{PRINTSCREEN}"
Собственно, скрипт AutoIT:
BoxShoot.au3
#include <Crypt.au3>
$hotkey = IniRead("config.ini", "MAIN", "shoot_key", "NotFound")
$DBOX_DIR = IniRead("config.ini", "MAIN", "DBOX_DIR", "NotFound")
$DBOX_URL = IniRead("config.ini", "MAIN", "DBOX_URL", "NotFound")
$CAP = IniRead("config.ini", "MAIN", "CAP", "NotFound")
HotKeySet ( $hotkey, "SHOOT" )
TraySetToolTip("BoxShoot")
Opt("TrayMenuMode", 1)
$exititem = TrayCreateItem("Exit")
TraySetState()
While 1
$msg = TrayGetMsg()
Select
Case $msg = 0
ContinueLoop
Case $msg = $exititem
CLOSE()
EndSelect
WEnd
Func SHOOT()
$CurTime = @YEAR & "_" & @MON & "_" & @MDAY & "_" & @HOUR & "_" & @MIN & "_" & @SEC
$hash = _Crypt_HashData($CurTime, $CALG_MD5)
$result = StringTrimLeft($hash, 2)
$fname = $result & ".png"
$fname = StringLower($fname)
Run($CAP & " -captureregselect -exit -compress 7 -bordershadow -noaero -save " & $DBOX_DIR & $fname , "", @SW_MINIMIZE)
ClipPut($DBOX_URL & $fname)
EndFunc
Func CLOSE()
Exit 0
EndFunc
После запуска, программа висит в трее, ждет нажатия PrintScreen.
Занимает в памяти 1.5мб
Авто запуск — в ручном режиме, то-есть через создания ярлычка в «Пуск — Автозагрузка»
Статистика
Файлов: ~400
Объем: ~17mb
Пользуюсь с 31 октября
Меня устраивает почти полностью, ссылки выглядят не очень красиво, подумываю прикрутить URL shortener.
Bonus
Используя scrot, xclip и немного Bash скриптинга — можно легко получить аналог для любимого *nix:
#!/bin/bash
F_NAME=`date +%s | md5sum | awk '{ print $1}'`'.png'
DBOX_DIR='/home/username/Dropbox/Public/pic/'
DBOX_URL='http://dl.dropbox.com/u/2058666/pic/'
S_NAME=$DBOX_DIR$F_NAME
scrot -s -q 0 $S_NAME
echo -n $DBOX_URL$F_NAME | xclip
Осталось XBindKeys прикрутить.
Исходный код и готовые exe доступны на GitHub
PS
DropBox ID изменен в целях безопасности, приношу свои извинения бедолаге, чей ID фигурирует в скриптах.