Quickstart: Procure vídeos utilizando a API e C de pesquisa de vídeo Bing

Aviso

As APIs de Pesquisa de Bing estão a mover-se dos Serviços Cognitivos para os Serviços de Pesquisa Bing. A partir de 30 de outubro de 2020, quaisquer novos casos de Bing Search devem ser adquir-se na sequência do processo aquidocumentado. Bing Search APIs aforados usando Serviços Cognitivos será suportado durante os próximos três anos ou até o final do seu Contrato de Empresa, o que acontecer primeiro. Para obter instruções de migração, consulte os Serviços de Busca Bing.

Use este quickstart para fazer a sua primeira chamada para a API de Pesquisa de Vídeo Bing. Esta simples aplicação C# envia uma consulta de pesquisa de vídeo HTTP para a API e exibe 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 desta amostra está disponível no GitHub com tratamento adicional de erros, funcionalidades e anotações de código.

Pré-requisitos

Terá de configurar a sua máquina para executar o núcleo .NET. Pode encontrar as instruções de instalação na página .NET Core Downloads. Pode executar esta aplicação no Windows, Linux, macOS ou num recipiente Docker. Terá de instalar o seu editor de código favorito. As descrições abaixo utilizam o Visual Studio Code,que é um editor de plataforma cross- de código aberto. No entanto, pode usar todas as ferramentas com as quais se sinta confortável.

Criar um recurso Azure

Comece a utilizar a API de Pesquisa de Vídeo Bing criando um dos seguintes recursos Azure:

Bing Search v7 recurso

  • Disponível através do portal Azure até eliminar o recurso.
  • Use o nível de preços gratuitos para experimentar o serviço e atualize mais tarde para um nível pago para produção.

Recurso multi-serviço

  • Disponível através do portal Azure até eliminar o recurso.
  • Use a mesma chave e ponto final para as suas aplicações, através de vários Serviços Cognitivos.

Criar e inicializar um projeto

O primeiro passo é criar uma nova aplicação. Abra um pedido de comando e crie um novo diretório para a sua aplicação. Que seja o diretório atual. Introduza o seguinte comando numa janela da consola:

dotnet new console --name VideoSearchClient

Terá de adicionar a seguinte diretiva no topo do seu método Principal para using 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. Pelo uriBase valor, pode utilizar o ponto final global no seguinte código ou utilizar o ponto final personalizado subdomínio exibido no portal Azure para o seu 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 usar métodos Async. Adicione o modificador assínc e altere o tipo de retorno para Task.

static async Task Main(string[] args)
{
    
}

Agora, tens um programa que não faz nada a não ser faz assíncronos. Vamos melhorá-lo.

Criar uma estrutura de dados para manter a resposta da API de pesquisa de vídeo Bing

Defina uma SearchResult classe para conter os Video resultados da pesquisa de vídeo. Pode adicionar mais propriedades mais tarde quando precisar de outros campos a partir do resultado do 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 lidar com um pedido de pesquisa de vídeo

Usamos HttpClient para fazer a chamada para a 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. Formatar o termo de pesquisa _searchTerm antes de apdicê-lo à cadeia.

var response = await client.GetAsync($"?q={Uri.EscapeDataString(_searchTerm)}");

Processar o resultado

Quando a resposta foi bem sucedida, podemos processar os dados do JSON. Deserizamos a corda JSON na nossa SearchResult que tínhamos criado antes. Loop para o resultado (se houver) e imprima o resultado na consola.

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();
    }
}

Exemplo JSON resposta

É 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=..."
            }
        },
        . . .
    ]
}

Passos seguintes

Ver também

O que é a API de Pesquisa de Vídeos do Bing?