CMS API Sample: Generate RSS Podcast Feed for iTunes

Product(s)
Video Cloud
Role(s)
API Developer
API(s)
CMS API

In this sample, you will learn how to use the CMS API to generate an RSS podcast feed for Apple iTunes.

Introduction

This app creates a podcast RSS feed for iTunes from one or more audio-only titles in your Video Cloud account.

What you need to use this app:

  • Be sure you are satisfying Apple's requirements regarding images and other things. This app will use the poster image for the podcast artwork. You may need to create a custom Ingest Profile to make your poster size fit the image requirements.
  • Also see Podcast best practices (this app will follow them as far as inputs allow).
  • Your podcast(s) add to video cloud as audio-only content - see Audio Content for details of how to do this.
  • A title for the podcast. If no title is given, the name of the video (or first video in a group of episodes) will be used.
  • A description of the podcast.
  • Your site URL (e.g. https://support.brightcove.com)
  • The URL where this feed will be hosted (e.g. https://support.brightcove.com/feeds/podcast.rss)
  • The author (individual or organization name).
  • A contact email address for the podcast
  • A summary of the broadcast (if you omit this, we will use the description from Video Cloud).

The app below contains input fields for all the information you need to provide. To see how the app maps your data and video metadata to the podcast feed fields, see the Field mappings section at the bottom of the page.

URL tokenization

In addition to the above requirements, you will need to modify URL tokenization for your account. Video Cloud adds a ttl token to URLs for renditions to prevent your content from being stolen. By default, these token have a very short life - too short for a podcast. You will need to Contact Brightcove Support to have them set the token time-to-live value higher. The allowable range is one hour to one year. Ask them to set the value to something appropriate for the time you want your podcasts to be available. Remember that this is an account setting, however. Don't set the value so high that it might jeopardize the security of your other videos.

Notes on how the app works

  • After filling in information needed for the feed, you fetch (up to 20) videos from your account
  • It will be easier if you name, tag, or have a custom field value for the podcast video(s) to make it/them easy to find
  • You then select one or more videos for the feed
  • If you select multiple videos, the app assumes that these are podcast episodes and that the activation date for the videos reflects the order of the episodes

Get credentials

To use the CMS API you will need proper credentials.

The easiest way to get credentials in most cases is through the Studio Admin API Authentication section (requires admin permissions on your account). See Managing API Authentication Credentials for details. In most cases, you probably just want to get permissions for all CMS API operation:

CMS API Permissions
CMS API Permissions

If the permissions you need are not available in Studio, or if you prefer to get them directly from the OAuth API, use your choice of the Get Client Credentials documents listed below. Whichever option you choose, you will need to ask for the correct operation permissions. The following can be used with cURL or Postman to get all permissions for the CMS API:

"operations": [
  "video-cloud/video/all"
]

Podcast feed generator

Find all the code associated with this sample in this GitHub repository.

See the Pen CMS API Sample: Generate RSS Podcast Feed for iTunes by Brightcove Learning Services (@rcrooks1969) on CodePen.

Using the CodePen

Here are some tips to effectively use the above CodePen:

  • Toggle the actual display of the player by clicking the Result button.
  • Click the HTML/CSS/JS buttons to display ONE of the code types.
  • Click Edit on CodePen in the upper right corner to fork this CodePen into your own account.
  • Find all the code associated with this sample in this GitHub repository.

Proxy code

How the app maps data to the podcast feed fields is detailed below. Note that if a video metadata field or an input is null or empty, that field is omitted from the feed.

In order to build your own version the sample app on this page, you must create and host your own proxy. (The proxies used by Brightcove Learning Services only accept requests from Brightcove domains.) You can download two versions of our proxy code:

Field mappings

The first table shows how the app maps data to the overall podcast fields.

Mapping of Item Fields
Video Field Podcast Feed Field
{your input} title
{your input} link
{your input} language
{your input} itunes:subtitle
{your input} itunes:image
{your input} itunes:author
{your input} (falls back to author) itunes:owner:name
{your input} itunes:owner:email
{your input} itunes:summary
{your input} description
current year + owner copyright
{your selection(s)} itunes:category/subcategory
{your input} itunes:explicit

The second table shows how this app maps the video metadata to the podcast feed item fields.

Mapping of Item Fields
Video Field Podcast Feed Field
name title
{your input} itunes:author
description itunes:subtitle
long_description itunes:summary
images.poster.src itunes:image
MP4 source: size enclosure:length
video/mp4 enclosure:type
MP4 source:src (the best quality MP4 rendition) enclosure:url
MP4 source:src (the best quality MP4 rendition) guid
published_at pubDate
duration (converted to HH:MM:SS format) itunes:duration
{your input} itunes:explicit
{your input} itunes:isClosedCaptioned

Proxy code

In order to build your own version the sample app on this page, you must create and host your own proxy. (The proxies used by Brightcove Learning Services only accept requests from Brightcove domains.) A sample proxy, very similar to the one we use, but without the checks that block requests from non-Brightcove domains, can be found in this GitHub respository. You will also find basic instructions for using it there, and a more elaborate guide to building apps around the proxy in Using the REST APIs.