Hızlı Başlangıç: Bing Resim Arama REST API'sini ve C'yi kullanarak görüntü arama#
Uyarı
30 Ekim 2020'de Bing Arama API'leri Azure yapay zeka hizmetlerinden Bing Arama Hizmetlerine taşındı. Bu belgeler yalnızca başvuru için sağlanır. Güncelleştirilmiş belgeler için Bing arama API'sinin belgelerine bakın. Bing araması için yeni Azure kaynakları oluşturma yönergeleri için bkz. Azure Market aracılığıyla Bing Arama kaynağı oluşturma.
Bing Resim Arama API'sine arama isteği göndermeyi öğrenmek için bu hızlı başlangıcı kullanın. Bu C# uygulaması API'ye bir arama sorgusu gönderir ve sonuçlarda ilk görüntünün URL'sini görüntüler. Bu uygulama C# dilinde yazılmış olsa da, API çoğu programlama diliyle uyumlu bir RESTful web hizmetidir.
Önkoşullar
- Visual Studio 2017 veya sonraki sürümleri.
- NuGet paketi olarak kullanılabilen Json.NET çerçevesi.
- Linux/MacOS kullanıyorsanız, bu uygulama Mono kullanılarak çalıştırılabilir.
Proje oluşturma ve başlatma
Visual Studio'da adlı
BingSearchApisQuickStart
yeni bir konsol çözümü oluşturun. Ardından aşağıdaki ad alanlarını ana kod dosyasına ekleyin:using System; using System.Net; using System.IO; using System.Collections.Generic; using Newtonsoft.Json.Linq;
API uç noktası, abonelik anahtarınız ve arama teriminiz için değişkenler oluşturun. için
uriBase
, aşağıdaki kodda genel uç noktayı kullanabilir veya kaynağınız için Azure portal görüntülenen özel alt etki alanı uç noktasını kullanabilirsiniz.//... namespace BingSearchApisQuickstart { class Program { // Replace the this string with your valid access key. const string subscriptionKey = "enter your key here"; const string uriBase = "https://api.cognitive.microsoft.com/bing/v7.0/images/search"; const string searchTerm = "tropical ocean"; //...
Bing Resim Arama yanıtını biçimlendirmek için bir yapı oluşturma
Görüntü arama sonuçlarını ve JSON üst bilgi bilgilerini içerecek bir SearchResult
yapı tanımlayın.
namespace BingSearchApisQuickstart
{
class Program
{
//...
struct SearchResult
{
public String jsonResult;
public Dictionary<String, String> relevantHeaders;
}
//...
Arama istekleri göndermek için bir yöntem oluşturma
API'ye çağrı yapmak için adlı BingImageSearch
bir yöntem oluşturun ve dönüş türünü daha önce oluşturulan yapıya SearchResult
ayarlayın.
//...
namespace BingSearchApisQuickstart
{
//...
class Program
{
//...
static SearchResult BingImageSearch(string searchTerm)
{
}
//...
Görüntü arama isteği oluşturma ve işleme
yönteminde BingImageSearch
aşağıdaki adımları gerçekleştirin:
Arama isteği için URI oluşturun. Arama terimini
SearchTerm
dizeye eklemeden önce biçimlendirin.static SearchResult BingImageSearch(string SearchTerm){ var uriQuery = uriBase + "?q=" + Uri.EscapeDataString(SearchTerm); //...
Web isteğini gönderin ve yanıtı JSON dizesi olarak alın.
WebRequest request = WebRequest.Create(uriQuery); request.Headers["Ocp-Apim-Subscription-Key"] = subscriptionKey; HttpWebResponse response = (HttpWebResponse)request.GetResponseAsync().Result; string json = new StreamReader(response.GetResponseStream()).ReadToEnd();
Arama sonucu nesnesini oluşturun ve Bing HTTP üst bilgilerini ayıklayın. Ardından döndür.
searchResult
// Create the result object for return var searchResult = new SearchResult() { jsonResult = json, relevantHeaders = new Dictionary<String, String>() }; // Extract Bing HTTP headers foreach (String header in response.Headers) { if (header.StartsWith("BingAPIs-") || header.StartsWith("X-MSEdge-")) searchResult.relevantHeaders[header] = response.Headers[header]; } return searchResult;
Yanıtı işleme ve görüntüleme
Ana yöntemde
BingImageSearch()
çağrısı yapın ve döndürülen yanıtı depolayın. Ardından JSON'un seri durumdan çıkararak nesnesini oluşturun.SearchResult result = BingImageSearch(searchTerm); //deserialize the JSON response from the Bing Image Search API dynamic jsonObj = Newtonsoft.Json.JsonConvert.DeserializeObject(result.jsonResult);
jsonObj
içinden ilk döndürülen görüntüyü alın ve görüntünün URL’sini ve başlığı yazdırın.var firstJsonObj = jsonObj["value"][0]; Console.WriteLine("Title for the first image result: " + firstJsonObj["name"]+"\n"); //After running the application, copy the output URL into a browser to see the image. Console.WriteLine("URL for the first image result: " + firstJsonObj["webSearchUrl"]+"\n");
Örnek JSON yanıtı
Bing Resim Arama API'sinden yanıtlar JSON olarak döndürülür. Bu örnek yanıt, tek bir sonuç göstermek için kısaltıldı.
{
"_type":"Images",
"instrumentation":{
"_type":"ResponseInstrumentation"
},
"readLink":"images\/search?q=tropical ocean",
"webSearchUrl":"https:\/\/www.bing.com\/images\/search?q=tropical ocean&FORM=OIIARP",
"totalEstimatedMatches":842,
"nextOffset":47,
"value":[
{
"webSearchUrl":"https:\/\/www.bing.com\/images\/search?view=detailv2&FORM=OIIRPO&q=tropical+ocean&id=8607ACDACB243BDEA7E1EF78127DA931E680E3A5&simid=608027248313960152",
"name":"My Life in the Ocean | The greatest WordPress.com site in ...",
"thumbnailUrl":"https:\/\/tse3.mm.bing.net\/th?id=OIP.fmwSKKmKpmZtJiBDps1kLAHaEo&pid=Api",
"datePublished":"2017-11-03T08:51:00.0000000Z",
"contentUrl":"https:\/\/mylifeintheocean.files.wordpress.com\/2012\/11\/tropical-ocean-wallpaper-1920x12003.jpg",
"hostPageUrl":"https:\/\/mylifeintheocean.wordpress.com\/",
"contentSize":"897388 B",
"encodingFormat":"jpeg",
"hostPageDisplayUrl":"https:\/\/mylifeintheocean.wordpress.com",
"width":1920,
"height":1200,
"thumbnail":{
"width":474,
"height":296
},
"imageInsightsToken":"ccid_fmwSKKmK*mid_8607ACDACB243BDEA7E1EF78127DA931E680E3A5*simid_608027248313960152*thid_OIP.fmwSKKmKpmZtJiBDps1kLAHaEo",
"insightsMetadata":{
"recipeSourcesCount":0,
"bestRepresentativeQuery":{
"text":"Tropical Beaches Desktop Wallpaper",
"displayText":"Tropical Beaches Desktop Wallpaper",
"webSearchUrl":"https:\/\/www.bing.com\/images\/search?q=Tropical+Beaches+Desktop+Wallpaper&id=8607ACDACB243BDEA7E1EF78127DA931E680E3A5&FORM=IDBQDM"
},
"pagesIncludingCount":115,
"availableSizesCount":44
},
"imageId":"8607ACDACB243BDEA7E1EF78127DA931E680E3A5",
"accentColor":"0050B2"
}]
}