Как стать автором
Обновить

Комментарии 83

Там идет подтверждение на отправку и не только, что заставляет выполнить несколько лишних действий ;)
Код распространяется «как есть» — вы можете свободно использовать, редактировать и распространять программу или это руководство, указав автора.

Мы с вами люди с прямыми руками ;) Можно и убрать подтверждение.

В любом случае спасибо Вам за достаточно подробный мануал.
Я делал так, как удобно мне.
Вы можете поменять исходный скрипт — там всё наглядно и просто ;)
для мака есть замечательный сервис www.droplr.com =)
у каждого свой путь.
а еще есть cloud.app
Для своего удобства прошлым летом сделал shotpic.ru
Делает тоже самое, только на мой сервер
Юзаю clip2net и его скрипт. Только вот ограничения его не очень нравятся.

В последнее время присматриваюсь к хабраэффекту.
Спасибо за полезный скрипт.
А какие там ограничения? они разве на столько серьезные?
Да нет, не очень то серьезные:
    > 100 Mb дискового пространства для изображений и файлов
    > 500 Mb интернет траффика ежедневно
    > Загрузка до 50 изображений или файлов в день
    > Хранение файлов до 30 дней с момента загрузки

Не всегда просто бывает 50 штук в день не достаточно + ограничение в 30 дней тоже как-то не очень, пару раз 500 мб трафика не хватило. А покупать аккаунт как-то не хочется.

Поэтому когда надо на долго и много залить картинок/фоток юзал пискасу и/или дропбокс.

Кстати, на хаброэффекте вроде подобных ограничений нет (по крайней мере я не нашел).
Решение проблемы ограничения на clip2net — goo.gl/c2hL
И да, совсем забыл, что
| tee -ai /var/log/screens.log | 
далает запись ссылок в соотв. файл. Поэтому вы их никогда не потеряете))
Что то он у меня не делает запись, несмотря на то что файл я создал…
Поставьте права 777
Спасибо, не сообразил.
может прав пользователя не хватает?
А есть еще Shutter :)
Пользуюсь Shutter, когда надо сделать какие-нибудь пометки на скриншоте. К тому же можно загружать картинки на свой фтп-шник. По удобству почти как clip2net)
Почему то не работает «Копировать в буфер обмена» если нажимаем через окно вызванное printscreen.

Так же я решил немного модифицировать ваш скрипт, я не хочу что бы каждый раз у меня открывался хром со скриншотом а просто копировалась ссылка в буфер обмена и появлялось уведомление о том что загрузка завершена, уведомление я уже сделал но в силу скудности своих знаний в области bash, я не знаю как реализовать копирование ссылки в буфер обмена, есть какие то способы?
Например так:

Это:
... |  xargs -I _ google-chrome _

Замените на:
... | xsel  -b -i


Полный код для хаброэффекта:
#!/bin/bash
scrot /tmp/screen.png
curl  -F "upload=yes" -F "file=@/tmp/screen.png" -L http://habreffect.ru/upload.php  |\
  grep -e "original-link" |  awk -F"\"" '{print $10}' | tee -ai /var/log/screens.log |\
  xsel  -b -i

Теперь и браузер не открывает и ссылку не копирует :(
Тупой мудак! xsel поставил и всё заработало, спасибо.

Осталось проблема с неработоспособности кнопочки «Копировать в буфер обмена» если нажимаем через окно вызванное printscreen.
Бывает ;)

Эта кнопка не линк копирует в буфер, а сам скриншот. К тому же это стандартная гномовая утилита, которая не имеет ни ккого отношения к скрипту.
Как то я раньше не замечал это :) В любом случае спасибо за помощь :)
Не за что :)
Вы же сказали:
я не хочу что бы каждый раз у меня открывался хром со скриншотом а просто копировалась ссылка в буфер обмена


Ссылка в буфер не копируется, скорее всего, потому что у вас xsel не установлен.
Для Debian-Like:
aptitude install xsel
Опечатался, хотел сказать что бы хром НЕ открывался :)
Уже всё сделал, только с кнопкой осталась проблема и незнаю где копать…
Расскажите как, у меня не получилось(
Что вам с кнопками не понятно? Как сделать хоткей, чтобы по нему скрипт отрабатывал?
Игнорируйте меня :) Я начинаю нести бред, уже сделал всё что хотел.
К сожалению мне не удалось сделать копирование, пробовал xsel, xclip. Они копируют их, но после перехода обратно в хром, буфер меняется. Мне кажется, что эти утилиты работают с разными буферами
xsel может с разными буферами работать:
Selection options
  -p, --primary         Operate on the PRIMARY selection (default)
  -s, --secondary       Operate on the SECONDARY selection
  -b, --clipboard       Operate on the CLIPBOARD selection

Я использовал "-b", чтобы в оба буфера засунуть линк.

