Community Media VOD Feed module simplifies the process of adding feeds from different Video on Demand (VOD) providers and provides some additional interfaces to the normal Feeds Importer.

Evaluating the appropriate VOD service to use

In addition to providing documentation about the module itself, here are some thoughts regarding the relative merits of three VOD services being deployed by community media centers today.

VIMEO: pros: large producer centric audience, very video focussed, better copyright policies - cons: smaller audience than YouTube, still subject to take down notices.

YOUTUBE: pros: largest audience - cons: lots of noise/spam, copyright policies, ads

CLOUDCAST: pros: private, more control - cons: small audience, very basic social tools, remains online as long as you pay for the service.

Finding the Media RSS feed

Online video services have different formats for their RSS feeds. Knowing the RSS feed format for the video you want to import is an important first step. Here are some common examples below.

Vimeo RSS Format

If the username for a Vimeo site is "example" and the URL is in this format:
http://vimeo.com/example

Then the RSS feed will be in this format:
http://vimeo.com/example/videos/rss

<item>
  <title>greetings</title>
  <pubDate>Wed, 21 Dec 2011 07:52:49 -0500</pubDate>
  <link>http://vimeo.com/34022313</link>
  <dc:creator>pvz.lt</dc:creator>
  <description>&lt;p&gt;&lt;a href=&quot;http://vimeo.com/34022313&quot;&gt;&lt;img src=&quot;http://b.vimeocdn.com/ts/231/844/231844542_200.jpg&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;</description>
  <guid isPermaLink="false">tag:vimeo,2011-12-21:clip34022313</guid>
  <enclosure length="5757207" type="application/x-shockwave-flash" url="http://vimeo.com/moogaloop.swf?clip_id=34022313"/>
  <media:content>
    <media:player url="http://vimeo.com/moogaloop.swf?clip_id=34022313"/>
    <media:credit role="author" scheme="http://vimeo.com/example"></media:credit>
    <media:thumbnail height="150" width="200" url="http://b.vimeocdn.com/ts/231/844/231844542_200.jpg"/>
    <media:title>greetings</media:title>
  </media:content>
</item>

Helpful Vimeo Tips: Vimeo adheres to the MediaRSS standard so everything in their feed can be mapped with Feeds: Media RSS.

YouTube RSS Format

If the username for a YouTube site is "example" the feed URL to use is https://gdata.youtube.com/feeds/api/users/example/uploads?v=2

NOTE THAT YOUTUBE FEEDS USE ENTRY INSTEAD OF ITEM

