Rychlý start: Hledání videí pomocí rozhraní REST API Bingu pro vyhledávání videí a jazyka C#
Upozornění
30. října 2020 se rozhraní API Vyhledávání Bingu přesunula ze služeb Azure AI na Vyhledávání Bingu Services. Tato dokumentace je k dispozici pouze pro referenci. Aktualizovanou dokumentaci najdete v dokumentaci k rozhraní API Bingu pro vyhledávání. Pokyny k vytváření nových prostředků Azure pro vyhledávání Bingu najdete v tématu Vytvoření prostředku Vyhledávání Bingu prostřednictvím Azure Marketplace.
Pomocí tohoto rychlého startu můžete poprvé volat rozhraní API Bingu pro vyhledávání videí. Tato jednoduchá aplikace V jazyce C# odešle do rozhraní API dotaz HTTP pro vyhledávání videí a zobrazí odpověď JSON. I když je tato aplikace napsaná v jazyce C#, rozhraní API je webová služba RESTful kompatibilní s většinou programovacích jazyků.
Zdrojový kód pro tuto ukázku je k dispozici na GitHubu s dalším zpracováním chyb, funkcemi a poznámkami ke kódu.
Požadavky
Budete muset nastavit počítač tak, aby spouštět .NET Core. Pokyny k instalaci najdete na stránce pro soubory ke stažení pro .NET Core . Tuto aplikaci můžete spustit v systému Windows, Linux, macOS nebo v kontejneru Dockeru. Budete si muset nainstalovat oblíbený editor kódu. Následující popisy používají Editor Visual Studio Code, což je open source editor pro různé platformy. Můžete ale použít jakýkoli nástroj, který vám vyhovuje.
Vytvoření prostředku Azure
Začněte používat rozhraní API Bingu pro vyhledávání videí vytvořením jednoho z následujících prostředků Azure:
prostředek Vyhledávání Bingu v7
- K dispozici prostřednictvím Azure Portal, dokud prostředek neodstraníte.
- K vyzkoušení služby použijte bezplatnou cenovou úroveň a později ji upgradujte na placenou úroveň pro produkční prostředí.
- K dispozici prostřednictvím Azure Portal, dokud prostředek neodstraníte.
- Pro své aplikace použijte stejný klíč a koncový bod napříč několika službami Azure AI.
Vytvoření a inicializace projektu
Prvním krokem je vytvoření nové aplikace. Otevřete příkazový řádek a vytvořte pro svou aplikaci nový adresář. Nastavte ho jako aktuální adresář. V okně konzoly zadejte následující příkaz:
dotnet new console --name VideoSearchClient
Na začátek metody Main budete muset přidat následující using
direktivu, aby kompilátor jazyka C# rozpoznal typy Task a JSON:
using System;
using System.Net.Http;
using System.Threading.Tasks;
using System.Collections.Generic;
using System.Text.Json;
using System.Text.Json.Serialization;
Přidejte proměnné pro klíč předplatného, koncový bod a hledaný termín.
uriBase
Jako hodnotu můžete použít globální koncový bod v následujícím kódu nebo vlastní koncový bod subdomény zobrazený v Azure Portal vašeho prostředku.
// 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";
Dále aktualizujte metodu Main, abychom mohli používat asynchronní metody. Přidejte modifikátor async a změňte návratový typ na Úkol.
static async Task Main(string[] args)
{
}
Teď máte program, který nedělá nic, ale dělá to asynchronně. Pojďme ho vylepšit.
Vytvoření datové struktury pro uložení odpovědi rozhraní API Bingu pro vyhledávání videí
SearchResult
Definujte třídu aVideo
, která bude obsahovat výsledky hledání videa. Další vlastnosti můžete přidat později, až budete potřebovat další pole z výsledku JSON.
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; }
}
Vytvoření a zpracování žádosti o vyhledávání videí
K provedení volání rozhraní API používáme HttpClient
. Nejprve musíme přidat hlavičku Ocp-Apim-Subscription-Key
a přístupový klíč.
using var client = new HttpClient();
client.BaseAddress = new Uri(_uriBase);
client.DefaultRequestHeaders.Add("Ocp-Apim-Subscription-Key", _accessKey);
Sestavte URI pro žádost o vyhledávání. Než hledaný termín _searchTerm
přidáte do řetězce, naformátujte ho.
var response = await client.GetAsync($"?q={Uri.EscapeDataString(_searchTerm)}");
Zpracování výsledku
Když byla odpověď úspěšná, můžeme zpracovat data JSON. Řetězec JSON deserializujeme do dříve SearchResult
vytvořeného řetězce. Smyčka k výsledku (pokud existuje) a výsledek se vytiskne do konzoly.
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();
}
}
Příklad odpovědi JSON
Úspěšná odpověď se vrátí ve formátu JSON, jak je znázorněno v následujícím příkladu:
{
"_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=..."
}
},
. . .
]
}