Поиск 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);
            }
        }
    }

0 ответов

Другие вопросы по тегам