Поиск Google: как создать URL для поиска обратного изображения (дубль 2)
Мне нужно прагматично использовать обратный поиск картинок Google, дело в том, что они отказались от версии API, которая позволяла искать изображения с изображениями. В моем сценарии я не могу использовать поиск изображения по тексту.
Поэтому я решил сделать "быстрый" прототип, запрограммировав публикацию изображения на http://images.google.com/searchbyimage/upload Сначала я сделал это вручную и фыркнул, чтобы посмотреть, что было опубликовано. Я также нашел это полезное сообщение от stackru. (Микроби взять на себя)
Короче говоря, причина, по которой мне нужно опубликовать это на http://images.google.com/searchbyimage/upload заключается в том, что мне нужно получить сообщения tbs:sbi=xxx, возвращенные постом; это "изображение отпечатка пальца / закодированное изображение" (которое не является закодированным в base64 изображением) является параметром для более поздней публикации, которую необходимо будет сделать для получения результатов изображения (опять же программно)
параметры, публикуемые программно, практически идентичны параметрам, используемым в браузере, мой пример кода следующий; результат дает мне tbs:sbi=xxx, но это не правильно, что я делаю не так?
вот пример моего кода
[TestMethod]
public void PostImageToGoogleAsBytes()
{
const string googleImageSearchUrl = @"http://images.google.com/searchbyimage/upload. ";
const string imageToUpload = @"C:\Development\ReverseImageSearch\Tests\TestFiles\Images\sampleImage.jpg";
HttpContent bytesContent = new ByteArrayContent(File.ReadAllBytes(imageToUpload));
bytesContent.Headers.Add("Content-Type","image/jpeg");
bytesContent.Headers.Add("filename", "sampleImage.jpg");
using (var client = new HttpClient())
{
using (var formData = new MultipartFormDataContent())
{
formData.Add(new StringContent(String.Empty),"image_url");
formData.Add(bytesContent, "encoded_image");
formData.Add(new StringContent(String.Empty), "fileName");
formData.Add(new StringContent(String.Empty), "image_content");
var response = client.PostAsync(googleImageSearchUrl, formData).Result;
Assert.IsTrue(response.IsSuccessStatusCode);
}
}
}