Изображения: из буфера в комментарий (юзерскрипт)

+120
в блоге IT Pony!


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

ссылка (для установки потребуется расширение Greasemonkey для Firefox или Tampermonkey для Chrome)

Инструкция:
— Скопировать изображение в браузере/мессенджере, или сделать снимок экрана (или как там у вас)
— Ткнуть курсором в то место комментария/поста, где нужно вставить изображение
— Нажать Ctrl+V (или как там у вас)

Примечания:
— Не работает с файлами (наверное, не тестил)
— Скрипт втыкается инъекцией, потому что выяснять какого чёрта ГМ валит мои запросы не было никакого желания
— АПИ (хаха! нет) Табуна — говно

80 комментариев

буп
badunius
+1
А для совсем ленивых будет скрипт чтобы можно было перетащить изображение? :)
Tankony Изменён автором
0
я так не люблю работу с drag'n'drop в чистом js =/
так что нет, да и реализация настолько же простой не получится
badunius
0
Хз, когда я с ним работал, проблем не испытывал
andreymal
0
ну) что считать за проблемы, я немного работал с ним на реакте и ещё меньше на вью. Пробовал хтмл5 днд на чистом js. Здесь разница в том, что на paste я могу просто повесить глобальный хук и чекать цель, а для днд придётся искать конкретный textarea, чтобы сделать его drop-target. Могу сейчас что-то путать — не самая частая задача.
badunius
0

Кааайф
Niko_de_Andjelo
+2

А неплохо
MaxwelI
0
Под лисой фетчи валятся, потому что там обязательно в любых запросах должна быть полная ссылка в юзерскриптах (ну или хотя бы с доменом). Я сам хз, как допер до этого .
StaSyaN Изменён автором
+1
ну это чё-т шляпа, целую одну строчку добавлять для построения полного пути)
badunius
0
Вот проблема-то, просто берешь
location.origin
или
location.protocol + '//' + location.host
и конкатишь к этому свой путь
Stardisk
+1
да, я так и сказал, «целую одну строчку») другое дело, что нет ничего менее кросс-доменного, чем относительные пути, потому что относительные пути со всей точностью не уведут запрост на другой домен, а тут — на тебе.
badunius
0
Кстати, я тоже с этим встречался в своём скрипте, когда переписывал его с XHR на fetch.
makise_homura
0

Ух ты, классно.
Night_Song
+1
Удобно.
Sasha-Flyer
+1
Обожаю читать комменты в коде
// Такая уебанская инъекция из-за того, что ГМ ебал мои фетчи
// Что ж, это взаимно, сучёныш

Хотя, в целом, как же я тебя понимаю

алсо, што
// @grant        тщту


А с файлами оно и не будет работать, т.к. табун не подразумевает загрузку иных файлов кроме картинок
Stardisk Изменён автором
+1
Беда с раскладкой) прозреваю там должен был быть none
С файлами можно работать из буфера, нужно только mime-type чекать, чтобы напрасных запросов не слать
badunius
0
типичные комменты к js коду, ничего особого.
Sasha-Flyer
+1
Суровые будни js-прогера, непрекращающийся стресс от взаимодействия с кодом =)
makise_homura
0
Раньше можно было загружать файлы, но потом стало нельзя. И с тех пор все старые посты с файлами ломают список постов при просмотре, и отображаются неправильно.
ShprotaNa
0
Спасибо мил человек, действительно работает!
Necto
+1
А можно его допилить, чтобы он заодно картинки ресайзил до 640 по длинной стороне? А то тут очень сильно не любят большие размеры.
oxide Изменён автором
0
Технически, да, можно, но это противоречит идеологии «единой ответственности», поэтому нет.
Смотри, для меня главным мотиватором была ситуация, когда в личке мне нужно было отправить несколько скринов (я игру тестил)
Соответственно, каждый скрин нужно было сделать, вставить в фалй в пейнте, сохранить (имя придумать файлу), а потом в браузере добраться до этого же файла через форму.
Юзерскрипт решает ровно эту проблему: из буфера -> в комментарий без лишних телодвижений
Если нужно урезать картинку — вставь её в любимый редактор, обрежь как надо, выдели всё, скопируй и вставь в текст — это всё ещё достаточно просто.
Навязывать обрезание картинки не вариант — а если мне нужно именно большую отправить?
Пилить окошки «Обрезуать? да/нет» — это тоже избыточное.
badunius
0
Соответственно, каждый скрин нужно было сделать, вставить в фалй в пейнте, сохранить (имя придумать файлу), а потом в браузере добраться до этого же файла через форму.

