Hızlı Başlangıç: Bing Video Arama REST API'sini ve C'yi kullanarak video 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 Video Arama API'sine ilk çağrınızı yapmak için bu hızlı başlangıcı kullanın. Bu basit C# uygulaması API'ye bir HTTP video arama sorgusu gönderir ve JSON yanıtını görüntüler. Bu uygulama C# dilinde yazılmış olsa da, API çoğu programlama diliyle uyumlu bir RESTful Web hizmetidir.
Bu örneğin kaynak kodu, ek hata işleme, özellikler ve kod ek açıklamaları ile GitHub'da kullanılabilir.
Önkoşullar
Makinenizi .NET Core çalıştıracak şekilde ayarlamanız gerekir. Yükleme yönergelerini .NET Core İndirmeleri sayfasında bulabilirsiniz. Bu uygulamayı Windows, Linux, macOS veya Docker kapsayıcısında çalıştırabilirsiniz. Sık kullandığınız kod düzenleyicisini yüklemeniz gerekir. Aşağıdaki açıklamalarda açık kaynak, platformlar arası düzenleyici olan Visual Studio Code kullanılır. Ancak, rahat ettiğiniz araçları kullanabilirsiniz.
Azure kaynağı oluşturma
Aşağıdaki Azure kaynaklarından birini oluşturarak Bing Video Arama API'sini kullanmaya başlayın:
- Kaynağı silene kadar Azure portal aracılığıyla kullanılabilir.
- Hizmeti denemek için ücretsiz fiyatlandırma katmanını kullanın ve daha sonra üretim için ücretli bir katmana yükseltin.
- Kaynağı silene kadar Azure portal aracılığıyla kullanılabilir.
- Birden çok Azure AI hizmeti genelinde uygulamalarınız için aynı anahtarı ve uç noktayı kullanın.
Proje oluşturma ve başlatma
İlk adım yeni bir uygulama oluşturmaktır. Bir komut istemi açın ve uygulamanız için yeni bir dizin oluşturun. Bunu geçerli dizin yapın. Konsol penceresine aşağıdaki komutu girin:
dotnet new console --name VideoSearchClient
C# derleyicisinin Görev ve JSON türlerini tanıması için Main yönteminizin en üstüne aşağıdaki using
yönergeyi eklemeniz gerekir:
using System;
using System.Net.Http;
using System.Threading.Tasks;
using System.Collections.Generic;
using System.Text.Json;
using System.Text.Json.Serialization;
Abonelik anahtarınız, uç noktanız ve arama teriminiz için değişkenler ekleyin. Değer içinuriBase
, 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.
// Replace the accessKey string value with your valid access key.
const string _accessKey = "enter your key here";
// Or use the custom subdomain endpoint displayed in the Azure portal for your resource.
const string _uriBase = "https://api.cognitive.microsoft.com/bing/v7.0/videos/search";
const string _searchTerm = "kittens";
Ardından, Zaman Uyumsuz yöntemleri kullanabilmek için Main yöntemini güncelleştirin. Zaman uyumsuz değiştiriciyi ekleyin ve dönüş türünü Görev olarak değiştirin.
static async Task Main(string[] args)
{
}
Şimdi, hiçbir şey yapmaz ancak zaman uyumsuz olarak yapar bir programınız vardır. Şimdi geliştirelim.
Bing Video Arama API'sinin yanıtını tutacak bir veri yapısı oluşturma
Video arama sonuçlarını içerecek bir SearchResult
ve Video
sınıfı tanımlayın. Daha sonra JSON sonucundan başka alanlara ihtiyacınız olduğunda daha fazla özellik ekleyebilirsiniz.
class SearchResult
{
[JsonPropertyName("totalEstimatedMatches")]
public int TotalEstimatedMatches { get; set; }
[JsonPropertyName("value")]
public List<Video> Videos { get; set; }
}
class Video
{
[JsonPropertyName("name")]
public string Name { get; set; }
[JsonPropertyName("description")]
public string Description { get; set; }
[JsonPropertyName("thumbnailUrl")]
public string ThumbnailUrl { get; set; }
[JsonPropertyName("contentUrl")]
public string ContentUrl { get; set; }
}
Video arama isteği oluşturma ve işleme
API çağrısını gerçekleştirmek için kullanırız HttpClient
. İlk olarak üst bilgiyi Ocp-Apim-Subscription-Key
ve erişim anahtarınızı eklemeliyiz.
using var client = new HttpClient();
client.BaseAddress = new Uri(_uriBase);
client.DefaultRequestHeaders.Add("Ocp-Apim-Subscription-Key", _accessKey);
Arama isteği için URI oluşturun. Arama terimini _searchTerm
dizeye eklemeden önce biçimlendirin.
var response = await client.GetAsync($"?q={Uri.EscapeDataString(_searchTerm)}");
Sonucu işleme
Yanıt başarılı olduğunda JSON verilerini işleyebiliriz. Daha önce oluşturduğumuz SearchResult
JSON dizesini seri durumdan çıkarıyoruz. Sonuda (varsa) döngü yapın ve sonucu konsola yazdırın.
if (response.IsSuccessStatusCode)
{
var json = await response.Content.ReadAsStringAsync();
var result = JsonSerializer.Deserialize<SearchResult>(json);
foreach (var video in result.Videos)
{
Console.WriteLine($"Name: {video.Name}");
Console.WriteLine($"ContentUrl: {video.ContentUrl}");
Console.WriteLine();
}
}
Örnek JSON yanıtı
Başarılı yanıt, aşağıdaki örnekte gösterildiği gibi JSON biçiminde döndürülür:
{
"_type": "Videos",
"instrumentation": {},
"readLink": "https://api.cognitive.microsoft.com/api/v7/videos/search?q=kittens",
"webSearchUrl": "https://www.bing.com/videos/search?q=kittens",
"totalEstimatedMatches": 1000,
"value": [
{
"webSearchUrl": "https://www.bing.com/videos/search?q=kittens&view=...",
"name": "Top 10 cute kitten videos compilation",
"description": "HELP HOMELESS ANIMALS AND WIN A PRIZE BY CHOOSING...",
"thumbnailUrl": "https://tse4.mm.bing.net/th?id=OVP.n1aE_Oikl4MtzBb...",
"datePublished": "2014-11-12T22:47:36.0000000",
"publisher": [
{
"name": "Fabrikam"
}
],
"creator": {
"name": "Marcus Appel"
},
"isAccessibleForFree": true,
"contentUrl": "https://www.fabrikam.com/watch?v=8HVWitAW-Qg",
"hostPageUrl": "https://www.fabrikam.com/watch?v=8HVWitAW-Qg",
"encodingFormat": "h264",
"hostPageDisplayUrl": "https://www.fabrikam.com/watch?v=8HVWitAW-Qg",
"width": 480,
"height": 360,
"duration": "PT3M52S",
"motionThumbnailUrl": "https://tse4.mm.bing.net/th?id=OM.j4QyJAENJphdZQ_1501386166&pid=Api",
"embedHtml": "<iframe width=\"1280\" height=\"720\" src=\"https://www.fabrikam.com/embed/8HVWitAW-Qg?autoplay=1\" frameborder=\"0\" allowfullscreen></iframe>",
"allowHttpsEmbed": true,
"viewCount": 7513633,
"thumbnail": {
"width": 300,
"height": 168
},
"videoId": "655D98260D012432848F6558260D012432848F",
"allowMobileEmbed": true,
"isSuperfresh": false
},
. . .
],
"nextOffset": 36,
"queryExpansions": [
{
"text": "Kittens Meowing",
"displayText": "Meowing",
"webSearchUrl": "https://www.bing.com/videos/search?q=Kittens+Meowing...",
"searchLink": "https://api.cognitive.microsoft.com/api/v7/videos/search...",
"thumbnail": {
"thumbnailUrl": "https://tse3.mm.bing.net/th?q=Kittens+Meowing&pid..."
}
},
{
"text": "Funny Kittens",
"displayText": "Funny",
"webSearchUrl": "https://www.bing.com/videos/search?q=Funny+Kittens...",
"searchLink": "https://api.cognitive.microsoft.com/api/v7/videos/search...",
"thumbnail": {
"thumbnailUrl": "https://tse3.mm.bing.net/th?q=Funny+Kittens&..."
}
},
. . .
],
"pivotSuggestions": [
{
"pivot": "kittens",
"suggestions": [
{
"text": "Cat",
"displayText": "Cat",
"webSearchUrl": "https://www.bing.com/videos/search?q=Cat...",
"searchLink": "https://api.cognitive.microsoft.com/api/v7/videos/search?...",
"thumbnail": {
"thumbnailUrl": "https://tse3.mm.bing.net/th?q=Cat&pid=Api..."
}
},
{
"text": "Feral Cat",
"displayText": "Feral Cat",
"webSearchUrl": "https://www.bing.com/videos/search?q=Feral+Cat...",
"searchLink": "https://api.cognitive.microsoft.com/api/v7/videos/search...",
"thumbnail": {
"thumbnailUrl": "https://tse3.mm.bing.net/th?q=Feral+Cat&pid=Api&..."
}
}
]
}
],
"relatedSearches": [
{
"text": "Kittens Being Born",
"displayText": "Kittens Being Born",
"webSearchUrl": "https://www.bing.com/videos/search?q=Kittens+Being+Born...",
"searchLink": "https://api.cognitive.microsoft.com/api/v7/videos/search?...",
"thumbnail": {
"thumbnailUrl": "https://tse1.mm.bing.net/th?q=Kittens+Being+Born&pid=..."
}
},
. . .
]
}