Почему после перехода в хром они менялись не знаю. Как вы это делали?
Косячек ;) я в праймари в обоих писал ;)
Спасибо. Добавил в пост.
А… Я первый раз тоже на это наткнулся :)
Не за что :)
Кстати, grep можно выкинуть из скрипта, его работу с легкостью делает awk:
curl  -F "upload=yes" -F "file=@/tmp/screen.png" -L http://habreffect.ru/upload.php  |\
 awk -F"\"" '/original-link/ {print $10}'

Пользовался им долгое время на винде, а вот на линуксе поднять не смог. Не хватает прямоты рук видимо. Но он мне нравится своей минималистичностью.
А что там поднимать? Это же просто скрипт на Ruby.
Та ясное дело, но у меня не заводился. Не помню почему.
Попробую завтра еще раз:)
Да, нас это достало! И по этому мы уже давно не рвём жопу в попытках написать свой велосипед, а давно используем готовые решения.

Теперь каждый кого достало делать действия для публикации скриншота, будет писать свой велосипед и обязательно рассказывать о нём на хабре.
Любой уважающий себя никсойд должен придумать свой велосипед в виде аплоудера картинок и файлов. Старо как мир к сожалению.
Тоже много лишних действий будет.
Хотя в теории можно всё автоматизировать…
По крайней мере необходимо иметь аккаунт. А вот для заливки я там видал веб морду. Что вам нужно туда запихнуть?)
В принципе можно попробовать)
Не, я ручками в принципе без проблем делаю, можно к минимуму свести просто действия, сохранение в Dropbox напрямую… Но это я предложил просто как вариант.
У них для линукса есть клиент ;)
Я им пользуюсь, копирую в одну папку, и оно само все распихивает по серверам
Ну я так же, я имею в виду сохранение сразу в папку, а не копировать/вставлять.
Это-то да. Можно даже scrot/shutter/etc настроить, чтобы сохранял сразу в
~/Dropbox/Public, чтобы автоматом заливалось.
Но линки-то в буфер автоматом не копируются… Приходится делать (для каждого файла):
$ dropbox puburl /home/USER/Dropbox/Public/filename.ext

Что уже не очень удобно.

Добавил уведомление :)

notify-send «Загрузка скриншота» «Скриншот был успешно загружен» -i /usr/share/icons/gnome/scalable/emblems/emblem-default.svg -t 5000
Предлагаю вашему вниманию Другой доработанный скрипт для радикала:
#!/bin/bash
scrot  /tmp/screen.png
curl  -F "upload=yes" -F "filename=@/tmp/screen.png" http://www.radikal.ru/action.aspx | grep "input_link_1\"" | cut -d "\"" -f4 | tee -ai /car/log/screens.log | xsel -b -i ;
tail -n 1 /var/log/screens.log |  xargs -I _ google-chrome _ ;
notify-send "Загрузка скриншота" "Скриншот был успешно загружен" -i usr/share/icons/gnome/scalable/emblems/emblem-default.svg -t 5000

Данный скрипт, сохраняет в /var/log/screens.log картинку, копирует ссылку в буфер обмена, после чего открывает «хром», или ваш любимый браузер и показывает этот скриншот.
ЗЫ обновил пост
О ужас, а зачем в /usr/sbin? Если мне не изменяет память, программы оттуда запускаются только через sudo.
Правильнее уже будет сунуть свой скрипт в /usr/local/bin
Всетаки она вам изменяет))
Как хотите, туда и пихаете, я вас заставляю?) хоть в ~/ пихайте. Никого не держу))
Всетаки она вам изменяет))
Не знаю какой у Вас дистр, но в моём такое не прокатит.
хоть в ~/ пихайте
И такой вопрос возникает: как из ~/ потом одной командой запускать?

