Início Rápido: Procurar vídeos com a API REST da Pesquisa de Vídeos do Bing e C#
Aviso
A 30 de outubro de 2020, as APIs de Pesquisa do Bing passaram dos serviços de IA do Azure para os Serviços Pesquisa do Bing. Esta documentação é fornecida apenas para referência. Para obter documentação atualizada, veja a documentação da API de pesquisa do Bing. Para obter instruções sobre como criar novos recursos do Azure para a pesquisa do Bing, veja Criar um recurso de Pesquisa do Bing através do Azure Marketplace.
Utilize este início rápido para efetuar a sua primeira chamada à API de Pesquisa de Vídeos do Bing. Esta aplicação C# simples envia uma consulta de pesquisa de vídeo HTTP para a API e apresenta a resposta JSON. Embora esta aplicação esteja escrita em C#, a API é um serviço Web RESTful compatível com a maioria das linguagens de programação.
O código fonte deste exemplo está disponível no GitHub com processamento de erros adicionais, funcionalidades e anotações de código.
Pré-requisitos
Terá de configurar o computador para executar o .NET Core. Pode encontrar as instruções de instalação na página Transferências do .NET Core . Pode executar esta aplicação no Windows, Linux, macOS ou num contentor do Docker. Terá de instalar o seu editor de código favorito. As descrições abaixo utilizam o Visual Studio Code, que é um editor de várias plataformas open source. No entanto, pode utilizar as ferramentas com que se sentir confortável.
Criar um recurso do Azure
Comece a utilizar a API de Pesquisa de Vídeos do Bing ao criar um dos seguintes recursos do Azure:
- Disponível através do portal do Azure até eliminar o recurso.
- Utilize o escalão de preço gratuito para experimentar o serviço e atualize mais tarde para um escalão pago para produção.
- Disponível através do portal do Azure até eliminar o recurso.
- Utilize a mesma chave e ponto final para as suas aplicações, em vários serviços de IA do Azure.
Criar e inicializar um projeto
O primeiro passo é criar uma nova aplicação. Abra uma linha de comandos e crie um novo diretório para a sua aplicação. Torne-o no diretório atual. Introduza o seguinte comando numa janela da consola:
dotnet new console --name VideoSearchClient
Terá de adicionar a seguinte using
diretiva na parte superior do método Principal para que o compilador C# reconheça os tipos de Tarefa e JSON:
using System;
using System.Net.Http;
using System.Threading.Tasks;
using System.Collections.Generic;
using System.Text.Json;
using System.Text.Json.Serialization;
Adicione variáveis para a sua chave de subscrição, ponto final e termo de pesquisa. Para o uriBase
valor, pode utilizar o ponto final global no seguinte código ou utilizar o ponto final de subdomínio personalizado apresentado no portal do Azure do recurso.
// 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";
Em seguida, atualize o método Principal para que possamos utilizar métodos Assíncrono. Adicione o modificador assíncrono e altere o tipo de retorno para Tarefa.
static async Task Main(string[] args)
{
}
Agora, tens um programa que não faz nada a não ser fazê-lo de forma assíncrona. Vamos melhorá-lo.
Criar uma estrutura de dados para conter a resposta da API de Pesquisa de Vídeos do Bing
Defina uma SearchResult
classe e Video
para conter os resultados da pesquisa de vídeo. Pode adicionar mais propriedades mais tarde quando precisar de outros campos do resultado 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; }
}
Criar e processar um pedido de pesquisa de vídeo
HttpClient
Utilizamos para efetuar a chamada à API. Primeiro, temos de adicionar o cabeçalho Ocp-Apim-Subscription-Key
e a chave de acesso.
using var client = new HttpClient();
client.BaseAddress = new Uri(_uriBase);
client.DefaultRequestHeaders.Add("Ocp-Apim-Subscription-Key", _accessKey);
Construa o URI do pedido de pesquisa. Formate o termo _searchTerm
de pesquisa antes de o acrescentar à cadeia.
var response = await client.GetAsync($"?q={Uri.EscapeDataString(_searchTerm)}");
Processar o resultado
Quando a resposta foi bem-sucedida, podemos processar os dados JSON. Analizamos a cadeia JSON na nossa SearchResult
que tínhamos criado anteriormente. Faça um ciclo para o resultado (se existir) e imprima o resultado na consola do .
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();
}
}
Resposta JSON de exemplo
É devolvida uma resposta com êxito em JSON, tal como é apresentado no exemplo seguinte:
{
"_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=..."
}
},
. . .
]
}