<entry gd:etag='W/&quot;A0YFSX47eCp7I2A9Wh9TF0k.&quot;'>
<id>tag:youtube.com,2008:video:LI26rC6Cw0M</id>
  <published>2014-01-24T00:54:10.000Z</published>
  <updated>2014-01-26T15:11:58.000Z</updated>
  <category scheme='http://schemas.google.com/g/2005#kind' term='http://gdata.youtube.com/schemas/2007#video'/>
  <category scheme='http://gdata.youtube.com/schemas/2007/categories.cat' term='People' label='People &amp; Blogs'/>
  <title>Feeds Video File Import</title>
  <content type='application/x-shockwave-flash' src='https://www.youtube.com/v/LI26rC6Cw0M?version=3&amp;f=user_uploads&amp;app=youtube_gdata'/>
  <link rel='alternate' type='text/html' href='https://www.youtube.com/watch?v=LI26rC6Cw0M&amp;feature=youtube_gdata'/>
  <link rel='http://gdata.youtube.com/schemas/2007#video.related' type='application/atom+xml' href='https://gdata.youtube.com/feeds/api/videos/LI26rC6Cw0M/related?v=2'/>
  <link rel='http://gdata.youtube.com/schemas/2007#mobile' type='text/html' href='https://m.youtube.com/details?v=LI26rC6Cw0M'/>
  <link rel='http://gdata.youtube.com/schemas/2007#uploader' type='application/atom+xml' href='https://gdata.youtube.com/feeds/api/users/zj5P3uGZbqWU-tWpYRnZ6A?v=2'/>
  <link rel='self' type='application/atom+xml' href='https://gdata.youtube.com/feeds/api/users/UCzj5P3uGZbqWU-tWpYRnZ6A/uploads/LI26rC6Cw0M?v=2'/>
  <author>
    <name>Aric Ruble</name>
    <uri>https://gdata.youtube.com/feeds/api/users/zj5P3uGZbqWU-tWpYRnZ6A</uri>
    <yt:userId>zj5P3uGZbqWU-tWpYRnZ6A</yt:userId>
  </author>
  <yt:accessControl action='comment' permission='allowed'/>
  <yt:accessControl action='commentVote' permission='allowed'/>
  <yt:accessControl action='videoRespond' permission='moderated'/>
  <yt:accessControl action='rate' permission='allowed'/>
  <yt:accessControl action='embed' permission='allowed'/>
  <yt:accessControl action='list' permission='allowed'/>
  <yt:accessControl action='autoPlay' permission='allowed'/>
  <yt:accessControl action='syndicate' permission='allowed'/>
  <gd:comments>
    <gd:feedLink rel='http://gdata.youtube.com/schemas/2007#comments' href='https://gdata.youtube.com/feeds/api/videos/LI26rC6Cw0M/comments?v=2' countHint='1'/>
  </gd:comments>
  <yt:hd/>
  <media:group>
    <media:category label='People &amp; Blogs' scheme='http://gdata.youtube.com/schemas/2007/categories.cat'>People</media:category>
    <media:content url='https://www.youtube.com/v/LI26rC6Cw0M?version=3&amp;f=user_uploads&amp;app=youtube_gdata' type='application/x-shockwave-flash' medium='video' isDefault='true' expression='full' duration='776' yt:format='5'/>
    <media:content url='rtsp://r5---sn-o097zuez.c.youtube.com/CigLENy73wIaHwlDw4IurLqNLBMYDSANFEgGUgx1c2VyX3VwbG9hZHMM/0/0/0/video.3gp' type='video/3gpp' medium='video' expression='full' duration='776' yt:format='1'/>
    <media:content url='rtsp://r5---sn-o097zuez.c.youtube.com/CigLENy73wIaHwlDw4IurLqNLBMYESARFEgGUgx1c2VyX3VwbG9hZHMM/0/0/0/video.3gp' type='video/3gpp' medium='video' expression='full' duration='776' yt:format='6'/>
    <media:credit role='uploader' scheme='urn:youtube' yt:display='Aric Ruble'>zj5P3uGZbqWU-tWpYRnZ6A</media:credit>
    <media:description type='plain'>This video demonstrates how to import video entities directly using the new dev version of Feeds.</media:description>
    <media:keywords/>
    <media:license type='text/html' href='http://www.youtube.com/t/terms'>youtube</media:license>
    <media:player url='https://www.youtube.com/watch?v=LI26rC6Cw0M&amp;feature=youtube_gdata_player'/>
    <media:thumbnail url='https://i1.ytimg.com/vi/LI26rC6Cw0M/default.jpg' height='90' width='120' time='00:06:28' yt:name='default'/><media:thumbnail url='https://i1.ytimg.com/vi/LI26rC6Cw0M/mqdefault.jpg' height='180' width='320' yt:name='mqdefault'/>
    <media:thumbnail url='https://i1.ytimg.com/vi/LI26rC6Cw0M/hqdefault.jpg' height='360' width='480' yt:name='hqdefault'/><media:thumbnail url='https://i1.ytimg.com/vi/LI26rC6Cw0M/sddefault.jpg' height='480' width='640' yt:name='sddefault'/>
    <media:thumbnail url='https://i1.ytimg.com/vi/LI26rC6Cw0M/1.jpg' height='90' width='120' time='00:03:14' yt:name='start'/>
    <media:thumbnail url='https://i1.ytimg.com/vi/LI26rC6Cw0M/2.jpg' height='90' width='120' time='00:06:28' yt:name='middle'/>
    <media:thumbnail url='https://i1.ytimg.com/vi/LI26rC6Cw0M/3.jpg' height='90' width='120' time='00:09:42' yt:name='end'/>
    <media:title type='plain'>Feeds Video File Import</media:title>
    <yt:duration seconds='776'/><yt:uploaded>2014-01-24T00:54:10.000Z</yt:uploaded>
    <yt:uploaderId>UCzj5P3uGZbqWU-tWpYRnZ6A</yt:uploaderId><yt:videoid>LI26rC6Cw0M</yt:videoid> 
  </media:group>
  <yt:statistics favoriteCount='0' viewCount='30'/></entry>

