Как я могу сделать скрипт bash для обратного поиска идентичного изображения и загрузки его наибольшего разрешения? - PullRequest
2 голосов
/ 18 апреля 2019

Я знаю, что этого нельзя сделать только с помощью bash-скрипта, или это не так далеко, насколько я знаю (и я все еще учусь).Вот почему я прошу о помощи.Что мне еще нужно?Существуют ли специальные инструменты?

Это то, что я хотел бы сделать:

  1. Загрузить изображение в https://www.google.com/searchbyimage/upload
  2. Затем найдите все идентичные изображения
  3. Загрузите файл с наибольшим разрешением

До сих пор я смог загрузить изображение в Searchbyimage с помощью curl.Затем это загруженное изображение создает очень длинный токен, который используется для поиска похожих изображений, с некоторыми дополнительными ключевыми словами.

Загруженное изображение создает ссылку, составленную следующим образом:

https://www.google.com/search?tbs=sbi:

После того, как это ужасно долго маркер: AMhZZith3JfR2OzwmuyQjufBifvdFWNjMShRMypWIE2-g005QfYLeTATLhGHAWz8MLI-tbgHzZp-bREPlJbsNWhY7U4Z2_19bu0oHII6VJPIVVJSPANODqnrJXp6X5VKKoXHMLcBCmI9eIpxS_1EX9g9YJPFL2XFEfJqIApLX83erP5mlRM7rSiIF5Te_1RPNyVkp4IPZPBRtoOKGhpDw2xad-JZsqd2ai4F5sMvyO2A_18PMFKg21nTRH_1jVeOeUhz8U5zkL4lycIg3kafAYlNy8YwmjSFcmc2nZB_10t9MFyi2BnBmemDRp4DCACI0FVM6pLTIB8VCBpU9A

и это добавляет это в конце: & гектолитров = фр .

Наконец, изображение ищется, и у меня есть выбор между нажатием кнопки «похожие изображения» или «все размеры» (это «все размеры», которые я хочу, поскольку подобные изображения не гарантируют, что они будут идентичны).Это добавит некоторые ключевые слова из анализа изображения в Google (здесь фотография Эмиля Золя) и создаст второй токен:

Изображение, которое я искал здесь

https://www.google.com/search?safe=strict&hl=fr&

* одна тысяча тридцать семь * д = Эмил + Zola & TBM = Isch * тысяча тридцать-восемь *

& TBS = SIMG:

тысяча сорок одна * CAQSmQEJthA57uIOXdcajQELEKjU2AQaBggXCD0IQgwLELCMpwgaYgpgCAMSKLQZ9QH3BLMZ2A6xGdcO3w70Ad0OwjrEOqEuwzqiLsE67iSTLoM4oC4aMIk1iw7XQn7Wu55hLB2k-bnfW3_1yf24eA0N-W-baKvWkDj48J67yZZS-ио-BgjCRQyAEDAsQjq7-CBoKCggIARIEnfZWUgw & са = Х & веды =0ahUKEwi965ashtrhAhWI3eAKHSmRCBwQ2A4IKygB

& biw = 1920 & bih = 944

С в конце разрешением изображения.Идея состоит в том, чтобы воссоздать эту вторую ссылку, чтобы затем загрузить изображение с самым высоким разрешением среди того, что нашел Google.Я должен получить токен, но все остальное можно найти в самом файле изображения: файл имеет правильное имя в соответствии с изображением и, следовательно, может содержать ключевые слова, а его разрешение также легко известно.Я хотел бы сделать это сценарием, чтобы загружать изображения с более высоким разрешением многих картин - более тысячи - которые низкого качества.В идеале я бы использовал это довольно часто.До сих пор я нашел способ загрузить фотографию с помощью curl, и это вернуло мне маркер, но не завершенный.Кроме того, я был полностью потерян.

Теоретически это не кажется невозможным.Проблема в том, что я слишком новичок: мне пока очень нравятся Linux и bash, но я знаю только так мало.Я, конечно, несколько часов занимался поиском в интернете, но я не нашел ничего, что я мог бы использовать.На github нет ничего похожего: множество скриптов, которые ищут похожие изображения, но нет идентичных.Ни один из них также не сравнивает размеры этих изображений.Существует также python API для обратного поиска изображений , но не похоже, что он может искать идентичные изображения, и, похоже, это связано с Google API, что проблематично.Все это, вероятно, очень сложно для меня, потому что я только начинающий, и я не знаю достаточно, чтобы создать этот сценарий: но по-другому - возможно, из-за моего недостатка знаний - это вовсе не кажется невозможными я очень хочу попробовать, потерпеть неудачу, попробовать снова: учиться.И вот я здесь, чтобы спросить: как мне это сделать?Это можно сделать только в bash?Если нет, что я должен включить?Или, может быть, это невозможно сделать?

Наконец, я знаю, что есть Google API для обратного поиска изображений. Это было бы очень полезно, если бы оно не ограничивалось сотнями поисков изображений в день: если вы хотите больше, вы должны заплатить. И при 100 снимках в день у меня уходит около одиннадцати дней, чтобы выполнить обратный поиск всех изображений, которые я хотел, в лучшем качестве: в конце концов, я бы сделал все так быстро, если бы все сам искал вручную. Но ни один из этих вариантов не кажется решением: и этот сценарий не кажется невозможным. Это только за пределами моих нынешних возможностей.

Заранее спасибо, если у кого-нибудь есть идея!

PS: я могу использовать Linux через WLS или виртуальную машину. Оба работают очень хорошо, включая любую команду или пакет. WSL намного быстрее. И извините за мой английский, я французский!

Второй PS: меня попросили показать, что у меня было в виде кода, но это не выходит за рамки этого:

curl -i -F sch=sch -F encoded_image=@path/to/my/imagefile.jpg https://www.google.com/searchbyimage/upload

Что было частичным ответом на мой вопрос, который я нашел здесь: Как использовать поиск Google по изображению в curl

1 Ответ

0 голосов
/ 19 апреля 2019

Существует два основных способа использования Интернета программно:

  • через API: это специально предназначено для компьютеров для доступа к веб-ресурсам и всегда предпочтительнее.Вы следуете строгим правилам и получаете четко определенные результаты обратно.
  • путем сканирования: это когда компьютер притворяется пользователем, эмулируя нажатие на ссылки, выполненные в браузере.По сути, скручивание, но снова и снова с сохраненным промежуточным состоянием, сгенерированными правильно параметрами, примененной кодировкой и т. Д.

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

Так что, если вы действительно хотите обойти API, используйте библиотеку искателя, такую ​​как Python Scrapy.Но учтите, что ограничения API могут быть полезным индикатором того, как далеко вы можете рассчитывать получить без оплаты.

...