Schnellstart: Suchen nach Videos mithilfe der Bing Video Search-REST-API und C#

Warnung

Am 30. Oktober 2020 wurden die Bing Search-APIs von Azure AI-Diensten zu Bing Search Services verschoben. Diese Dokumentation wird nur zur Referenz bereitgestellt. Eine aktualisierte Dokumentation finden Sie in der Dokumentation zu den Bing-Suche-APIs. Anweisungen zum Erstellen neuer Azure-Ressourcen für die Bing-Suche finden Sie unter Erstellen einer Ressource für die Bing-Suche über Azure Marketplace.

Verwenden Sie diese Schnellstartanleitung, um Ihren ersten Aufruf an die Bing Video Search-API durchzuführen. Diese einfache C#-Anwendung sendet eine HTTP-Videosuchabfrage an die API und zeigt die JSON-Antwort an. Obwohl diese Anwendung in C# geschrieben ist, ist die API ein RESTful-Webdienst, der mit den meisten Programmiersprachen kompatibel ist.

Der Quellcode für dieses Beispiel ist auf GitHub mit zusätzlicher Fehlerbehandlung, zusätzlichen Funktionen und Codeanmerkungen verfügbar.

Voraussetzungen

Sie müssen Ihren Computer so einrichten, dass .NET Core ausgeführt wird. Die Installationsanweisungen finden Sie auf der Seite .NET Core Downloads. Sie können diese Anwendung unter Windows, Linux, macOS oder in einem Docker-Container ausführen. Sie müssen Ihren bevorzugten Code-Editor installieren. In den folgenden Beschreibungen wird Visual Studio Codeverwendet, bei dem es sich um einen plattformübergreifenden Open Source-Editor handelt. Sie können jedoch alle Tools verwenden, mit denen Sie vertraut sind.

Erstellen einer Azure-Ressource

Beginnen Sie mit der Verwendung der Bing Video Search-API, indem Sie eine der folgenden Azure-Ressourcen erstellen:

Ressource für Bing-Suche v7

  • Verfügbar über das Azure-Portal, bis Sie die Ressource löschen.
  • Verwenden Sie das kostenlose Preisniveau, um den Dienst auszuprobieren und später auf eine kostenpflichtige Stufe für die Produktion zu aktualisieren.

Ressource für mehrere Dienste

  • Verfügbar über das Azure-Portal, bis Sie die Ressource löschen.
  • Verwenden Sie denselben Schlüssel und Endpunkt für Ihre Anwendungen in mehreren Azure AI-Diensten.

Erstellen und Initialisieren eines Projekts

Der erste Schritt besteht darin, eine neue Anwendung zu erstellen. Öffnen Sie eine Eingabeaufforderung, und erstellen Sie ein neues Verzeichnis für Ihre Anwendung. Machen Sie das zum aktuellen Verzeichnis. Geben Sie den folgenden Befehl in ein Konsolenfenster ein:

dotnet new console --name VideoSearchClient

Sie müssen die folgende using Direktive oben in der Main-Methode hinzufügen, damit der C#-Compiler die Task- und JSON-Typen erkennt:

using System;
using System.Net.Http;
using System.Threading.Tasks;
using System.Collections.Generic;
using System.Text.Json;
using System.Text.Json.Serialization;

Fügen Sie Variablen für Ihren Abonnementschlüssel, Endpunkt und Suchbegriff hinzu. Für den uriBase Wert können Sie den globalen Endpunkt im folgenden Code verwenden oder den benutzerdefinierten Unterdomänen- Endpunkt verwenden, der im Azure-Portal für Ihre Ressource angezeigt wird.

// 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";

Aktualisieren Sie als Nächstes die Main-Methode, damit wir Async-Methoden verwenden können. Fügen Sie den asynchronen Modifizierer hinzu, und ändern Sie den Rückgabetyp in "Task".

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

Jetzt haben Sie ein Programm, das nichts tut, aber dies asynchron macht. Lassen Sie uns es verbessern.

Erstellen Sie eine Datenstruktur, um die Bing Video Search API-Antwort zu speichern.

Definieren Sie eine SearchResult und Video Klasse, die die Videosuchergebnisse enthalten soll. Sie können später weitere Eigenschaften hinzufügen, wenn Sie andere Felder aus dem JSON-Ergebnis benötigen.

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

Erstellen und Verarbeiten einer Videosuchanforderung

Wir verwenden HttpClient, um den Aufruf der API auszuführen. Zuerst müssen wir die Kopfzeile Ocp-Apim-Subscription-Key und Ihre Zugriffstaste hinzufügen.

using var client = new HttpClient();
client.BaseAddress = new Uri(_uriBase);
client.DefaultRequestHeaders.Add("Ocp-Apim-Subscription-Key", _accessKey);

Erstellen Sie den URI für die Suchanforderung. Formatieren Sie den Suchbegriff _searchTerm, bevor Sie ihn an die Zeichenfolge anfügen.

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

Verarbeiten des Ergebnisses

Wenn die Antwort erfolgreich war, können wir die JSON-Daten verarbeiten. Wir deserialisieren die JSON-Zeichenfolge in unseren SearchResult, den wir zuvor erstellt haben. Schleifen Sie zum Ergebnis (falls vorhanden) und geben Sie das Ergebnis auf der Konsole aus.

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

Beispiel für JSON-Antwort

Eine erfolgreiche Antwort wird in JSON zurückgegeben, wie im folgenden Beispiel gezeigt:

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

Nächste Schritte

Siehe auch

Was ist die Bing Video Search-API?