Как сложно всё… Обычный PrintScreen не работает? Не говоря уже про ShareX. Пайнтом для скринов уже не вспомню когда в последний раз пользовался, а та же ShareX уменьшает вышеперечисленные телодвижения до 1. нажал кнопку скрина 2. Скрины улетели в условный имгур (пачкой) 3. Отправил ссылку на альбом имгура, не мучая табун (не говоря уже о том, что такие вещи можно сделать например через дискорд и другие мессенджеры).
oxide
0
Обычный PrintScreen не работает?
вот как-то так обычный PrintScreen и работает — копирует экран в буфер обмена, так же работает копирование изображения со страницы.

Как бы, если человек уже пользуется каким-то сторонним софтом и шарит скрины с каким-то внешним сервисом — честь и хвала. Я тоже думал о том, чтобы аплудить на какой-то внешний сервис и втыкать ссылку, но это шло в разре с основной целью: ускорить загрузку картинок на Табун, уменьшить количество действий до банального copy->paste
badunius
0
в условный имгур
Можно ненадо?
Табун пока на моей памяти наиболее стабильный хостинг картинок, если их надо показывать на этом же табуне, и всякие имгуры/пиксивы/инстаграмы/вписать_нужное вечно отваливаются и банятся роскомпозором.
makise_homura
+1
Можно ненадо?
Люто удваиваю.
KerHarrad
+1
Конечно можно. Речь же про удобство шла, а не про надежность и стабильность. Хотя если с ркн так дальше пойдёт то vpn из роскоши перейдёт в необходимость.
oxide
0
то vpn из роскоши перейдёт в необходимость.
Как бы не уже =/
makise_homura
0
Технически, да, можно, но это противоречит идеологии «единой ответственности», поэтому нет.

Ты можешь в принципе просто добавить width="${width}" в тег картинки, и определить ширину где-то в начале. Обновлять ты скрипт вряд ли будешь, так что…
StaSyaN Изменён автором
0
Скрипт вставляет тег — берёшь и вписываешь width ручками, например =)
Так-то это решается кастомным стилем с max-width: 640px для img, например =/
badunius
+1
в целом тоже верно, ага
StaSyaN
0
О, привет. Давно тебя не видно было. Как там внутренности Буры поживают?
Sasha-Flyer
0
Спокойно живут
StaSyaN
0
Вы хоть нашли того кто переписку слил?
Sasha-Flyer
-3
Да
StaSyaN
+1
Ну и кто это? Рапторшай или кто-то еще?
Sasha-Flyer
-3
Не скажу. Но это с самого начала было известно, что не она, там даже тайминги не подходят.
И не устраивай допрос в этом треде, это голимый оффтоп
StaSyaN
+2
Не скажу.

Почему? Просто реально интересно. И вы его кикнули уже? Или че сделали?
Sasha-Flyer
-3
Любопытному на днях, прищемили хуй в дверях.
KerHarrad
+3
Я не буду говорить ничего, что как-то повлияет на круг поиска
StaSyaN
+2
Почему эта информация такая секретная?
Sasha-Flyer
-3
Потому что так-то все, происходящее внутри, секретно.
StaSyaN
+3
так переписку слили снаружи. Я ведь её могу перечитать в любой момент. Что там секретного?
Sasha-Flyer
-3
Там дохуя того, что не должно быть видно. Тот кто, кто это сделал, подставил не столько нас, сколько тех, чьи данные там фигурировали. Правило 8 не просто так существует.
StaSyaN
+2
Ну, так или иначе, оно видно теперь абсолютно всем. Любой желающей имеет доступ к этим данным. Так почему бы не иметь информации о том, кто именно это сделал? К тому же, это легко понять — кто неожиданно перестал быть модером/админом недавно — тот и сделал.
Sasha-Flyer
-3
Вот же доебался то…
Такое ощущение что сам к этому руку приложил, а теперь суетится, чтоб подозрения отвести.
KerHarrad
+4
Потому что нет. Точка.
StaSyaN
+3
Скучно. Ну тебя
Sasha-Flyer
-4
Так-то это решается кастомным стилем с max-width: 640px для img, например =/

Что это значит, и как этим пользоваться?
Niko_de_Andjelo
0
Скрипт вставляет тег — берёшь и вписываешь width ручками, например =)


Прикольно. А какой будет грузиться вес при употреблении параметра width? Исходный, или новый?
Niko_de_Andjelo
0
исходный)
badunius
0
Скрипт вставляет тег — берёшь и вписываешь width ручками, например =)

