In Part 1 of this series I introduced the concept of Microcontent Design, followed by a case study of BBC’s developer network backstage.bbc.co.uk in Part 2. Now let’s look at what’s being built by external parties, using the BBC Backstage ecosystem. Specifically this post is an in-depth and developer-focused look into a application called Mightyv, a TV listings app. My aim is to discover what makes a third party mashup of BBC content, like Mightyv, possible. Both from a BBC design and external developer points-of-view, but perhaps most importantly how this type of mashup application benefits users.
BBC TV Listings competition
Backstage held a TV Listings competition in July 2005. The idea was for contestants to rethink how to present BBC TV and Radio listings, using the TV-Anytime data format for 7 day listing data and other relevant RSS feeds. As described on the Backstage blog:
“The way people watch television – and choose what they are going to watch – is changing. More channels, new delivery platforms, new ways to consume television programming…
For the first backstage.bbc.co.uk competition, we are offering you the opportunity to innovate and build prototypes that demonstrate new ways of exploring the BBC TV schedule.”
In October 2005 the winners were announced. An application called mightyv, developed by Leon Brocard and Leo Lapworth, was the ultimate winner. Mightyv is a personalized tv scheduling service, which also enables users to track their friends schedules. It features extensive search, which can be subscribed to with RSS feeds. It also has many options for viewing tv and radio listings, customizing channel lists, tags, ratings, recommendations. The BBC calls this “findability”.
Mightyv isn’t restricted to BBC data – it also uses data from an independent website called bleb.org, for non-BBC channel data. The developers note that the bleb.org data isn’t “as rich in meta data (genre/group/series) as the BBC so you will see a marked difference in the search results because of this.” So obviously the more meta data you can provide in your RSS feeds and APIs, the better it is for developers and users!
Mightyv: step by step
What makes much of mightyv possible is the metadata rich ‘7 Day Listing Data’ RSS feed. It’s a daily snapshot of BBC TV and radio 7-day listing information and is in the TV-Anytime data format (specifications developed by the TV-Anytime Forum, an industry body).
As it states on the main page, the data is originally sourced from the BBC’s scheduling system but undergoes some manipulations in order to provide TV-Anytime features. The BBC eventually provides it to developers in XML format.
The following naming structure is used for the XML files: YYYYMMDDCCCC_TT.xml, where:
|
YYYY |
– Year |
|
MM |
– Month |
|
DD |
– Day |
|
CCCC |
– Channel (variable length) |
|
TT |
– Table Type |
Let’s look at the main XML files, as they relate to Mightyv.
ProgramInformationTable
The program I’m going to use for my example is a BBC World Service radio program called ‘Go Digital’. It sounds like something readers of Read/WriteWeb would be interested in! For this example, I’m going to use the episode of Go Digital that was broadcast on 21 February 2006 at 20:05.
We find out more about Go Digital in an XML file labeled 20060221BBCWrld_pi. The ‘pi’ stands for ‘ProgramInformationTable’ and it contains the metadata of the program – title, synopsis, whether it’s subtitled, etc:
1 <ProgramInformation programId=’crid://bbc.co.uk/1736500958′>
2 <BasicDescription>
3 <Title><![CDATA[Go Digital]]></Title>
4 <Synopsis length=’short’><![CDATA[An update on how technology is changing our lives, featuring reports from around the world.]]></Synopsis>
5 <Genre href=’urn:tva:metadata:cs:ContentCS:2002:3.1.6′>
6 <Name><![CDATA[Sciences]]></Name>
7 </Genre>
8 <Genre href=’urn:tva:metadata:cs:ContentCS:2002:3.1.6.8′>
9 <Name><![CDATA[Technology]]></Name>
10 </Genre>
11 <Genre href=’urn:tva:metadata:cs:IntentionCS:2002:1.3′>
12 <Name><![CDATA[EDUCATION]]></Name>
13 </Genre>
14 <Genre href=’urn:tva:metadata:cs:ContentCS:2002:3.1.1.5′>
15 <Name><![CDATA[Periodical/General]]></Name>
16 </Genre>
17 <Genre href=’urn:tva:metadata:cs:FormatCS:2002:2.1′>
18 <Name><![CDATA[STRUCTURED]]></Name>
19 </Genre>
20 <Genre href=’urn:tva:metadata:cs:IntentionCS:2002:1.2′>
21 <Name><![CDATA[INFORMATION]]></Name>
22 </Genre>
23 <RelatedMaterial>
24 <HowRelated href=’urn:tva:metadata:cs:HowRelatedCS:2002:10′>
25 <Name>For more information</Name>
26 </HowRelated>
27 <MediaLocator>
28 <mpeg7:MediaUri>http://news.bbc.co.uk/1/hi/technology/1478157.stm</mpeg7:MediaUri>
29 </MediaLocator>
30 </RelatedMaterial>
31 </BasicDescription>
32 <AVAttributes>
33 <AudioAttributes>
34 <NumOfChannels>1</NumOfChannels>
35 </AudioAttributes>
36 </AVAttributes>
37 <MemberOf xsi:type=’MemberOfType’ crid=’crid://bbc.co.uk/__SERGoDigital’/>
38 </ProgramInformation>
The key piece of data that we’re interested in for now is the unique program ID on line 1: ‘crid://bbc.co.uk/1736500958’ (note: the BBC design policy is to give each piece of content a unique identifier). Here’s how it’s described in the BBC help documentation:
“Each programme is allocated a CRID (Content Reference IDentifier), that represents unique programme content (repeated material would generally have the same CRID). All the tables are linked together using the CRIDs. At the moment the CRIDs are not guaranteed to be unique for all time.”
Returning to the ProgramInformationTable. The program title and synopsis are listed on lines 3-4. Genre data is listed on lines 5-22, followed by other metadata including the webpage for the ‘Go Digital’ program – listed on line 28 under the ‘MediaURI’ tag as http://news.bbc.co.uk/1/hi/technology/1478157.stm. That webpage has links to the radio show in MP3 format and other relevant information. Screenshot:
ProgramLocationTable
But we’re still looking for one vital piece of data – the time and date of the program. Nowhere in the ‘ProgramInformationTable’ XML file is that data to be found. It is in fact in another XML file, named 20060221BBCWrld_pl, which is the ProgramLocationTable. This file describes where and when the content can be found, which of course is the data that drives tv listings.
39 <ScheduleEvent>
40 <Program crid=’crid://bbc.co.uk/1736500958’/>
41 <ProgramURL>dvb://233a.4000.6780;e6e1 @2006-02-21T20:05:00Z/PT00H25M</ProgramURL>
42 <InstanceMetadataId>imi:bbc.co.uk/1736500961</InstanceMetadataId>
43 <PublishedStartTime>2006-02-21T20:05:00Z</PublishedStartTime>
44 <PublishedDuration>PT00H25M00S</PublishedDuration>
45 </ScheduleEvent>
Line 40 references the unique program id: ‘crid://bbc.co.uk/1736500958’. Then on line 43 is the information we’re after:
<PublishedStartTime>2006-02-21T20:05:00Z</PublishedStartTime>
Deciphered, the above piece of code means: the Go Digital program will screen on 21 February 2006 at 22:05.
ContentReferencingTable
The ContentReferencingTable is a little more complicated. It provides the precise location(s) where an item of content can be found, which in general means it lists instances of a program. It can also be used to group programs, for example into series or collections.
In our Go Digital example above, here is an extract from the ContentReferencingTable, 20060221BBCWrld_cr:
46 <Result CRID=’crid://bbc.co.uk/1736500958′ status=’resolved’ complete=’true’ acquire=’any’>
47 <LocationsResult>
48 <Locator instanceMetadataId=’imi:bbc.co.uk/1736500986′>dvb://233a.4000.6780;e6fa @2006-02-21T10:05:00Z/PT00H25M</Locator>
49 <Locator instanceMetadataId=’imi:bbc.co.uk/1736500958′>dvb://233a.4000.6780;e6de @2006-02-21T15:05:00Z/PT00H25M</Locator>
50 <Locator instanceMetadataId=’imi:bbc.co.uk/1736500961′>dvb://233a.4000.6780;e6e1 @2006-02-21T20:05:00Z/PT00H25M</Locator>
51 <Locator instanceMetadataId=’imi:bbc.co.uk/1736501008′>dvb://233a.4000.6780;e710 @2006-02-22T02:05:00Z/PT00H25M</Locator>
52 <Locator instanceMetadataId=’imi:bbc.co.uk/1736507203′>dvb://233a.4000.6780;ff43 @2006-02-28T10:05:00Z/PT00H25M</Locator>
53 <Locator instanceMetadataId=’imi:bbc.co.uk/1736507230′>dvb://233a.4000.6780;ff5e @2006-02-28T15:05:00Z/PT00H25M</Locator>
54 <Locator instanceMetadataId=’imi:bbc.co.uk/1736507221′>dvb://233a.4000.6780;ff55 @2006-02-28T20:05:00Z/PT00H25M</Locator>
55 <Locator instanceMetadataId=’imi:bbc.co.uk/1736507346′>dvb://233a.4000.6780;ffd2 @2006-03-01T02:05:00Z/PT00H25M</Locator>
56 </LocationsResult>
57 </Result>
Line 50 has details of the episode broadcast on 21 February 2006 at 22:05:
<Locator instanceMetadataId=’imi:bbc.co.uk/1736500961′>dvb://233a.4000.6780;e6e1 @2006-02-21T20:05:00Z/PT00H25M</Locator>
GroupInformationTable
The final table in our example contains descriptions of groups. Like programs, groups are also identified by a CRID (Content Reference IDentifier). Indeed the structure and content of the GroupInformationTable is very similar to the ProgramInformationTable, in that it provides the metadata for the groups. Here’s an example from a file called groups_gr:
58 <GroupInformation groupId=’crid://bbc.co.uk/__SERGoDigital’>
59 <GroupType xsi:type=’ProgramGroupTypeType’ value=’series’/>
60 <BasicDescription>
61 <Title><![CDATA[Go Digital]]></Title>
62 <Synopsis><![CDATA[A series group for Go Digital]]></Synopsis>
63 </BasicDescription>
64 </GroupInformation>
This extract describes a group containing the Go Digital radio program.
There are other XML files provided by the BBC, but our purpose here is just to gain an understanding of the main content components of the Mightyv mashup.
Mightyv display
The end result for the user is that ‘Go Digital’ displays on the mightyv tv listings webpage, scheduled for 22:05 on 21 February 2006. Below is a screenshot, showing also the Go Digital Synopsis metadata (from ProgramInformationTable) in a pop-up:
(nb: the numbers down the side represent hours, not date)
Caveats and Issues
It’s important to note that the Mightyv application is in one sense only as good as the data it gets, which is mainly from the BBC. Backstage is careful to note some caveats and issues with the TV-Anytime data they provide. For example they state:
“This data is generated for experimental purposes only. There are some known issues with repeated programmes occasionally not being allocated the same CRIDs – these issues are being looked at and improved. Accuracy is striven for, but not currently guaranteed! Any feedback on any aspects of this data would be most appreciated.”
Once again this is an illustration of who holds the balance of power in a mashup – it’s the data owner.
Mightyv functionality
So the TV-Anytime data from the BBC allows Mightyv to provide a fairly straight-forward tv listings service, without having to do too much tinkering under the hood. Of course, the main value in a mashup is in developing something unique and compelling on top of the basic data. So let’s take a look and see why the BBC chose Mightyv as the winner of its backstage developer competition.
If the user clicks on the blue underlined ‘Go Digital’ link on the tv listings page, they are sent to another mightyv page which has further options (if logged in):
Options include rating the program, tagging it, adding it to your schedule. So there are some neat ‘web 2.0’ features there. Admittedly it has a ways to go to be truly compelling to users, but you can see the potential in Mightyv. Especially when you consider that personalizing your TV-watching schedule is becoming increasingly important, as television integrates with the Web.
Originally published on ReadWriteWeb (archived copy)