This page describes the TV-Anytime data that is currently being made available on backstage.bbc.co.uk. This data is provided as an experimental service for an initial period of three months and no guarantee can be provided for the accuracy of this data. The data is originally sourced from the BBC's scheduling system but undergoes some manipulations in order to provide TV-Anytime features. The availability, content, organisation and features of the data may change at any time.
Please note that this data is provided strictly for non-commercial purposes. Please see the backstage.bbc.co.uk terms of use for more details.
TV-Anytime refers to the specifications developed by the TV-Anytime Forum. These are open standards for the rich description of Radio, Television and other types of media. The metadata specification includes a comprehensive genre scheme, methods of linking and grouping programmes, listing credits and lots of other data fields.
More information about TV-Anytime can be found at http://www.tv-anytime.org. A detailed description of the content and structure of these files can be found by downloading the TV-Anytime specifications from ETSI (specification TS102822). The specifications are free to download although registration is required. The files below are compliant with version 1.2.1 of the Metadata specification - ETSI TS 102 822-3-1 V1.2.1 (2004-09).
A compressed tar file is being made available that contains information on today and the next 7 days for all BBC Radio & Television services. The compressed tar file expands into a directory named for the date of creation (YYYYMMDD) and a set of individual XML files. The data can be downloaded from http://backstage.bbc.co.uk/feeds/tvradio/.
Initially a set of files will be created once a day. In the future, more frequent updates may be made to reflect changes that occur in the schedules during the day.
Each file contains a particular TV-Anytime table that describes the various aspects of the content.
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.
A ProgramInformationTable contains the metadata of the programme being described. Examples would be title, synopsis, or whether it's subtitled.
A ProgramLocationTable provides the promotional information to describe where and when the content can be found. The obvious use for these files is in the creation of a traditional channel/time Electronic Programme Guide (EPG).
A ContentReferencingTable provides the precise location(s) where an item of content can be found. In the general case a CRID resolves to one or more CRIDs or Locators. In theory other locators such as streams or file locations could be provided in this table, but this isn't covered in the current data sets.
The ContentReferencingTable can also be used to describe the acquistion of the members of a TV-Anytime group. TV-Anytime allows programmes to be placed into multiple arbitrary groups (series, collections, etc) - these groups can contain CRIDs pointing to programmes or they can also contain other groups.
A GroupInformationTable contains descriptions of groups, that also are identified by a CRID. This is very similar to the ProgramInformationTable and provides the metadata for the groups. The structure of these two tables is very similar.
The TV-Anytime specifications allow for several other tables, but these are not generated at this time for the experimental data sets.
This is a description of the files provided and the file naming convention:
| ServiceInformation.xml | The TV-Anytime Service Information for the services currently provided: Channels, their description and identifiers. |
| groups_cr.xml | The Group Content Referencing Table for the TV-Anytime group structure provided. |
| groups_gr.xml | The Group Information Table (metadata) for the TV-Anytime group structure provided. The group structure is intended to show some of the features of TV-Anytime and is not comprehensive. |
All other files are provided on a day/channel/type basis and are described using the following naming structure: YYYYMMDDCCCC_TT.xml, where:
| YYYY | - Year |
| MM | - Month |
| DD | - Day |
| CCCC | - Channel (variable length) |
| TT | - Table Type |
The Table Type can be determined using the following extensions:
| pi | - ProgramInformationTable |
| pl | - ProgramLocationTable |
| cr | - ContentReferencingTable |
The channels are described using the following extensions:
| Extension | Channel |
| BBCOne | BBC One (London) |
| BBCTwo | BBC Two |
| BBCNewsTF | BBC News 24 |
| BBCThree | BBC Three |
| BBCFour | BBC Four |
| BBCCBBC | CBBC |
| BBCCBeebies | CBeebies |
| BBCParl | BBC Parliament |
| BBCWrld | BBC World Service |
| BBCROne | BBC Radio 1 |
| OneXtra | BBC Radio 1 Extra |
| BBCR2 | BBC Radio 2 |
| BBCRThree | BBC Radio 3 |
| BBCRFour | BBC Radio 4 (FM Service) |
| BBCRFiveL | BBC Radio 5 Live |
| BBCRFiveX | BBC Five Live Sports Extra |
| BBCSixMu | BBC 6 Music |
| BBCSeven | BBC7 |
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.
A Java library for reading and creating a subset of the TV-Anytime specifications is described on BBC Opensource here and available from Sourceforge here. The zip file contains a useful paper detailing the API which gives a good idea of what's in TV-Anytime, also available from here.
Contact: backstage (at) bbc.co.uk