Стоп. Прочитал. Но ведь это не имеет смысла. Мелкие картинки вставляют для экономии траффика. А про метки изменения размера сказано:
Ширину и высоту изображения можно менять как в меньшую, так и большую сторону. Однако на скорость загрузки рисунка это никак не влияет, поскольку размер файла остается неизменным.
Niko_de_Andjelo
0
На самом деле 90% людей, которые воят на большие картинки, негодуют именно за разорвиэкраны, а не из-за того, что жирные. Среднестатические жпеги даже разорвиэкранного размера имеют вполне вменяемые размеры, и даже у меня с них не горит.
Функционал ужатия пикчи должен быть опциональным на стороне самого табуна, не надо это на скрипт возлагать (поэтому я и лью в вк все, там этот функционал неявный, но есть).
StaSyaN Изменён автором
+3
ну хз, у меня очочко поджимается, когда на внешку вываливают 4 жопега по 0.75МБ каждый =/
badunius
0
Ну, эту картинку я взял из ВК, и здесь она весит 5.9 мб.
Niko_de_Andjelo
0
Если ты ее вставил через ctrl+v, она энкодится в пнг, что автоматически увеличивает ее размер в пару раз
StaSyaN Изменён автором
0
А зачем? Я не шарю в яваскрипте, но нельзя ли сохранять изначальный формат?
Niko_de_Andjelo
0
Ограничение среды исполнения, практически невозможно. Радуйся, что сырой буфер обмена браузер хотя бы в png энкодит, а не в bmp
StaSyaN
+2
ну png нынче стандарт де-факто, тем более для такой кросс-платформы, как браузер =/
badunius
0
Ну просто когда копируешь жпег, как-то не совсем удобно, что он конвертирует это в пнг
StaSyaN
0
Эх, не повставлять гифки((
makise_homura
0
Девяностопроцентный мимокрокодил.
Wererat
0
Мелкие картинки вставляют для экономии траффика.
Думаю, большинство их как раз их вставляют, чтобы вёрстка не ломалась.
А в современном мире 1-5 МБ (а столько может весить максимально адекватная картинка с достаточным разрешением) — это в принципе мелочи.
makise_homura
0
Да, имхо ручками вписывать width/height самое то — ибо иногда авторесайз не нужен (например, когда хочешь запостить «длинноторт» в несколько тысяч пикселей по высоте, под спойлером, разумеется), а вписывая width самостоятельно, сам понимаешь, что ты делаешь и зачем.
makise_homura
0
Думаю, не лишним будет вставить минигайд или ссылку на руководство по подключению этой фигни.
Нет, конечно можно с высоты чсв заявить «думайте сами», но это было бы крайне не очень.
Лично я никогда ничего такого рода не ставил, либо оно ставилось само.
Следовательно поставить на Opera у меня ничего не вышло.
Requiem Изменён автором
0
Нужно расширение Tampermonkey. Потом переходишь по ссылке, и там будет кнопка «установить».
Niko_de_Andjelo
0
Foken slaves, get your ass back here
Requiem
0
Надо же
Requiem
0
«Fisting is three hundred bits»
badunius
0
Это не ветка, а ♂dungeon♂ какой-то =)
makise_homura
0
подключению этой фигни.

Думаю если человек умеет делать скриншот, то и включить эту фигню не составит труда. Ибо загуглить «как сделать скриншот» и загуглить «как подключить сторонние скрипты на ХХХ браузере» — задачи одинаковой сложности.
Sasha-Flyer
0
Ты видимо немного меня не понял. Я, конечно, понимаю, то Табун делает поверхностные выводы не дочитав до конца, но все же.
Написано же: «Можно и без ЧСВ»
Requiem Изменён автором
+1
Я рад, что твоя ноулайф жизнь довела тебя до копания в скриптах. А меня вот мало заботит эта тема, поскольку я сконцентрировал внимание на других вещах.
Requiem Изменён автором
+1
мне казалось, на Табуне где-то был такой гайд, но я не могу его найти)
badunius
+1
Слушай, а ты не помнишь скрипта для табуна на чёрный список? Я помню, что он у меня стоял, но найти его никак не могу
Niko_de_Andjelo
0
А что делал этот скрипт? Вообще впервые слышу.
Art486
0
Можно было в профиле пользователя нажать на кнопку добавления в ЧС, и потом его комментарии скрывались.
Niko_de_Andjelo
0
Отличная фича. Помимо комментов и в топиках тоже работает. Ещё зашибись, что заливает на cdn.everypony.ru, а не на левый хостинг. Благодарствую!
Morano
+1

Ух ты, работает! =) Классная штука!

Кстати, маленькое пожелание: можно ли сделать какую-нибудь индикацию того, что в данный момент картинка в процессе вставки? А то я такой нажимаю Ctrl+V, а ничего не происходит, я такой уже почти ещё раз начал нажимать и параллельно раздумывать, что вдруг скрипт не запустился, надо бы разрешения проверить — а оно взяло и внезапно вставилось =)

UPD: а, ещё одна проблема: походу, винда через буфер не умеет кидать гифки, превращая их в png =\
Похоже, так не повставляешь всякие анимированные штуки…
makise_homura Изменён автором
+2
ты зачем с гитхаба удалил скрипт то?..
Sasha-Flyer
0
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.
Скрыто Показать