Aperçu: API de syndication sociale

L'API Social Syndication est une API accessible au public qui permet de créer, de gérer et d'utiliser des syndications pour générer des flux dynamiques (tels que les flux MRSS) à partir d'un catalogue vidéo VideoCloud.

Dans ce document

Documents connexes

Introduction

L'API de configuration de syndication de Brightcove est une API accessible au public qui permet de créer, de gérer et d'utiliser des syndications pour générer des flux dynamiques (tels que des flux MRSS) à partir du catalogue vidéo d'un compte Video Cloud.

Il y a aussi un associé API de flux de syndication qui peut être utilisé pour récupérer un flux associé à une syndication.

Disponibilité

Les API de syndication sont disponibles pour tous les clients de Video Cloud qui ont accès aux API de la plate-forme.

Référence API / URL de base / en-têtes

Les Référence de l'API de configuration contient tous les détails sur les opérations, les champs et les paramètres disponibles.

L'URL de base est :

https://social.api.brightcove.com/v1

Toutes les demandes doivent être authentifiées via un en-tête d'autorisation :

Authorization: Bearer {your_access_token}

Voir la section suivante sur l'authentification pour plus d'informations sur les jetons d'accès.

Pour toute demande qui envoie un corps de demande, vous devez également inclure un Content-Type: application/json entête.

Authentification

L'accès à l'API de configuration nécessite la spécification d'un bearer jeton de la Service OAuth de Brightcove dans la demande Authorization entête. Les différentes méthodes API nécessitent également que l'une des opérations suivantes (selon la méthode consultée) soit spécifiée pour les informations d'identification en question :

  • video-cloud/social/mrss/read
  • video-cloud/social/mrss/write

Ces opérations peuvent être configurées via le Section Authentification API du module d'administration de Studio:

Autorisations de syndication sociale
Autorisations de syndication sociale

Si vous préférez, vous pouvez également créer des identifiants via l'API OAuth :

Ressource de syndication

La ressource de syndication est un objet qui définit comment la syndication sera créée. Voici un exemple de corps de requête pour créer une ressource de syndication :

  {
    "name": "80s music videos syndication",
    "type": "advanced",
    "include_all_content": false,
    "include_filter": "tags:mytag",
    "title": "80s Music Videos",
    "description": "Amateur Tokyo drift!",
    "destination_url": "https://mywebsite.com",
    "keywords": "80s, rock",
    "author": "Rick Astley",
    "category": "Music",
    "album_art_url": "https://my_album_art.jpg",
    "explicit": "no",
    "owner_name": "https://my_album_art.jpg",
    "owner_email": "rick@astley.com",
    "language": "en-us",
    "fetch_sources": true,
    "fetch_digital_master": false,
    "fetch_dynamic_renditions": true,
    "sort": "-created_at",
    "content_type_header": "application/xml"
  }

La réponse ajoutera des champs en lecture seule :

  {
    "id": "7f594cd3-4853-4174-aff3-203c3e99e9c2",
    "name": "80s music videos syndication",
    "type": "advanced",
    "include_all_content": false,
    "include_filter": "tags:mytag",
    "title": "80s Music Videos",
    "description": "Amateur Tokyo drift!",
    "syndication_url": "https://social.feeds.brightcove.com/v1/accounts/9999999999999/mrss/accounts/{account_id}/mrss/syndications/7f594cd3-4853-4174-aff3-203c3e99e9c2/feed",
    "destination_url": "https://mywebsite.com",
    "keywords": "80s, rock",
    "author": "Rick Astley",
    "category": "Music",
    "album_art_url": "https://my_album_art.jpg",
    "explicit": "no",
    "owner_name": "https://my_album_art.jpg",
    "owner_email": "rick@astley.com",
    "language": "en-us",
    "fetch_sources": true,
    "fetch_digital_master": false,
    "fetch_dynamic_renditions": true,
    "sort": "-created_at",
    "content_type_header": "application/xml"
    }
Ressource de syndication
Champ Type Lecture seulement Description
id Chaîne Oui généré lors de la création de la syndication
name Chaîne Non un nom interne pour cette syndication - requis pour les requêtes POST
content_type_header Chaîne Non Si défini, remplace l'en-tête Content-Type renvoyé par le serveur de flux pour le flux de cette syndication. Sinon, le flux utilise par défaut une valeur d'en-tête spécifique au type de syndication
include_all_content Booléen Non Si vrai, toutes les vidéos du catalogue sont incluses dans cette syndication
include_filter Chaîne Non