Проще надо относиться к критике, а не грубить, стараясь показать свою самодостаточность.
Ubuntu 10.04 RC
/home/user/screen.sh
Я вам не грубил, а в шутку намекнул))
в файл ~/.bashrc
добавляем
PATH=$PATH:/home/sattellite/
export PATH
НЛО прилетело и опубликовало эту надпись здесь
Ну я тоже так делаю) Просто я предложил как именно домашний какталог добавить)
Ну и учимся подчищать за собой :)
rm -Rf /tmp/screen.png
Ненужно, по дефолту /tmp сам clean`тся
1. Не во всех дистрах.
2. Обычно это во время (пере)загрузки (а если ты комп не вырубаешь неделями?).
3. Убирать за собой это считается хорошим тоном, не только для человека, но и для программы.
1. Не во всех дистрах.

Можно пример? (тем кто это отключил ССЗБ)

2. Обычно это во время (пере)загрузки (а если ты комп не вырубаешь неделями?).

И сколько Вы сделаете screen`ов за это время? Неужели все свободное место на разделе с /tmp закончится из-за десятка screen`ов по ~200kb (при условии что Вы не адский QA :) )?

3. Убирать за собой это считается хорошим тоном, не только для человека, но и для программы.

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

У меня уже очень долго используется следующая «схема»

vv@crusader ~ $ ls -l trash
lrwxrwxrwx 1 vv vv 4 лис 15 11:20 trash -> /tmp
vv@crusader ~ $ cat /usr/local/bin/make_screen 
#!/bin/sh

# some thing copied from here
#http://forums.freebsd.org/archive/index.php/t-737.html

DATE=$( date -u +%Y.%m.%d_%H-%M-%S ) 
DIR=/tmp
FILE=$DIR/"screenshot_"$DATE"UTC.png"

imlib2_grab $FILE

vv@crusader ~ $ 


Никогда проблем не было
1. Сходу не приведу… Но точно помню, что у меня на слаке (года два ее уже не юзаю) /tmp не чистился автоматом (из коробки), настраивал сам. Какая слака была уже не вспомню. Но и в других наверняка тоже быть может такое. В генту вроде тоже из коробки не чистится (ручаться не могу, т.к. не юзал). Я понимаю, что этого меньшинство, но все же…

2. Спору нет. Но прикинь, заскринил ты переписку с девчонкой какой-нить, а потом твоя этот скрин увидит… Каково будет? (допустим, она IT'шник / просто любопытная / случайно)

В общем, все сказанное тут и комментом выше мое ИМХО и склонял я все к п.3.
Немного переделал под себя скрипт для хаброэффекта. Может кому понравится:
#!/bin/bash

trap "_exit" INT KILL TERM QUIT
_exit() {
	rm -f $SCREEN_FILE
	exit
}

FINISH=""
LOG_FILE='/var/log/screenshots.log'
SCREEN_FILE="$(mktemp -q -t screenshot_XXXXXXXXXXXXXXXXXX).png"

scrot $1 $SCREEN_FILE
[ $? -ne 0 ] && FINISH="[ FAIL ]"

LOG_STR=$( curl -s -F "upload=yes" -F "file=@$SCREEN_FILE" -L http://habreffect.ru/upload.php |\
 sed -ne '/original-link\|delete/s/^.*\(http.\+\)".*$/\1/gp' | tr '\n' ' ' |\
 sed -e "s/'\ $/\ \]\n/;s/[\ \t]/\t\[del: /;s/^/$(date '+%x %R')\t/" |\
 tee -ai $LOG_FILE | awk '{print $3}' )
[ $? -ne 0 ] && FINISH="[ FAIL ]"

echo $LOG_STR | xsel -b -i

notify-send -t 5000 -i dialog-information "$FINISH Скриншот загружен"\
 "<a href=\"$LOG_STR\">Посмотреть...</a>"

_exit


Что тут другого?
1. Удаляет файл скриншота, т.е. чистит за собой.
2. В лог пишет дату и время создания скрина, урл скрина и урл для удаления скрина с хаброэффекта (мне так как-то спокойнее).
3. Уведомление о загрузке содержит ссылку, которая откроет скрин в браузере по дефолту, а если была ошибка, напишет в заголовке [ FAIL ].
4. Можно передать любую опцию scrot'а (например, "-s" будет ждать, пока ты выделишь кусок экрана и потом его заскринет).
У меня почему то не работает.

На выходе отдаёт лишь новую строку…
Сбросьте мне в личку, чтобы тут не захломлять, гляну:
$ bash -x /path/to/script.sh
А… Туплю. У вас скорее всего нет файла /var/log/screenshots.log, а в /var/log/ юзер писать не может, поэтому скрипт не может создать этот файл. Поэтому надо вначале создать этот файл (сорри, заблыл):
$ sudo touch /var/log/screenshots.log
$ sudo chmod 777 /var/log/screenshots.log
$ sudo chmod 666 /var/log/screenshots.log

Однако…
Ах, да. Ступил я :) Спасибо, что поправили.
$ ~/screen.sh
sed: -e expression #1, char 45: unknown option to `s'

не заработало
Для проверки скопипастил его себе, все работает.

У вас какой sed?
$ sed --version
GNU sed версия 4.2.1
странно, версия аналогичная:
$ sed --version
GNU sed version 4.2.1
Да, все верно, это тут не причем. Благодаря багрепорту от Screatch понял в чем дело…
У вас просто локальная дата отображается как «04/28/2010», из-за чего sed и ругается.

Замените в строке 18 строку
date '+%x %R'
на
date '+%d.%m.%Y %H:%M'
Спасибо, помогло
а какие ещё фришные фото- и вообще файлохостинги имеют API для закачки изображений/файлов?
В принципе любые. Тут не используется апи, как таковое, тут юзается curl, который является, как бы, консольным браузером.
Для снятия скриншотов меня полностью устраивает клавиша PrintScreen и запущенная Picasa. Лучше и не придумаешь.
А автору не кажется, что уж сильно широкое окно для принтскрина? Может нужно с кнопочками внизу как-то иначе сделать?
А что вы предлагаете? и как вам мешает размер?
sudo apt-get install shutter
1. Живет в области уведомлений и перехватывает PrtSc, Shift+PrtScr
2. Можно по щелчку на иконке выбрать область захвата: окно, экран, выбранная область
3. Есть возможность обработки изображения (яркость, контраст, обрезка итд..) благодаря предустановленным плагинам
4. Возможность экспорта на сервисы типа imageshack (и включая его)
5. Скорость работы(реакции), удобство и простота в использовании.
Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.