Делаем скриншоты с автоматическим перебрасыванием на поиск изображения в Яндекс/Гугл
Ожидает приглашения
Привет, Хабр!
Я достаточно часто делаю скриншоты, чтобы потом искать их в Яндекс/Гугл, и занятие это несколько утомительное: сначала нужно сделать скриншот, потом сохранить (ну или сразу с сохранением тоже достаточно популярная фича среди всяких утилит для скришотов, угу), потом открыть свою любимую поисковую систему, открыть в ней поиск по картинкам, залить картинку, это уже аж 4-5 шагов, что лично меня напрягало.
И я решил, что надо процесс автоматизировать, начал с того, что написал скрипт, который формирует ссылку на поиск, принимая путь к изображению.
Код для формирования ссылки в яндекс (источник):
Код для формирования ссылки в гугл (его я, возможно, тоже откуда-то взял, не помню точно, хотя последняя строчка как бы намекает, что такое только я мог написать, ну может частично откуда-то :D):
На самом деле я не понимаю, почему в ссылке идет webhp, и его приходится реплейсить, но разбираться было лень, ведь работает же…
После этого (ну скорее я просто попутно вдруг заинтересовался, как это сделать), я зарегистрировал вызов скрипта через контекстное меню в Windows Registry, написал даже скрипт, который это делает, и выложил на гитхаб вместе со скриптом, формирующим ссылку.
В общем, вот тут я не знал, что дальше с этим делать, писать свой скриншотер даже если бы я и смог, то все равно, как-то не хотелось, так что я стал гуглить, что может мне вообще нафиг не надо было все это делать, и есть уже готовая утилита. Выяснил, что в lightshot есть возможность после скрина сразу загуглить картинку, но я хотел либо яндекс, либо и яндекс и гугл. Так что стал искать дальше.
И вот тут я нашел ShareX, в котором есть возможность прописать ему действия, выполняющиеся после выполнения скриншота в фактически неограниченных возможностях, потому что это выполнение определенной команды в командной строке. И даже можно сделать так, что они выполняются только при определенном сочетании клавиш.
Так, а сейчас пошагово покажу, как сделать так, чтобы ShareX запускал скрипт после скриншота:
1) В ShareX открываем настройки задач -> действия.
2) Добавляем свое действие «добавить».
В имени пишем что угодно, в пути к файлу пишем путь к python.exe, в аргументах путь к нашему скрипту. Если это мой скрипт (ссылку на гитхаб оставлю в конце), то тут также пишем «yandex» или «google», и в конце %input (путь к файлу). Если это Ваш скрипт, то %input, конечно, все равно пишем, а Ваш скрипт должен будет его принимать.

