Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Предупреждение
30 октября 2020 г. API поиска Bing перемещены из служб ИИ Azure в службы поиска Bing. Эта документация предоставляется только для справки. Для получения обновленной документации см. документацию по API поиска Bing. Инструкции по созданию ресурсов Azure для поиска Bing см. в статье "Создание ресурса поиска Bing" с помощью Azure Marketplace.
Используйте это краткое руководство, чтобы выполнить первый вызов API Bing для поиска видео. Это простое приложение C# отправляет запрос поиска видео HTTP в API и отображает ответ JSON. Хотя это приложение написано на C#, API — это веб-служба RESTful, совместимая с большинством языков программирования.
Исходный код для этого примера доступен на сайте GitHub с дополнительной обработкой ошибок, функциями и заметками кода.
Предпосылки
Вам потребуется настроить компьютер для запуска .NET Core. Инструкции по установке можно найти на странице загрузки .NET Core . Это приложение можно запустить в Windows, Linux, macOS или в контейнере Docker. Вам потребуется установить любимый редактор кода. В приведенных ниже описаниях используется Visual Studio Code, который является открытым исходным кодом, кроссплатформенным редактором. Однако вы можете использовать все инструменты, с которыми вы комфортно.
Создание ресурса Azure
Начните использовать API поиска видео Bing, создав один из следующих ресурсов Azure:
- Доступен на портале Azure до тех пор, пока вы не удалите ресурс.
- Используйте бесплатный тарифный план, чтобы попробовать услугу, и перейдите на платный тариф для использования в работе.
- Доступен на портале Azure до тех пор, пока вы не удалите ресурс.
- Используйте один и тот же ключ и конечную точку для приложений в нескольких службах ИИ Azure.
Создание и инициализация проекта
Первым шагом является создание нового приложения. Откройте командную строку и создайте новый каталог для приложения. Сделайте этот каталог текущим. Введите следующую команду в окне консоли:
dotnet new console --name VideoSearchClient
В верхней части метода Main необходимо добавить следующую using
директиву, чтобы компилятор C# распознал типы задач и JSON:
using System;
using System.Net.Http;
using System.Threading.Tasks;
using System.Collections.Generic;
using System.Text.Json;
using System.Text.Json.Serialization;
Добавьте переменные для ключа подписки, конечной точки и термина поиска.
uriBase
Для значения можно использовать глобальную конечную точку в следующем коде или использовать пользовательскую конечную точку поддомена, отображаемую на портале Azure для ресурса.
// 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";
Затем обновите метод Main, чтобы использовать асинхронные методы. Добавьте асинхронный модификатор и измените возвращаемый тип на Task.
static async Task Main(string[] args)
{
}
Теперь у вас есть программа, которая ничего не делает, но делает это асинхронно. Давайте улучшаем его.
Создание структуры данных для хранения ответа API поиска видео Bing
Определите SearchResult
и Video
класс, чтобы содержать результаты поиска видео. Вы можете добавить дополнительные свойства позже, если вам нужны другие поля из результата 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; }
}
Создание и обработка запроса поиска видео
Мы используем HttpClient
для вызова API. Сначала необходимо добавить заголовок Ocp-Apim-Subscription-Key
и ключ доступа.
using var client = new HttpClient();
client.BaseAddress = new Uri(_uriBase);
client.DefaultRequestHeaders.Add("Ocp-Apim-Subscription-Key", _accessKey);
Создайте универсальный код ресурса (URI) для запроса поиска. Отформатируйте термин _searchTerm
поиска перед добавлением его в строку.
var response = await client.GetAsync($"?q={Uri.EscapeDataString(_searchTerm)}");
Обработка результата
После успешного выполнения ответа можно обработать данные JSON. Мы десериализуем строку JSON в наш SearchResult
, созданный ранее. Создайте цикл для получения результата (если есть) и выведите результат на консоль.
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();
}
}
Пример ответа JSON
Успешный ответ возвращается в формате JSON, как показано в следующем примере:
{
"_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=..."
}
},
. . .
]
}