Doit être spécifié si include_all_content est false. Valeur est une chaîne CMS API de recherche utilisant la syntaxe de recherche vidéo de l'API CMS v2. Toutes les règles de syntaxe s'appliquent - la seule différence est que la chaîne de recherche est saisie comme include_filter valeur plutôt qu'un ?query= param.

Lorsque vous utilisez des balises en tant que paramètre dans l' include_filter objet, si les balises contiennent des caractères spéciaux au début, la syntaxe de cette instance doit être la suivante :

"include_filter": "tags:\"<special-character>tagName\""

type Chaîne Non Le type de flux qui sera généré. Le type universel permet de générer des flux personnalisés par un modèle de flux téléchargé. Valeurs valides : advanced , google , iphone , ipad , mp4 , itunes , roku , source , universal. Obligatoire pour les requêtes POST
title Chaîne Non Le titre de ce flux. Ceci est inclus à l'intérieur de la balise <channel> pour les types de flux applicables
description Chaîne Non La description de ce flux. Ceci est inclus à l'intérieur de la balise <channel> pour les types de flux applicables
syndication_url Chaîne Oui L'URL du flux MRSS de cette syndication
destination_url Chaîne Non L'URL à inclure dans la balise <channel> pour les types de flux applicables
keywords Chaîne Non liste délimitée par des virgules, utilisée uniquement pour iTunes et (potentiellement) les flux universels
author Chaîne Non utilisé uniquement pour itunes et (potentiellement) les flux universels
owner_name Chaîne Non utilisé uniquement pour itunes et (potentiellement) les flux universels
language Chaîne Non utilisé uniquement pour itunes et (potentiellement) les flux universels - code de langue à deux lettres en minuscules, tel que "en"
owner_email Chaîne Non utilisé uniquement pour itunes et (potentiellement) les flux universels
category Chaîne Non uniquement utilisé pour itunes et (potentiellement) les flux universels. Pour spécifier une catégorie avec une sous-catégorie, séparez-les par deux points (:) - par exemple : "Business:Business News". "category": "Music"
album_art_url Chaîne Non URL de l'image, utilisée uniquement pour iTunes et (potentiellement) les flux universels
fetch_sources Booléen Non Pour les modèles universels, s'il faut récupérer les métadonnées de la source vidéo - si le modèle n'a pas besoin de ces métadonnées, les performances peuvent être améliorées en spécifiant false ; peut être vide si aucune source utilisable n'existe
fetch_digital_master Booléen Non Pour les modèles universels, s'il faut récupérer les métadonnées du master numérique vidéo - si le modèle n'a pas besoin de ces métadonnées, les performances peuvent être améliorées en spécifiant false ; peut être vide s'il n'existe pas de master numérique
fetch_dynamic_renditions Booléen Non Pour les modèles universels, s'il faut récupérer les métadonnées de rendu dynamique de la vidéo - si le modèle n'a pas besoin de ces métadonnées, les performances peuvent être améliorées en spécifiant false
sort Chaîne Non Un spécificateur de tri vidéo CMS indiquant l'ordre de retour des résultats du flux souhaité. Valeurs prises en charge par CMS telles que name , reference_id , created_at , published_at , updated_at , schedule.starts_at , schedule.ends_at , state , plays_total , et plays_trailing_week peut être spécifié. Pour trier par ordre décroissant, faites précéder la valeur d'un signe moins (-), c'est-à-dire -created_at , spécifié, le flux sera trié par le plus récent updated_at date par défaut.

Voir Syntaxe de recherche vidéo de l'API CMS v2 pour plus de détails sur le include_filter biens.. Toutes les règles de syntaxe de recherche s'appliquent - la seule différence est que la chaîne de recherche est saisie comme include_filter valeur plutôt qu'un ?query= param.

Opérations

Consultez la référence API pour plus de détails sur les opérations disponibles :

Les actions suivantes sont prises en charge :

Messages d'erreur

Si une requête API échoue, un message d'erreur sera renvoyé. Les réponses d'erreur ressembleront à ce qui suit :

  [
    {
      "error_code" : "Application error code 1",
      "message" : "Application error message 1"
    }, {
      "error_code" : "Application error code 2",
      "message" : "Application error message 2"
    }
  ]

