Gyazo на собственном сервере

    Привет, хабр!
    image
    Я и мои друзья давно пользуются программой Gyazo.

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

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

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

    Поскольку gyazo является Open Source проектом, я решил сделать версию «для себя» и без рекламы.
    Подробнее под катом.

    1. Настройка сервера для изображений.


    Нам нужен любой веб-сервер с поддержкой PHP. Оригинальный серверный скрипт является CGI, я решил использовать PHP.

    Сам скрипт находится здесь:

    <?php
    $uri = "http://vps.yurganov.ru/gyazo/";
    if(isset($_FILES['imagedata']['name'])) {
            $path = 'i/' . substr(md5(time()), -28) . '.png';
        if(move_uploaded_file($_FILES['imagedata']['tmp_name'], $path)) {
            echo $uri , $path;
        } else{
            echo $uri;
        }
    } else {
        echo $uri;
    } ?>


    Как видно, ничего сверхъестественного.

    При попытке отправить файл программой, скрипт переименовывает его в набор символов (уникальность — md5 + time()), а также возвращает ссылку на скриншот.

    Я решил складывать изображения не в туже папку, а в папку i/, которой назначил права 777.

    2. Подготовка клиентской части.


    2.1 Windows-приложение


    Приложение для Windows написано на C++, указание на то, какой сервер изображений использовать, прописано прямо в коде программы. Чтобы каждый раз не перекомпилировать, я решил взять за основу версию gyazowin от paulirish, в которой настройки берутся из ini-файла.

    ; Set up gyazo on your own server using 
    ;   ruby: http://github.com/gyazo/Gyazo/tree/master/Server/ 
    ;   php : http://benalman.com/news/2009/10/gyazo-on-your-own-server/
    
    [Configuration]
    SERVER = gyazo.com
    PATH = /upload.cgi
    

    Поскольку сразу его код работать не захотел, я его чуть-чуть подправил.

    Скачать уже скомпилированную версию с ini-файлом можно тут.

    Для работы с вашим сервером, в конфиге надо указать:

    [Configuration]
    SERVER = [ваш домен] - просто с ip-адресом у меня не заработало
    PATH = /upload.php - путь до вашего серверного скрипта
    

    Можно также взять оригинальное приложение, и подправить его под себя. (в файле gyazowin.cpp найти строчки SERVER и PATH и заменить как указано выше)

    2.2 Mac OS приложение


    С Mac версией всё проще — там уже используется внешний файл, где и храниться путь к серверу.

    Необходимо установить Gyazo for Mac с официального сайта, затем отредактировать файл script, который находится в /Applications/Gyazo.app/Contents/Resources/ следующим образом:
    HOST = 'your domain'
    CGI = '/upload.php' - путь до вашего скрипта
    

    После чего продолжить работу как и обычно.

    2.3 Linux — приложение


    Инструкция по установке Gyazo for Linux.

    Путь к серверу, соответственно, тоже нужно поменять в ruby-скрипте.

    И что, ты что нибудь выиграл?


    image Мгновенная скорость работы
    image Отсутствие рекламы
    image Все созданные скриншоты у тебя «под боком»
    image Надо думать о свободном месте на сервере (за год я использовал около 200Мб, что вобщем не много для единичного использования)
    image Ваши друзья вряд ли захотят пользоваться вашим решением, поскольку боятся, что у вас будет доступ к их изображениям

    Пример


    Оценить скорость работы можно на моём сервере (надеюсь, он не загнется под хабраэффектом):
    http://vps.yurganov.ru/gyazo/
    Внимание: все созданные скриншоты удаляются по cron раз в 5 минут.

    P.S. Галерея файлов


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

    Скачать: http://vps.yurganov.ru/gyazo/distr/gallery.zip.

    (Инструкция по установке внутри архива)
    Share post
    AdBlock has stolen the banner, but banners are not teeth — they will be back

    More
    Ads

    Comments 88

      +5
      Зачем парится с хранением инфы на чужих серверах?

      Я использую программу shutter (в репах убунты есть), она как раз делает отличные скрины и позволяет сохранять их на свой ftp, ах да, чуть не забыл. Ссылку в буфер тоже пишет.
        +4
        Верно.
        Для меня плюсы гиазы — многоплатформенность, простота использования, привычка.

        Конечно, есть куча программ, возможно, в чем то удобнее, чем гиаза — предварительным редактированием, например.
        Но гиаза для меня удобна именна тем, что позволяет сделать скриншот в два клика.
          +1
          Попробуйте petromi.com
          Те же два клика + простенький редактор, если ctrl зажать.
            +3
            Петрович, слушай, сделай версию под linux. Вот от гязо возми руби скрипт, и подправь под свой серис. :)
          0
          Да, шаттер крутая штука, судя по всему, но в зависимостях у него адЪ: один p5-Gnome2 столько за собой тянет, что невольно хочется сказать, «ребята, мне бы просто скриншот снять, я не хочу гном...»
            0
            Под Windows такое есть?
            Очень выручите.
            0
            Сам активно пользуюсь этим сервисом. Порадовался клиенту для линукса.
              0
              реклама не достала?
                +1
                Ужасно просто. А как всё хорошо начиналось. Не нравилось лишь то, что нельзя удалять лишние картинки, это же лучше для них — меньше файлов, больше свободного места. А то заходишь, хочешь удалить неудачные скрины из чувства чистоплотности, а тут такое.
                А ещё этот переход на платную основу ими так позиционируется, что я пару раз принимал его за апгрейд клиентской части (подозрительно ровный номер версия 1.0.0.0).
                А также пользуюсь Picpick и Dropbox, но это уже для более ответственных скринов.
                  0
                  а я даже что-то важное все равно делаю gyazo, а потом сохраняю в более надежное место.
                    +3
                    Ещё есть хорошая вещь pix.am
                    Скрин в три клика. ctrl+win+r, сразу есть редактор изображения. Можно подрезать, написать комментарии и одним кликом послать на сервак.
                    С сайта можно удалять ненужные снимки. Очень удобный сервис!
                    image
                      0
                      То же самое умеют тулзы под imgur и рисовать и хоткеи и заливка на сервер. К тому же место казённое, а не своё. Правда с удалением проблемка.
                        0
                        Да вы понимаете, что она всегда запущена и висит в памяти?
                        Вопрос — нахера, если можно просто из меню Пуск / Start / etc тупо ткнуть иконку гязы, выделить область и ждать. Всё.
                          0
                          image
                          По-моему, она совершенно не ощущается…
                            0
                            а еще можно повесить ее на шордкат :)
                    0
                    Давно хотел запилить свой сервер под гязо, но всё как-то руки не доходили. Спасибо за статью.
                      –4
                      Оспаде…
                      Аналог Gyazo (судя по описанию) можно написать на коленке: bash + scrot + curl. Хотя думаю таких скриптиков уже много (например в AUR)
                        0
                        А что там надо подправить? (в версии под Windows)
                          +1
                          надо открыть solution, и в файле gyazowin.cpp найти строчки SERVER и PATH и заменить как указано выше и скомпилировать
                            0
                            Прости, я просто параноик ;) Пытаюсь gyazowin от paulirish скомпилить и не работает. А твоя работает. Ты чего-то ещё там поменял?
                        +3
                        Действительно, gyazo уже не торт. Вместо неё использую скрипт, выкладывающий скрины либо на собственный сервер через ssh, либо в публичную папку дропбокса: pastebin.com/eZpJfxbQ
                        Конечно, такой вариант требует авторизации по публичным ключам, что не так универсально, как Ваш вариант.
                          +1
                          кстати, гиаза при отправке изображения также передает некий ID — так что можно запретить всем, кроме себя пользоваться вашим сервером в принципе.
                          +2
                          jshot.info/, open source, кроссплатформенный, даёт прямую ссылку на дропбокс, пикасу, собственный FTP-сервер и другое.
                            0
                            Хороший инструмент нужно будет попробовать. Но у gyazo это минимум-миниморум и по этому критерию он выигрывает у остальных.
                              +1
                              zscreen еще есть — code.google.com/p/zscreen/
                                0
                                спасибо!
                                  0
                                  К сожалению, он не кросс-платформенный, хоть и открытый.
                                +1
                                Печально то, что и в платной версии Гьязо есть эта реклама.
                                Пожалел, что когда-то купил подписку…
                                А еще появилась защита от хотлинка и много чего еще… в общем, не респект им.
                                  +1
                                  В общем, буду пробовать вашу идею :)
                                    0
                                    буду рад помочь, если что :)
                                  +1
                                  А в вашем скрипте $uri объявлена для того чтоб потом назло юзать константу в качестве пути? :)
                                    0
                                    Как только 6 символов из md5 могут обеспечить уникальность? И что делает time(). $i++, если $i нигде не определена?
                                      0
                                      поправил
                                      0
                                      Зачем это под маком юзать, если есть cloud.app?
                                        0
                                        cloud тоже не совсем удобен, он в буфер обмена копирует не ссылку до картинки, а ссылку на страницу. Пользовался, а потом перешел на бесплатную версию Skitch — там возможностей настройки больше намного.
                                        +2
                                        Кстати, если перетянуть JPG или другую картинку на иконку gyazo, то она зальет ее полностью.
                                          +1
                                          Есть довольно хорошее расширение под Google Chrome
                                          https://chrome.google.com/webstore/detail/mdddabjhelpilpnpgondfmehhcplpiin
                                          Позволяет пост-редактирование и незамысловатый дальнейший шаринг через Gmail, Imgur, Minus (etc) и соц сервисы Facebook и Twitter.
                                          Автор, вроде как, довольно вменяемый человек и пишет расширения не ради популярности и заработка.
                                            +1
                                            С CV можно понять, что всё-таки у чувака разработка расширений — и есть постоянная работа:
                                            Work Experience
                                            Sept. 2010 to present: JasonSavard.com (Montreal, QC)
                                            Developing and marketing plugins, extensions and apps for Firefox and Google Chrome browsers

                                            Но делает он свою работу добротно :)
                                            +1
                                            я для аналогичных целей использую pix.am, огорчает только то что под линь нет такогоже клиента как под виндой.
                                              0
                                              Под Windows есть Lightshot, который гораздо лучше и функциональнее, на мой взгляд.
                                              lightshot.skillbrains.com/
                                                0
                                                Остается только добавить, что Lightshot есть как расширение под ФФ, что очень удобно для разработчика (большая часть скринов — это браузер) хотя данный эддон может делать любой скриншот, а не только окно браузера. Но в топике соль в том, чтобы юзать собственное хранилище скринов: мало ли, завтра вчерашний скриншот вдруг сделается государственной тайной :)
                                                –9
                                                FluppyApp и нахер вашу разработку. Это чисто моё мнение и оно может не совпадать со мнением топик-автора и хабрахабра.
                                                  +2
                                                  Так ведь можно сказать про что угодно, не? Нахер тогда вообще, спрашивается, о чем-то кому-то рассказывать?
                                                    0
                                                    Не про что угодно. Просто особого смысла в велосипедах не вижу, только если велосипеды не делаются при изучении какого-то языка/технологии. Тогда вполне правильно делать свои велосипеды.
                                                      +1
                                                      Без аргументов, в духе вашего комментария «я так считаю и точка, похер что думают другие» — именно про что угодно. И в топике не велосипед, а одна из программ. Наличие у нее аналогов, не делает ее велосипедом. Я вот себе поставил и пользуюсь. А ваш FluppyApp — вообще не в тему: речь идет о тулзе, которая размещает скрины где я их могу контролировать, а не куда-то на неизвестный мне сервер. В этом классе полно программ, уверен, что FluppyApp будет на их фоне не меньшим велосипедом
                                                        –3
                                                        ну я и пояснил вторым комментом почему я так считаю. а хотите полного контроля — пишите своё полностью безо всякого особо api, чисто под себя.
                                                          +2
                                                          Ваш совет — как раз делать велосипед, но вот я реально против них, поэтому воспользуюсь готовым решением. Под контролем подразумевалась не паранойя, а возможность удаления скринов в любой момент. Но даже если говорить о паранойе — то программа с открытым исходником. Если есть опасения — можно собрать самому
                                                  0
                                                  Мы в компании для внутреннего использования сделали сервис thinkwith.me. Позволяет делать скрины расширением в хроме, но самой важной фишкой — сразу импортировать их тикетом в unfuddle или basecamp. Сильно экономит время при постановке задач. До сх пор в глубокой альфе и только под хром, но мы внутри компании юзаем. В планах — расширения под другие браузеры и добавление других популярных трекеров, редизайн сайта и выход в паблик(надеюсь:).
                                                    –2
                                                    Evernote. Скриншот делает, область выделяет, сохраняет в блокнотик и в интернет, дает ссылку. Жаль, ссылку дает не на саму картинку, а на заметку. Но впринципе терпимо.
                                                      +2
                                                      PrintScreen. Скриншот делает, область можно ограничить при желании активным окном, в буфер сохраняет. Жаль, на сервер не заливает, а для использования нужен какой-то графический редактор. Но в принципе терпимо.
                                                      –1
                                                      В ~/bin/ делаем скриптик

                                                      #!/bin/bash

                                                      IMAGE=$(mktemp --suffix=.png); scrot -bs -q 40 "$IMAGE" && curl -s -F file1=@"$IMAGE" ompldr.org/upload | grep -o -m 1 "http://ompldr.org/v[A-Za-z0-9+\/]*" | xclip


                                                      Назначаем его запуск на любимую кнопку в любимом оконном менеджере. Жмём кнопку, выделяем область, оно слилось на сайт, в буфере обмена линк.

                                                      Вот, например, World of Warcraft в wine: warlock.

                                                      Извините, что не стал писать отдельный пост на хабре.
                                                        –4
                                                        > Вот, например, World of Warcraft в wine: warlock.
                                                        Как-то не очень похоже.
                                                        0
                                                        Спасибо большое. Раньше пользовался Lightshot. Там хотя и функционал (который правда используется раз в полгода), но и реклама.
                                                        Никто, кстати, сейчас не мешает посидеть часок и заверстать страничку где будет не только скрин, а еще и ссылка на блог, к примеру.
                                                          0
                                                          Кстати, в качестве эксперимента, получилось примерно так
                                                          +2
                                                          Кстати, а как бы назначить запуск программы на нажатие PrintScreen?
                                                            0
                                                            Какое de, wm? Или вы про windows?
                                                              0
                                                              Я про Windows, да
                                                            0
                                                            Посмотрел внутрь Gyazo на Mac OS X (содержимое пакета), оно использует достаточно интересную команду:
                                                            screencapture -i имя_файла.png

                                                            Сам скрипт Gyazo.app/Contents/Resources/script
                                                              0
                                                              Настроил на собственном сервере. Все работает, спасибо. Но меня тоже интересует, как сделать, чтобы программа вызывалась по PrintScreen. Без этой возможности от нее толку мало.
                                                              0
                                                              Продолжу пользоваться printscreen + itmages (встроенный в Nautilus). Ну привык я.
                                                                0
                                                                почему бы не использовать tempnam для обеспечения уникальности имени файла? зачем эти извращения с md5?
                                                                php.net/manual/en/function.tempnam.php
                                                                  +1
                                                                  Моя программа для линукса — nanoshot.sourceforge.net/. Правда сейчас она не развивается, т.к. нет на неё времени.
                                                                    0
                                                                    На первый взгляд выглядит симпатично. Попробую, спасибо.
                                                                    0
                                                                    Зачем обрезаете md5(time()) до 28 символов?
                                                                    А еще использовать только time() для хэша недостаточно. Ведь time() возвращает время в секундах. А за секунду может и несколько картинок прилететь — останется только последняя, перезаписав остальные. Что-то вроде md5(microtime(true).$_SERVER['REMOTE_ADDR'].mt_rand(100000,999999)) будет лучше.
                                                                      0
                                                                      Насчет как повесить на PrintScreen (Win7) у кого-то идеи появились? Действительно, этого очень не хватает
                                                                        0
                                                                          0
                                                                          пардон, это просто перебиндить одну кнопку на другую

                                                                          вот это должно сработать: www.autohotkey.com/
                                                                            +2
                                                                            Спасибо. Так как программа по сути без интерфейса? приведу пример скрипта, может кому-то сэкономит время (надо только изменить путь до программы)

                                                                            PrintScreen::
                                                                            Run, C:\DropBox\Programs\Gyazo\gyazowin.exe
                                                                            Return


                                                                            Скрипт нужно «Edit», а потом «Reload»
                                                                      +1
                                                                      А расскажите, из каких дебрей подсознания взято название?
                                                                      0
                                                                      Огромное спасибо, все настроил за 15 минут. Работает прекрасно.
                                                                        0
                                                                        Файла нет vps.yurganov.ru/gyazo/distr/gyazowin.zip
                                                                        Выложите, пожалуйста?
                                                                          +1
                                                                          Выложил. Зеркало. Внутри exe с конфигом, upload.php и gallery.php. Инструкции по установке галереи не сохранилось, но насколько нашел — нужно в 470 строке заменить 'http://site.ru/folder/i/" на Вашу папку.
                                                                            0
                                                                            спасибо громадное
                                                                              +1
                                                                              Еще добавлю, что с помощью простого AutoHotkey-скрипта можно запускать Gyazo по нажатию Print Screen
                                                                              #NoTrayIcon
                                                                              PrintScreen::
                                                                                  Run, C:\Program Files (x86)\Gyazo\gyazowin.exe
                                                                              Return
                                                                              
                                                                                0
                                                                                вау. использую hotkey, поэтому добавлю скриптик
                                                                              0
                                                                              Установил, работает! пример e-ivanov.ru/p/0a31444f154723a60b38e49e13d7.png

                                                                              наконец-то! а то все эти бесплатные хостинги картинок так сильно тормозят.
                                                                              0
                                                                              А можете, пожалуйста, перезалить еще раз? По обеим ссылкам — 404.
                                                                                0
                                                                                Перезалил файл (первая ссылка). Zyazo — собственноручно написанная фигня, чтобы загружать файлы через этот же конфиг и upload.php. Ярлык можно добавить в SendTo для удобства. Будет заливать файл на сервер в 2 клика + ссылку в буфер. Если это не нужно — из upload.php можно убрать ветку elseif.
                                                                                  0
                                                                                  Большое спасибо за отзывчивость и оперативность :)
                                                                                    0
                                                                                    Снова умерла ссылка)
                                                                                      0
                                                                                      С моего сервера все норм. Еще одно зеркало, на всякий случай.

                                                                            Only users with full accounts can post comments. Log in, please.