Rövid útmutató: Videók keresése a Bing Video Search REST API és a C használatával#
Figyelmeztetés
2020. október 30-án a Bing Search API-k átkerültek az Azure AI-szolgáltatásokból a Bing Search-szolgáltatásokba. Ez a dokumentáció csak referenciaként érhető el. A frissített dokumentációt a Bing search API dokumentációjában találja. Az új Azure-erőforrások Bing-kereséshez való létrehozásával kapcsolatos utasításokért lásd: Bing Search-erőforrás létrehozása a Azure Marketplace keresztül.
Ezzel a rövid útmutatóval kezdeményezheti első hívását a Bing Video Search API-hoz. Ez az egyszerű C#-alkalmazás http-videokeresési lekérdezést küld az API-nak, és megjeleníti a JSON-választ. Bár ez az alkalmazás C# nyelven van megírva, az API egy RESTful webszolgáltatás, amely a legtöbb programozási nyelvvel kompatibilis.
A minta forráskódja további hibakezeléssel, funkciókkal és kódjegyzetekkel érhető el a GitHubon .
Előfeltételek
Be kell állítania a gépet a .NET Core futtatásához. A telepítési utasításokat a .NET Core Letöltések oldalán találja. Ezt az alkalmazást Windows, Linux, macOS vagy Docker-tárolóban futtathatja. Telepítenie kell a kedvenc kódszerkesztőt. Az alábbi leírások a Visual Studio Code-ot használják, amely egy nyílt forráskód, platformfüggetlen szerkesztő. Azonban bármilyen eszközt használhat, amelyet kényelmesen használhat.
Azure-erőforrás létrehozása
Kezdje el használni a Bing Video Search API-t az alábbi Azure-erőforrások egyikének létrehozásával:
- A Azure Portal keresztül érhető el, amíg el nem törli az erőforrást.
- Az ingyenes tarifacsomag használatával próbálja ki a szolgáltatást, és frissítsen később egy fizetős tarifacsomagra éles környezetben.
- A Azure Portal keresztül érhető el, amíg el nem törli az erőforrást.
- Használja ugyanazt a kulcsot és végpontot az alkalmazásokhoz több Azure AI-szolgáltatásban.
Projekt létrehozása és inicializálása
Az első lépés egy új alkalmazás létrehozása. Nyisson meg egy parancssort, és hozzon létre egy új könyvtárat az alkalmazáshoz. Állítsa be az aktuális könyvtárat. Írja be a következő parancsot egy konzolablakba:
dotnet new console --name VideoSearchClient
A Main metódus tetején hozzá kell adnia a következő using
direktívát, hogy a C#-fordító felismerje a feladat- és JSON-típusokat:
using System;
using System.Net.Http;
using System.Threading.Tasks;
using System.Collections.Generic;
using System.Text.Json;
using System.Text.Json.Serialization;
Adjon hozzá változókat az előfizetési kulcshoz, a végponthoz és a keresési kifejezéshez. uriBase
Az értékhez használhatja a globális végpontot a következő kódban, vagy használhatja az erőforráshoz tartozó Azure Portal megjelenített egyéni altartományvégpontot.
// 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";
Ezután frissítse a Main metódust, hogy használhassuk az Async metódusokat. Adja hozzá az aszinkron módosítót, és módosítsa a visszatérési típust Tevékenység értékre.
static async Task Main(string[] args)
{
}
Most már van egy programja, amely nem csinál semmit, de aszinkron módon teszi. Javítsunk rajta.
Adatstruktúra létrehozása a Bing Video Search API-válasz tárolásához
Definiáljon egy és Video
osztályt SearchResult
a videókeresési eredményekhez. Később további tulajdonságokat is hozzáadhat, ha más mezőkre van szüksége a JSON-eredményből.
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; }
}
Videókeresési kérés létrehozása és kezelése
Az API-ra irányuló hívás végrehajtására használjuk HttpClient
. Először hozzá kell adnunk a fejlécet Ocp-Apim-Subscription-Key
és a hozzáférési kulcsot.
using var client = new HttpClient();
client.BaseAddress = new Uri(_uriBase);
client.DefaultRequestHeaders.Add("Ocp-Apim-Subscription-Key", _accessKey);
Hozza létre a keresési kérés URI-ját. Formázza a keresési kifejezést _searchTerm
, mielőtt hozzáfűzi a sztringhez.
var response = await client.GetAsync($"?q={Uri.EscapeDataString(_searchTerm)}");
Az eredmény feldolgozása
Ha a válasz sikeres volt, feldolgozhatjuk a JSON-adatokat. A korábban létrehozott JSON-sztringet SearchResult
deszerializáljuk. Hurkot az eredményhez (ha van ilyen), és nyomtassa ki az eredményt a konzolon.
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élda JSON-válaszra
A rendszer JSON formátumban ad vissza egy sikeres választ a következő példában látható módon:
{
"_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=..."
}
},
. . .
]
}