Créer une syndication

Méthode: POST

Point final : /accounts/{account_id}/mrss/syndications

Exemple de corps de requête :

  {
    "name": "my mp4 feed",
    "type": "mp4"
  }

Notez que le name et type les champs sont obligatoires. D'autres sont facultatifs.

Mettre à jour une syndication

Méthode: PATCH

Point final : /accounts/{account_id}/mrss/syndications/{syndication_id}

Exemple de corps de requête :

  {
    "name": "my new name"
  }

Notez que le corps de la requête pour les requêtes PATCH doit ne pas inclure les champs (type , id et syndication_url).

Supprimer une syndication

Méthode: DELETE

Point final : /accounts/{account_id}/mrss/syndications/{syndication_id}

Obtenez toutes les syndications pour un compte

Méthode: GET

Point final : /accounts/{account_id}/mrss/syndications

Obtenez une syndication spécifique

Méthode: GET

Point final : /accounts/{account_id}/mrss/syndications/{syndication_id}

Définir le modèle pour une syndication universelle

Méthode: PUT

Point final : /accounts/{account_id}/mrss/syndications/{syndication_id}/template

Exemple de corps de requête :

  <feed header>My Feed Header</feed header>
  

Le modèle ci-dessus générerait un flux similaire à :

  <feed header>My Feed Header</feed header>
    <item>
      <title>Title for Video 1</title>
      <video_info>Description for Video 1</video_info>
    </item>
    <item>
      <title>Title for Video 2</title>
      <video_info>Description for Video 2</video_info>
    </item>

Obtenez le modèle pour une syndication universelle

Méthode: GET

Point final : /accounts/{account_id}/mrss/syndications/{syndication_id}/template

Obtenir le flux associé à une syndication

L'URL du flux peut être obtenue auprès de la syndication syndication_url champ, ou construit manuellement. Notez que le API de flux de syndication peut également être utilisé pour récupérer un flux sans authentification.

Méthode: GET

Point final : /accounts/{account_id}/mrss/syndications/{syndication_id}/feed

Langage de modèle universel

Les syndications universelles permettent de fusionner les données du catalogue avec un modèle personnalisé pour générer tout type de flux souhaité. Le langage de modèle pris en charge est Liquide. Les flux pour les types de syndication par défaut sont générés à l'aide des mêmes types de modèles. Vous pouvez voir le modèles fournis à titre d'exemples pour vous aider à créer des modèles personnalisés si vous en avez besoin.

Les sections ci-dessous identifient les propriétés de syndication, d'actif, de source et de master numérique que vous pouvez utiliser, ainsi qu'une extension à Liquid ajoutée pour plus de commodité.

Pour voir tous les champs de métadonnées vidéo Video Cloud avec des descriptions, allez dans le Référence des champs vidéo de l'API CMS.

Propriétés de niveau supérieur

Dérivé des champs de syndication

  • album_art_url
  • author
  • category
  • description
  • destination_url
  • explicit
  • keywords
  • name
  • owner_name
  • owner_email
  • subtitle
  • syndication_id
  • syndication_url
  • title

Identifiant de compte Video Cloud

  • account_id

Préfixe de l'URL de la page du lecteur par défaut de VideoCloud

Utilisez comme ceci :

  <media:player url="//default_default/index.html?videoId=">
  • player_url

URL de la page suivante du flux

  • next_page

Collection d'éléments vidéo extraits du catalogue (voir ci-dessous pour plus de détails)

  • assets

Propriétés de l'actif

Les ressources de la collection d'éléments sont dérivées des ressources vidéo renvoyées par la méthode d'API CMS Get Videos, et toutes les mêmes propriétés sont prises en charge, y compris, mais sans s'y limiter :

  • created_at
  • description
  • duration
  • id
  • images
  • images.thumbnail
  • images.poster
  • long_description
  • name
  • original_filename
  • published_at
  • schedule
  • state
  • tags
  • text_tracks
  • updated_at