Additional YouTube feeds can be created using the Video feeds tool that's part of the Interactive YouTube API Demo

Use the Feeds: YouTube Parser module to parse the YouTube specific data, if you need to access info such as view_count, fav_count, likes, rating and rates_number. Otherwise Feeds: MediaRSS is fine too.

To query keywords from the YouTube videos you need to be authenticated as the user who owns the videos. Start by creating a project at https://code.google.com/apis/console:

  1. Click API Access in the menu to the left
  2. Create a new project and choose Web application and add your domain name
  3. Add also http://yourdomain.com/feeds/oauth2/callback/youtube as Redicrect URIs

Next, install the Feeds OAuth module.

After that, create a feed importer and use the HTTPS OAuth 2.0 Fetcher, YouTube parser and Entity processor file. In the Fetcher settings, as the following information from the YouTube Data API that you created above:

When you import, make sure to use https:// in the beginning of the URL, like https://yourdomain.com/import

*** Need Documentation for Importing more than 50 videos ***

Cloudcast RSS Format
http://cloudcast.telvue.com/channels/[USERNAME]

http://cloudcast.telvue.com/api/mrss/v2/mrss/[YOUR USERNAME].xml (see Telvue documentation about this changes)

Cloudcast Feeds Screencast: http://vimeo.com/65594252

Cloudcast (formerly PegTV) did not include a GUID at all or Link by default. To use the olded feed you had to map the Media Player URL element to both the VOD field and the unique GUID. Without a GUID, the feed will create one node and update that node for each item in the feed rather than create a node for each item. The updated MRSS format allows Cloudcast, YouTube, Vimeo, BlipTV, and Archive to all use the same Importer.

Blip.tv RSS Format

If the username for a Blip.tv site is "example" and the URL is in this format:
http://blip.tv/example

Then the RSS feed will be in this format:
http://blip.tv/example/rss

BlipTV includes a lot of information in their feed. These are some of the more useful elements...

<item>
  <guid isPermaLink="false">6BB931C2-1F93-11E2-894F-AE04BB304F5A</guid>
  <link>http://blip.tv/thechrisgethardshow/tcgs-67-the-cans-film-festival-2012-6415509</link>
  <title>TCGS #67 - The Cans Film Festival 2012</title>
  <blip:license>No license (All rights reserved)</blip:license>
  <blip:contentRating>TV-UN</blip:contentRating>
<description><![CDATA[

<iframe src="http://blip.tv/play/h8Z9g4fJeQI.x?p=1" width="720" height="433" frameborder="0" allowfullscreen></iframe><embed type="application/x-shockwave-flash" src="http://a.blip.tv/api.swf#h8Z9g4fJeQI" style="display:none"></embed>
<br />

We screen ten films under one minute in the first ever Cans Film Festival. Sent in by fans of the show, the festival features bizarre short films that probably couldn&apos;t screen at any other film festival. The grand prize at stake is dozens of empty. The festival features old friends and new friends in the form of callers, panelists, and filmmakers.

]]></description>

<item>

Helpful BlipTV Tips: BlipTV includes an embedded iframe in the description. If you map the description to a textarea field, configure the import to use plaintext to avoid duplicate players. While the BlipTV feeds includes license and rating data that would be compatible with Creative Commons and PBCore, the custom blip: elements will not show up when building the mapping for the Importer without a custom module to extend the RSS elements similar to Feeds YouTube Parser or the more general Feeds: Media RSS. Unfortunately a BlipTV specific feed parser does not exist... yet.