Жмем ок, включаем действие (галочка), если не включилось само.
3) Возвращаемся в главное меню ShareX, нажимаем «горячие клавиши».
4) Добавляем комбинацию, нажимаем на шестеренку. И нажимаем «переопределить задачи после захвата». Тут выбираем «Сохранить изображение в файл», «Выполнить действия» и что еще хотите, у меня еще стоит копирование в буфер и удаление локального файла.
Ну вот и все, и не забудьте комбинацию клавиш саму установить, у меня стоит Ctrl+Y.
Чтобы добавить возможность выполнения разных команд в зависимости от разных комбинаций клавиш можно переопределять список действий для каждой комбинации (шестеренка -> действия -> переопределить действия).
Вообще, ShareX офигенный, причем опенсорсный (на C# написан), + к тому же с темной темой. А еще в нем можно делать видеозапись экрана, говорят, что легковесные видео получаются, хотя мне это, в принципе, редко бывает нужно, просто счел нужным упомянуть после того, как прочитал эту статью.
Ссылки: ShareX, скрипт для генерации ссылок (а также скрипты для создания контекстного меню в Windows)
Я достаточно часто делаю скриншоты, чтобы потом искать их в Яндекс/Гугл, и занятие это несколько утомительное: сначала нужно сделать скриншот, потом сохранить (ну или сразу с сохранением тоже достаточно популярная фича среди всяких утилит для скришотов, угу), потом открыть свою любимую поисковую систему, открыть в ней поиск по картинкам, залить картинку, это уже аж 4-5 шагов, что лично меня напрягало.
И я решил, что надо процесс автоматизировать, начал с того, что написал скрипт, который формирует ссылку на поиск, принимая путь к изображению.
Код для формирования ссылки в яндекс (источник):
base_url = 'https://yandex.ru/images/search'
params = {'rpt': 'imageview', 'format': 'json', 'request': '{"blocks":[{"block":"b-page_type_search-by-image__link"}]}'}
files = {'upfile': ('blob', open(image_path, 'rb'), 'image/jpeg')}
r = requests.post(base_url, params=params, files=files)
query_string = json.loads(r.content)['blocks'][0]['params']['url']
url = base_url + '?' + query_string
Код для формирования ссылки в гугл (его я, возможно, тоже откуда-то взял, не помню точно, хотя последняя строчка как бы намекает, что такое только я мог написать, ну может частично откуда-то :D):
base_url = 'http://www.google.com/searchbyimage/upload'
files = {'encoded_image': (image_path, open(image_path, 'rb')), 'image_content': ''}
r = requests.post(base_url, params=params, files=files)
return r.url.replace("webhp", "search")
На самом деле я не понимаю, почему в ссылке идет webhp, и его приходится реплейсить, но разбираться было лень, ведь работает же…
После этого (ну скорее я просто попутно вдруг заинтересовался, как это сделать), я зарегистрировал вызов скрипта через контекстное меню в Windows Registry, написал даже скрипт, который это делает, и выложил на гитхаб вместе со скриптом, формирующим ссылку.
В общем, вот тут я не знал, что дальше с этим делать, писать свой скриншотер даже если бы я и смог, то все равно, как-то не хотелось, так что я стал гуглить, что может мне вообще нафиг не надо было все это делать, и есть уже готовая утилита. Выяснил, что в lightshot есть возможность после скрина сразу загуглить картинку, но я хотел либо яндекс, либо и яндекс и гугл. Так что стал искать дальше.
И вот тут я нашел ShareX, в котором есть возможность прописать ему действия, выполняющиеся после выполнения скриншота в фактически неограниченных возможностях, потому что это выполнение определенной команды в командной строке. И даже можно сделать так, что они выполняются только при определенном сочетании клавиш.
Так, а сейчас пошагово покажу, как сделать так, чтобы ShareX запускал скрипт после скриншота:
1) В ShareX открываем настройки задач -> действия.
2) Добавляем свое действие «добавить».
В имени пишем что угодно, в пути к файлу пишем путь к python.exe, в аргументах путь к нашему скрипту. Если это мой скрипт (ссылку на гитхаб оставлю в конце), то тут также пишем «yandex» или «google», и в конце %input (путь к файлу). Если это Ваш скрипт, то %input, конечно, все равно пишем, а Ваш скрипт должен будет его принимать.

Жмем ок, включаем действие (галочка), если не включилось само.
3) Возвращаемся в главное меню ShareX, нажимаем «горячие клавиши».
4) Добавляем комбинацию, нажимаем на шестеренку. И нажимаем «переопределить задачи после захвата». Тут выбираем «Сохранить изображение в файл», «Выполнить действия» и что еще хотите, у меня еще стоит копирование в буфер и удаление локального файла.
Ну вот и все, и не забудьте комбинацию клавиш саму установить, у меня стоит Ctrl+Y.
Чтобы добавить возможность выполнения разных команд в зависимости от разных комбинаций клавиш можно переопределять список действий для каждой комбинации (шестеренка -> действия -> переопределить действия).
Вообще, ShareX офигенный, причем опенсорсный (на C# написан), + к тому же с темной темой. А еще в нем можно делать видеозапись экрана, говорят, что легковесные видео получаются, хотя мне это, в принципе, редко бывает нужно, просто счел нужным упомянуть после того, как прочитал эту статью.
Ссылки: ShareX, скрипт для генерации ссылок (а также скрипты для создания контекстного меню в Windows)