Les ressources d'actif prennent également en charge les propriétés suivantes :

  • sources(collection de sources pour la vidéo - voir la section suivante pour les propriétés des sources)
  • digital_master(sera vide si aucun master numérique n'existe - voir ci-dessous pour les propriétés du master numérique)
  • best_mp4_source(la source MP4 de la plus haute qualité - peut être vide s'il n'y a pas de sources MP4. Les propriétés seront les mêmes que les éléments retournés dans le sources)
  • hls_source(renvoie la source HLS - sera vide s'il n'y en a pas)
  • best_dynamic_rendition_quality(renvoie la qualité vidéo du rendu dynamique de la vidéo avec la plus grande taille d'image, si des métadonnées de rendu dynamique ont été récupérées pour la vidéo. Les valeurs autorisées sont "SD", "HD", "FHD" et "UHD".)

Propriétés de la source

Les ressources de la collection de sources d'un élément sont dérivées des ressources de source vidéo renvoyées par la méthode d'API CMS Get Video Sources. Les propriétés suivantes sont prises en charge :

  • app_name
  • asset_id
  • codec
  • container
  • created_at
  • duration
  • encoding_rate
  • height
  • size
  • src
  • stream_name
  • type
  • uploaded_at
  • width

Propriétés du maître numérique

Les digital_master La ressource d'un actif est dérivée de la ressource principale numérique renvoyée par la méthode d'API CMS Get Digital Master Info. Les propriétés suivantes sont prises en charge :

  • duration
  • encoding_rate
  • height
  • size
  • url
  • width

Propriétés de rendu dynamique

Les dynamic_renditions La ressource d'un actif est dérivée des rendus dynamiques renvoyés par la méthode de l'API CMS Get Digital Master Info. Les propriétés suivantes sont prises en charge :

  • rendition_id
  • frame_height
  • frame_width
  • media_type
  • encoding_rate
  • created_at
  • updated_at
  • size
  • duration
  • audio_configuration
  • language
  • variant

Extensions au liquide

filtre toUTC

Nous avons étendu notre analyseur Liquid pour prendre en charge un filtre toUTC qui analysera la plupart des formats de chaîne datetime ISO-8601 standard et les transformera en chaînes datetime UTC standard. Ce format est acceptable pour le filtre de date de Liquid, qui peut ensuite être utilisé pour reformater les horodatages en chaînes datetime dans n'importe quel format souhaité. Par exemple :

  <pubDate>{{asset.published_at | toUTC | date: "%a, %d %b %Y %H:%M:%S %Z"}}</pubDate>

Cela produit une sortie comme la suivante si asset.published_at a une valeur de 2019-08-09T13:32:52.031Z ::

  <pubDate>Fri, 09 Aug 2019 09:32:52 +0000</pubDate>

toEpoch filtre

L'analyseur Liquid que nous utilisons ne prend pas en charge le jeton "%s" dans les filtres de date pour convertir les dates en horodatages d'époque Unix. Pour résoudre ce problème, un filtre personnalisé toEpoch est fourni qui peut être utilisé pour convertir les spécifications de date valides au format d'époque. Le filtre renvoie une valeur de données numérique représentant les millisecondes depuis l'époque qui convient à l'entrée dans les filtres mathématiques. Par exemple :

  <toEpochMillis>{{"now" | toEpoch }}</toEpochMillis>
  <toEpochSeconds>{{"now" | toEpoch | divided_by : 1000 }}</toEpochSeconds>
  <thirtyDaysAgo>{{'now' | toEpoch | minus:2592000000 | fromEpoch }}</thirtyDaysAgo>

produit une sortie comme la suivante :

  <toEpochMillis>1580917253024</toEpochMillis>
  <toEpochSeconds>1580917253</toEpochSeconds>
  <thirtyDaysAgo>2020-01-06T15:40:53.055Z</thirtyDaysAgo>

fromEpoch filter

Le filtre fromEpoch convertit les nombres représentant les millisecondes depuis l'époque en chaînes de date UTC. Le filtre acceptera également une chaîne contenant les chiffres de la valeur de l'époque comme entrée. La sortie peut être transmise au filtre de date pour reformatage si nécessaire.

Par exemple :

  
  <fromEpochMillis>{{"now" | toEpoch | fromEpoch }}</fromEpochMillis>
  <thirtyDaysAgoAltFormat>{{1580917253024 | fromEpoch | date:"%Y-%m-%d" }}</thirtyDaysAgo>
  

produit une sortie comme la suivante :

  
  <fromEpochMillis>2020-02-05T16:09:37.809Z</fromEpochMillis>
  <thirtyDaysAgoAltFormat>2020-02-05</thirtyDaysAgo>