Pull to refresh

CloudShot — скриншоттер для DropBox

Reading time 3 min
Views 4.5K
image
Долго думал как назвать этот пост в итоге назвал как пришлось.

О чем же я хочу рассказать


Сей пост о программе.

Очень маленькой программе, которую я написал в первую очередь для себя.
О маленьком скриншотере, умеющем интегрировать с Dropbox.
Но я не хочу ничего пиарить, скриншоттеров полно, полно скриншоттеров намного лучше моего.
Цель этого поста, разобрать ошибки.


Об идее


Программист должен решать проблемы не только общественные, но и свои.

На работе мы постоянно пользуемся замечательной программой для снятия скриншотов gyazo.
Наша версия gyazo заливает скриншоты на внутренний сервер компании и далее я уже никак не могу ими управлять.
Мне же хотелось иметь возможность управлять временем жизни скриншотов и при этом так же просто шарить их по url как это умеет gyazo, а т.к. я активно использую dropbox с ним и решено было дружить.

Ошибка номер 1: Невнимательность


Cкриншоттер будет заливать скрины прямо на сервер дропбокса.

Удобно, т.к. я могу установить его на комп, на котором не установлен dropbox client, при этом все скрины будут попадать в нужную папку в dropbox'е.
Скачал DropNet и через день был готов первый вариант скриншоттера. Точная копия Gyazo, но интегрированая в Dropbox.
Все бы ничего, если бы не вот это ограничение dropbox'а.
image
Программа прекрасно работала с AppKey для разработчиков, но не прошла аппрува =(

Ошибка номер 2: Усложнение


Я понял, что проблему с dropbox надо решать с другого конца.

Тогда я убрал форму авторизации и сделал в настройках поле для ввода userId пользователя.
Пользователь должен был скопировать публичный линк и вставить его в это поле.
Я выдирал из линка userId и мог формировать public link.
Решение корявое, сложное и отталкивающее пользователей своей кривизной.

Ошибка номер 3: Зависимость от стереотипов


image
Хочу скриншотить регион, окно или весь экран.

Изучив разные сриншотеры, решил сделать как везде, три хоткея и окошко-хелпер с кнопками для каждого вида скриншота.

Решение дурацкое. Нужно лишний раз подумать какой тип скриншота тебе нужен и выбрать один из вариантов.

Еще одна ошибка


Хочу уметь делать скриншоты меню и тултипов.

Большинство скриншотеров работают по такому принципу:
  1. жмем хоткей
  2. выбираем что сфотографировать
  3. фотографируем

Проблема в том, что на этапе номер 2 у нас отваливает возможность отскриншотить меню и тултип, т.к. они пропадут из-за потери фокуса =(

Я решил ввести задержку в секундах, до того момента как произойдет снимок экрана. Т.е. пользователь должен нажать что-то типа кнопки «Отложенный скриншот» и за короткое время привести рабочую область в нужное ему состояние.
Решение неверное. А вдруг пользователь не успеет? А вдруг сделает все очень быстро и ем придется ждать пока программа сделает скриншот? Да, это всего-лишь несколько секунд, но ведь будет раздражать если надо сфоткать подряд несколько тултипов.

Ошибка N: нетерпеливость


Хочу чтобы публичный скриншот автоматом открывался в браузере

Ошибка заключалась в том, что после сохранения я сразу открывал url вбраузере и пользователь лицезрел Ошибку 404, т.к. dropbox client еще не успевал закачать файл на сервер.

Я уже устал писать об ошибках


Хочу рассказать о найденных решениях.

  • Интеграция с Dropbox только на компьютерах с установленным dropbox client. По сути я записываю файл на диск в MyDropbox/Public/ и жду когда он загрузится на сервер
  • Не надо требовать UserId от пользователя. Его можно получить через WinAPI, вызвав copy public link в контекстном меню публичного файла
  • Нет окна-хелпера с тремя кнопками. Один хоткей. Можно сфотографировать область экрана, растянув регион, или сфотографировать окно, кликнув в него.
  • Скриншот делается при нажатии хоткея. Все меню и тултипы, присутствовавшие в этот момент на экране, фотографируются. Далее вам нужно выбрать требуемую область экрана или кликнуть в нужное окно.
  • После сохранения срикншота на диск, жду его загрузки на сервер и только потом открываю в браузере.


В программе есть еще несколько удобностей, типа просмотра списка недавно сделанных скриншотов и возможность поменять базовые настройки.

Тем кто дочитал


Проект решил делать открытым, т.ч. все могут узреть мои косяки в коде =)
Ссылка на страничку проекта на codeplex
На данный момент распространяется в виде ClickOnce приложения, но могу сделать и инсталлер.

P.S.
Большое спасибо моим коллегам за интересные идеи и помощь в тестировании.
Наверняка в CloudShot есть ошибки, не пинайте за них сильно, а лучше отпишите и я их по мере возможности исправлю ;)
Tags:
Hubs:
0
Comments 30
Comments Comments 30

Articles