Content recordation techniques

Content recordation techniques are described. In an implementation, a method includes querying electronic program guide (EPG) data to determine if a content item described in a recording document is available for recording. If the content item is available, a reference is added to a recording list for causing recordation of the content item.

TECHNICAL FIELD

The present invention generally relates to the field of content and in particular to content recordation techniques.

BACKGROUND

Users are continually exposed to an ever increasing variety of clients that provide network access, such a set-top boxes, wireless phones, computers, and so on. A user of a set-top box, for instance, may view traditional television programming obtained from a broadcast network for display on a television, as well as order pay-per-view movies, receive video-on-demand (VOD), play “live” video games, and so on. Likewise, a user of a wireless phone may place and receive traditional telephone calls, as well as read email, download digital music, and so on.

Another such example is a digital video recorder (DVR). A DVR typically includes non-volatile storage (e.g., a hard disk) that enables the user to record desired content. DVR's also offer control functionality, such as the ability to pause content that is currently being broadcast and allows viewers to watch the content, while still in progress, from the point it was paused. The DVR plays back the content from storage, starting at the pause event, while continuing to record the currently-broadcast content. Additionally, the DVR may support other control functions, such as rewinding, fast forwarding a stored program, slow motion playback, and the like.

To record content using a DVR, a user was typically required to directly interact with the DVR itself. In some instances, the user could configure the DVR to record related content by specifying parameters to be matched with those of available content to locate potentially desirable content. For example, the user could specify the title of a television program so that the DVR would record each television program having that title. However, the user was not assured that the DVR would record a particular content item of interest. In other words, the user could not be certain that the potentially desirable content recorded by the DVR corresponded with the actual content the user wished to record. For example, although the DVR may be configured to record a particular television program, the DVR might fail to record a special regarding the actors in that particular television program. Therefore, when the user was located “away” from the DVR, the user could not cause the DVR to record the particular content item, even if the user had access to one or more of the clients that provide network access as previously described.

Accordingly, there is a continuing need for improved content recordation techniques.

SUMMARY

Content recordation techniques are described. The content recordation techniques may be utilized when the user is local to and remote from the client. For example, a user, when remotely located from a client configured as a digital video recorder (DVR), interacts with a remote device that is configured as a wireless phone. The user utilizes the wireless phone to access a review of a television program via the Internet. Based on the review, the user invokes a recording document that is embedded in the review to be communicated to the remote client. The recording document describes the television program, such as by describing a title, actors, broadcast time, service (e.g., channel) that broadcasts the television program, and so on.

Upon receipt of the recording document, the remote client executes a parser module to examine the recording document to determine if the television program described in the recording document is available for being recorded by the remote client. For instance, the recording document may be compared with electronic program guide (EPG) data that is received from a head end, EPG data service, and so on. The EPG data may be utilized to determine if the television program is available. The EPG data may also be utilized to determine how the television program is to be recorded, such as by supplying a channel and broadcast start time. If the television program is available, a reference to the television program is added to a recording list based on the EPG data. For example, the broadcast channel and the broadcast start time may be added to the recording list. The recording list is then utilized by the remote client to cause the client to record the content. In another instance, the recording document may cause the head end to cause the client to record the content, such as by examining EPG data stored at the head end to determine if the content is available for recording. If so, the head end causes the client the record the content. In a further instance, the recording document may cause the head end itself to record the content, such as in a network digital video recorder (NDVR) scenario.

The same reference numbers are utilized in instances in the discussion to reference like structures and components.

DETAILED DESCRIPTION

Overview

Content recordation techniques are described. In an implementation, a content recordation technique is described in which a client, such as a digital video recorder (DVR), is configured to record content streamed from a head end through use of a recording document that describes the content. The recording document may be provided in a variety of ways, such as embedded in a web site, shared via email or text messaging, submitted via an application programming interface (API), manually written by a user, and so on. The recording document is processed via a parser module to locate the content item that is described by the recording document. In one scenario, the parser module compares the recording document with an electronic program guide (EPG) that is stored on the client to find a matching content item that is described in the EPG data. If a sufficient match is found, a reference to the matching content item is added to a recording list based on the EPG data, such as a broadcast channel and time to record the matching content item. In another scenario, the head end processes the recording document provided by a remote device to determine whether the described content item is available. If so, the head end then causes the client to record the particular content item, such as through communication of a recording list to the client. Thus, a user may cause a particular content item to be recorded without direct interaction with the client.

In a further implementation, the head end stores client state data to process content recordation requests. For example, the head end may include client state data, such as ratings limits, favorite channels, levels of service, and so on, that is accessible locally by the head end. The head end may utilize this client state data to determine if the client is permitted to access the content item described by the recording document. If so, the head end may then cause the client to record the content. By performing the determination utilizing client state data at the head end, the head end provides an authoritative source for processing requests to record content by the client. This may result in a variety of increased functionality that is available to the user, such as an ability to change from an old client to a new client without manually updating client state data from the old client to the new client, remote initiation of content recordation without obtaining a connection with the client itself, and so on.

Exemplary Environment

FIG. 1is an illustration of an environment100in an exemplary implementation showing a content provider102that is communicatively coupled to a client104over a network106. The network106in the following implementations is an example of a wide area network (WAN), such as the Internet, and may also include a variety of other networks, such as a broadcast network, an intranet, a wired or wireless network, and so forth.

The client104is configured to receive content communicated from the content provider102over the network106. The content provider102includes content108(k), where “k” can be any integer from 1 to “K”, that is locally stored on the content provider102. The content108(k) may include a variety of data, such as television programming, video-on-demand, one or more results of remote application processing, and so on. The content provider102communicates the content108(k) over a network110to a head end112. The network110may be the same as or different from network106. For example, the network110may represent a dedicated network connection between the content provider102and the head end112while network106is implemented by the Internet, both networks106,110may be the Internet, and so on.

The content108(k) may then be stored in a database114as content116(n), where “n” can be any integer from 1 to “N”, on the head end112for communication over the network106to the client104. In other words, the content116(n) stored in the database114may be copies of the content108(k) received from the content provider102over the network110.

The head end112, as illustrated, includes a distribution server118to format and distribute the content116(n) over the network106. Distribution from the head end112to the client104may be accomplished in a number of ways, including cable, RF, microwave, and satellite. Although the head end112is illustrated as separate from the content provider102, the content provider102may also include the head end112.

The head end112may also include a database120having a plurality of EPG data122(m), where “m” can be any integer from one to “M”. The EPG data122(m) is used to construct an EPG124for display by the client104to a user. The EPG124, for instance, may enable the user to observe a listing of television programs that are currently being broadcast from the head end112, as well as a listing of television programs that will be broadcast in the future. Additionally, the EPG124may allow the viewer to navigate to a television program (e.g., content116(n)) from the EPG124itself. To provide additional information to the user, the EPG124may include one or more content characteristics that describe content represented in the EPG124. The content characteristics may include title, broadcast time, broadcast channel, output duration of the content, plot description, a rating (e.g., G, PG, PG-13, R, etc.), a principle actor's name, and so on. The EPG data may be communicated to the client104in a variety of ways. In one instance, the EPG data122(m) is broadcast to the client104utilizing a carousel file system. The carousel file system repeatedly broadcasts the EPG data over an out-of-band (OOB) channel to the client104over the network106. Although the head end112is illustrated as including the EPG data122(m), in another instance the EPG data122(m) is provided over the network106utilizing a separate EPG data service.

The client104may be configured as a computer that is capable of communicating over the network106, such as a desktop computer, a mobile station, an entertainment appliance, a set-top box126that is communicatively coupled to a display device128as illustrated, and so forth. Although the set-top box126is shown separately from the display device128, the set-top box126may be built into the display device128to form an integral unit. The client104may also relate to a person and/or entity that operate the client104. In other words, client104may describe a logical client that includes a user and/or a machine. Although one client104is illustrated, a plurality of clients may be communicatively coupled to the network106.

The client104may also include a database130having locally stored content132(j), where “j” can be any integer from 1 to “J”. For example, the client104may be configured as a DVR that stores the database130in hard disk memory. Due to the size of the memory, users are able to record content, such as content116(n) streamed from the head end112. As previously described, the DVR also offers control functions, such as the ability to pause content that is currently being broadcast and allows viewers to watch the content while still in progress from the point it was paused. The DVR plays back the content from disk memory, starting at the pause event, while continuing to record the currently-broadcast content in the disk memory. Additionally, the DVR may support other control functions, such as rewinding, fast forwarding a stored program, slow motion playback, and the like.

The client104is equipped with sufficient processing and storage capabilities to store and run a navigation module134. The navigation module134, when executed on the client104, provides control functions for interacting with content. For example, the control functions may include the DVR control functions as previously discussed, as well as channel selection, electronic program guide (EPG) navigation, and so on. In another implementation, the navigation module134provides media player functionality, such as to play media having audio and/or visual data, such as MP3 data.

In a further implementation, the client104may execute the navigation module134to cause recordation of the content116(n) at the distribution server118. For example, the navigation module134may form a request that is communicated to the distribution server118over the network106to record content108(k) communicated to the distribution server130from the content provider102. The distribution server118, in response to the request, records the requested content such that the navigation module134operates as a network digital video recorder (NDVR). Thus, through execution of the navigation module134, the client104may playback locally-stored content132(j), content116(n) that is stored remotely over the network106, and may even control the recordation and playback of the remotely stored content116(n) to the client104.

Generally, any of the functions described herein can be implemented using software, firmware (e.g., fixed logic circuitry), manual processing, or a combination of these implementations. The terms “module,” “functionality,” and “logic” as used herein generally represent software, firmware, or a combination of software and firmware. In the case of a software implementation, the module, functionality, or logic represents program code that performs specified tasks when executed on a processor (e.g., CPU or CPUs). The program code can be stored in one or more computer readable memory devices. The content recordation techniques described below are platform-independent, meaning that the content recordation techniques may be implemented on a variety of commercial computing platforms having a variety of processors.

The environment100supports a variety of techniques for recordation of the content132(j),116(n) through use of a recording document136. The recording document136, for instance, describes content to be recorded and may conform to an extensible Markup Language (XML) schema that is parsable by a parser module138to locate a particular content item. For example, the recording document136may describe a title and a start time for a desired content item. The parser module138is executed on the distribution server118to compare the title and the start time described in the recording document with the EPG data122(m) stored in the database120to determine if and when the particular content item is available. If the particular content item is available, a reference to the particular content item is added to a recording list140to cause the particular content item to be recorded. For example, the recording list140may be utilized by the distribution server118to record content116(n) at the head end112in a NDVR scenario. In another example, the recording list140is communicated to the client104to cause the navigation module134to record content132(j) locally in a DVR scenario. In a further example, the recording document136is communicated from the remote device142to the client104for parsing by the client104, an example of which is shown in relation toFIG. 2B.

The recording document136may be provided in a variety of ways. As illustrated inFIG. 1, the recording document136is stored on a remote device142that is communicatively coupled to the network106. Therefore, a user of the remote device142may provide the recording document136to the head end112to cause recording of content described by the recording document136. Thus, the recording document136may be provided remotely by the remote device142such that the user does not need to interact with the client104locally to cause recordation of desired content. A variety of other ways of providing the recording document136are described in relation toFIGS. 2A,2B, and3.

FIG. 2Ais an illustration of an exemplary system200showing the distribution server118, the client104, and the remote device142ofFIG. 1in greater detail. The client104includes a processor202and memory204. Processors are not limited by the materials from which they are formed or the processing mechanisms employed therein. For example, processors may be comprised of semiconductor(s) and/or transistors (e.g., electronic integrated circuits (ICs)). In such a context, processor-executable instructions may be electronically-executable instructions. Alternatively, the mechanisms of or for processors, and thus of or for a computing device, may include, but are not limited to, quantum computing, optical computing, mechanical computing (e.g., using nanotechnology), and so forth. Memory204may include one or more memory devices, such as read only memory (ROM), random access memory (RAM), hard disk memory, removable media memory devices, and so on.

The navigation module134and the recording list140are illustrated as being executed on the processor202and are storable in memory204. The EPG124is illustrated as being stored in the memory204and is executable on the processor202. It should be noted that in the illustrated system200ofFIG. 2A, the recording list140is depicted within the client104to show that the recording list140may be configured for use by the navigation module134to cause recordation of content, further discussion of which may be found starting in relation toFIG. 4.

The client104may also include a network interface206for receiving the content116(n) ofFIG. 1that is communicated (e.g., streamed) over the network106. For example, the network interface206may be configured as a tuner that receives broadcast content from over the network106, may be configured as a transmitter/receiver (transceiver) that is suitable for two-way communication over the network106, and so on. Thus, the network interface206may be configured to transmit and receive messages over the network to and from the head end112and/or the remote device142.

Content116(n) received from the network106via the network interface206may be stored in the database130for later output by the client104and/or provide for immediate output of the content116(n). The database130is illustrated as being separate from memory204, but may also be included in memory204. For example, the storage device for the database124may be configured as a hard disk drive and the memory204may be configured as RAM, both the memory204and the database130may be implemented as RAM, both the memory204and the database130may be implemented as removable memory, and so forth. The client104executes the navigation module134to retrieve the content132(j) from the database124and output the content132(j) through an output interface208for rendering on the display device122. Thus, in this implementation, the client104is capable of operating as a DVR that stores and plays back the content1320(j).

The client104may be locally controlled by a user via inputs provided by an input device210. The inputs are received by the client104from an input interface212over a local connection214. The input interface212, local connection214and input device210may be configured in a variety of ways. For example, the input interface212may be configured as a wireless port, such as an infrared (IR) or Bluetooth wireless port, for receiving wireless communications from input device210, such as a remote control device, a handheld input device, or any other wireless device, such as a wireless keyboard. In alternate embodiments, the input interface212may use an RF communication link or other mode of transmission to communicate with client104, such as a wired connection which may include a universal serial bus (USB) connection, and so on.

When output of content is requested, the navigation module134is executed on the processor202to obtain content, such as from content116(n) ofFIG. 1that is streamed from the distribution server118over the network106, content132(j) that is stored locally on the database130, and so on. The navigation module134may also restore the content to the original encoded format as provided by the content provider102ofFIG. 1. For example, content116(n) ofFIG. 1may be compressed and then streamed from the distribution server118to the client104. Therefore, when the navigation module134receives the content, the content may be decompressed for rendering by the display device128.

The distribution server118also includes a processor216and memory218. The parser module138is illustrated as being executed on the processor216and is storable in memory218. The memory218of the distribution server118is also illustrated as including a plurality of client state data220(l), where “l” can be any integer from 1 to “L”. The client state data220(l) is utilized to process requests to record content, such as at the head end112ofFIG. 1as content116(n) and/or at the client in database130as content132(j). For example, the distribution server118may include a content manager module222(hereinafter, “manager module”) that is executable on the processor216to manage client104content access. The client state data220(l), for instance, may specify parental blocks to prevent viewing of content items, may specify conditional access rights (e.g., digital access rights) of the client for particular items of content, rating limits, favorite channels, level of service provisioned, and so on. The manager module222, when executed, may determine if the client104is permitted (i.e., authorized) to record the particular content item, and if so, the distribution server118causes the client104, and specifically the navigation module132, to record the particular content item. In this way, the head end112provides an authoritative source for client state data220(l) in the system200and environment100as shown, respectively, inFIGS. 1 and 2. In an implementation, the distribution server118may be considered the primary source for the client state data220(l) for a particular client, even over the client104itself. For example, by storing the client state data220(l) on the distribution server118, a user may switch set-top boxes without transferring client state data between the set-top boxes. Further discussion of use of the client state data220(l) may be found in relation toFIG. 7.

The remote device142is also illustrated as including a processor224and memory226. The recording document136is illustrated as being stored in memory226and is executable on the processor224. The remote device142also includes a recording module228which is illustrated as being executed on the processor224and is storable in memory226. The recording module228, when executed, generates the recording document136for a particular content item. For example, the recording module228may provide a user interface for accepting user inputs that describe a particular content item. The user inputs are processed by the recording module228to generate a recording document136that follows a schema that is understood by the parser module138. The parser module138, when executed, parses the recording document136to locate and compare descriptive data in the recording document136with EPG data122(m) in the database120. EPG data122(m) that matches the descriptive data is then utilized to determine how to record a particular content item described in the recording document136. A reference to the particular content item is then added to the recording list140to cause the navigation module134to be executed on the client104to record the particular content item. A variety of other scenarios are also contemplated such that the user may cause recordation of content at the client104and/or the head end112ofFIG. 1, further examples of which may be found in relation to the following figure.

FIG. 2Bis an illustration of an exemplary system250showing the distribution server118, the client104, and the remote device142ofFIG. 1in greater detail such that the client includes the functionality to parse a recording document. In the system200described in relation toFIG. 2A, the distribution server acted as a central repository for client state data220(L) and executed the parser module138to parse the recording document136.

In the exemplary system250illustrated inFIG. 2B, however, the client104executes the parser module138to parse the recording document136that is communicated from the remote device142over the network106. The parser module138may then be utilized to populate the recording list140as previously described by comparing the recording document136with EPG124that is stored in the memory204. Thus, in this instance, the head end112acts to broadcast content116(n) over a broadcast network252and does not actively participate in the recordation of the content132(j) on the client104, further discussion of which may be found in relation toFIG. 6.

FIG. 3is an illustration of a system300showing a variety of content recordation techniques as implemented by the distribution server118and the client104ofFIG. 2A. One such content recordation technique is the inclusion of the recording document302within content108(k). For example, the client104may receive content108(k) from the content provider102ofFIG. 1. The content108(k) in this example is a television program which includes credits which describe the actors, producers, and so on. The credits may also include a preview for next week's episode of the television program. The preview has an embedded recording document302which causes an interactive icon to appear that, when selected, allows the user to automatically schedule a recording for the next episode of the television program.

The recording document302is then communicated to the distribution server118over the network110for parsing by the parser module138. The parser module138, when executed, locates the particular content item (e.g., the next episode of the television program) based on the recording document302and the EPG data122(m) and adds a reference to the particular content item to a recording list140. The recording list140causes the navigation module134to record the content locally in the database130as content132(j). Thus, the recording document302embedded in the content108(k) provides for automatic recording of the next episode of the television program with minimal user intervention.

In another such technique, a remote content recordation technique is provided by using a remote record service304. For example, the remote record service304may provide a web site which enables a user to select content for recording. The web site304may then communicate a recording document306that describes the content selected by the user to cause the client104to automatically record the selected content as previously described.

In a further such technique, the user interacts with the remote device142to remotely record content using the client104. For example, the remote device142may execute an email module308that causes an email that contains a recording document310to be communicated to the distribution server118. The distribution server118may then execute the parser module138to compare the descriptive data in the recording document310with the EPG data122(m) to determine if the particular content item referenced in the email is available. If so, the parser module138may then be executed to determine if access to the particular content item is permitted by the client104based on the client state data220(l). For example, the client state data220(l) may indicate whether the user subscribes to a content service package that includes the particular content item. If the user does have conditional access rights, the particular content item is added to the recording list140for causing the navigation module134to record the particular content item as content132(j) in the database130.

In another example, the remote device142may include a text messaging module312to receive a text message from another remote device. The text message may describe a particular content item, such as by providing the title, names of actors, genre, and so on. The text message may be examined to dynamically generate the recording document310that contains the content descriptions from the text message. The recording document310may then be communicated to the distribution server118for processing as previously described. In this example, the recording document310is dynamically generated, further discussion of which may be found in relation toFIGS. 5-7. Although the system300ofFIG. 3described the execution of the parser module138on the distribution server118, the parser module138may also be executed on the client104. For example, the parser module138, when executed on the client104, may compare the descriptive data in the recording document306with the EPG124(e.g., the EPG data utilized to form the EPG stored on the client104) to determine availability of the particular content item. Further discussion of execution of the parser module138by the client104may also be found in relation toFIGS. 5-7. Although a variety of exemplary content recordation techniques have been described, a variety of other content recordation techniques may also be provided that utilize a recording document for comparison with EPG data.

Exemplary Procedures

FIG. 4is a flow diagram depicting a procedure400in an exemplary implementation in which a recording document is utilized to record a particular content item. At block402, a recording document404is invoked by a remote device142for a particular content item. For example, the remote device142may access a web site406that provides an output of a web page408for viewing at the remote device142. The web page408, when provided to the remote device142, may also include the recording document404that describes a particular content item. For instance, the web page408may include a review of a television show that is available from a broadcast from a head end112. If the user wishes to record the television show, the user selects a link in the web page408, which causes the recording document to be invoked.

The recording document404in this example follows an XML recording schema. The XML recording schema is an abstract representation depicting the interrelationship between attributes and elements of an XML object, which in this instance is the recording document404or a portion of the recording document404. An example of the recording document404which complies with an exemplary XML recording schema is shown as follows:

The <body> element contains a single <metadata> element followed by one or more <programRecord> elements. The <metadata> element may encapsulate several sub-elements to providing additional data that describes the requested content item. The following is a list of exemplary <metadata> sub-elements:

ElementUsage<description>Description of the package (e.g., A Very SpecialEpisode of Friends)<expires>Date/Time after which the recording documentexpires.<moreInfoUrl>Hyperlink to the source's website (e.g.,http://entertainment.msn.com/tv)<updateUrl>Pointer to a URL that may contain updated versions ofthe recording document to account for schedulechanges.
One or more record definition elements may be included after the <metadata> element as shown in the above exemplary recording document404. A <programRecord> record definition element is included which covers both one-time and series recording scenarios.

As shown in the sample document above, the <programRecord> element may include several optional attributes, examples of which are described as follows:

The <programRecord> element may include a variety of element types as children that further describe the particular content item, such as <program> (e.g., a title of a television program), <service> (e.g., a broadcast channel that provides the television program), and <airing> (e.g., a time when the television program is to be broadcast). Each of these elements may occur more than once in the recording document404.

At block410, the remote device communicates the recording document404to the head end112. For example, the recording document404may be transmitted (i.e., pushed) over the network106, implemented using the Internet, for receipt by the head end112. In another example, the recording document is “pulled” from the remote device142by the head end112. For instance, the head end112may be configured to periodically monitor the remote device142for presence of the recording document404.

At block412, the head end112queries the database120of EPG data122(m) to determine if the particular content item described by the recording document404is available. The head end122, for instance, may execute the parser module138to locate data in the recording document404that describes the particular content item, which is illustrated at block412ofFIG. 4as “content description414”. The content description414(i.e., the descriptive data) is then compared with the EPG data122(m) to find a match. For example, the <program>, <service>, and <airing> elements may be compared with the EPG data122(m) to find a particular content item which most satisfies those elements. Thus, the parser module138, when executed, may determine how to record the particular content item that is described by the recording document by cross-referencing the content description414with the EPG data122(m).

In an implementation, the head end112utilizes minimum search field requirements before querying the database that contains EPG data122(m) (block412). For example, specific combinations of search criteria, when included in a recording document, may result in a failure in the query (block412) due to insufficient amount of information (e.g., elements) to locate the particular content item. For instance, a recording document that only specifies a <service> (e.g., a broadcast channel) may be considered as invalid unless a corresponding <program> and/or <airing> is provided. The following is a listing of exemplary legal combinations of the three elements previously described:

<program> (e.g., record this program anytime it is streamed, on any service);

<program>, <service> (record this program anytime it is streamed from a specified service);

<program>, <airing> (record this program at this time from any service);

<program>, <service>, <airing> (record this program at this time from this service); and

<service>, <airing> (record the named service at the given time).

Although three elements are described, a variety of other elements and combinations thereof may also be included in the recording document404to locate a particular content item.

Through use of elements and different combinations of the elements, for example, search criteria may be broadly or narrowly specified depending upon the desired implementation. For instance, a fan website may post a recording document for recording any episode of a particular television program no matter what time it is broadcast and no matter which channel broadcasts the television program. Such a recording document may specify the title of the television program (e.g., <program>) without supplying any other additional elements. In another instance, a website provided by a particular content broadcaster may supply a recording document that specifies episodes that are broadcast by that particular content broadcaster and does not wish to include episodes that are broadcast by rival broadcasters. In this instance, the recording document specifies the title of the television program (e.g., <program>) and the broadcaster (e.g., <service>).

Although some examples of search criteria have been described, a variety of other search criteria may also be specified in a recording document. For example, the recording document may specify alternative matching attributes, such as “(<program> and <service>) or (<service> and <airing>)”. Additionally, each of the elements may be specified in a variety of ways. For instance, a target service may be specified by call sign, name, affiliate, and so on. Thus, the recording document may flexibly describe search criteria as contemplated by a creator of the recording document.

The search criteria (i.e., elements) may also be processed so that the recording document is transportable between users having different respective content providers. For example, users may receive content through different channel lineups, the users may be located in different time zones, and so on. Time-based search criteria, for instance, may be specified using any time-zone and then normalized to a local time-zone when parsed. In another instance, the search criteria may be restricted to within a particular offset from coordinated universal time (UTC). Multiple criteria may be specified in this way so one time can be specified that applies only to Pacific Standard Time (PST) and Eastern Standard Time (EST), for example, and another time set for Mountain Standard Time (MST) and Central Standard Time (CST). In a further instance, a search “window” can be specified to allow the episode to be matched within a specific range of time around the time specified.

If the particular content item is available, then the head end adds a content reference418to the particular content item in the recording list140(block416). The content reference418, for instance, may specify a broadcast channel and time to record the referenced content item, map to a memory location of the particular content item in a database114ofFIG. 1at the head end112, and so on.

At block420, the head end112causes the client104to record the particular content item referenced in the recording list140. For example, the head end112may execute the parser module138to communicate the content reference418over the network106to the client104. The navigation module134, upon receipt of the content reference418, records the particular content item to the database130as specified by the content reference418. Thus, in this example, the remote device142is able to cause the client104to record a particular content item without direct interaction with the client104.

FIG. 5is an illustration of a system500in an exemplary implementation in which a graphical user interface (GUI)502is provided by the recording module228to dynamically generate the recording document136based on user input. In the previously described procedure400ofFIG. 4, the recording document404was preconfigured and obtained to record a particular content item. The recording document may also be dynamically generated based on user input to describe a particular content item for recording.

The remote device142, for example, includes the recording module228. The recording module228, when executed on the remote device142, provides an output for display on a display device504of the GUI502. The GUI504in this example provides an interface for entering keyword search elements which may be utilized to locate a particular content item. For instance, the user may utilize an input device to enter a portion of a title and actors in the particular content item, such as “Godfather”506, “Pacino”508, and “DeNiro”510. The recording module228utilizes these elements to form the recording document136. The recording document136is then communicated over the network106to the distribution server118and parsed by the parser module138as previously described to determine if the described particular content item of the recording document136is available.

In this example, the elements “Godfather”506, “Pacino”508and “De Niro”510are utilized to determine if the particular content item “Godfather II” is available by finding a content item described in the EPG data122(m) ofFIG. 1that satisfies each of these elements. In another implementation, a “best match” may be performed so that the content item described in the EPG data122(m) which satisfies the most elements in the recording document136is reported to the user via the GUI504. For example, Godfather II may not be available based on a query of the EPG data122(m). However, the movie Godfather I, which satisfies the elements “Godfather”506and “Pacino”508may be available. Therefore a result of the query, which indicates the availability of Godfather I, is output via the GUI504so that the user can decide whether to record that particular content item.

FIG. 6is an illustration of a system600in an exemplary implementation in which the recording module is executed to examine a textual description of content to dynamically generate a recording document. In the system500ofFIG. 5, the recording document136was dynamically generated based on user input. The recording document136may also be dynamically generated without user input.

The client104, for instance, may be configured as a set-top box126that is communicatively coupled to the display device128. The client104executes the navigation module134to access a textual description of a particular content item over the network106, which inFIG. 6is illustrated as a content review602that is available from a web site. The user, upon reading the content review602, may desire to record the particular content item described in the review. In this instance, however, the content review602does not include a preconfigured recording document as previously described in relation toFIG. 3. Therefore, the client104executes a recording module604to dynamically generate the recording document136based on the content review602.

The recording module604, for example, may be executed to examine the content review602to find one or more words which describe the particular content item. In an implementation, the recording module604compares words in the content review602with a database606of descriptive words which may be utilized to describe content, such as names of broadcast channels, titles, actors, and so on. For instance, the recording module604, when executed, locates the words “hardball”608, “Chris Matthews”610, and “MSNBC”612(MSNBC is a trademark of MSNBC Cable L.L.C. of New York, N.Y.). The recording module604then generates a recording document614and communicates it over the network106to a parser module616that is executable on another client618.

The parser module616, when executed on the other client618, compares the recording document614with an EPG620to determine if the particular content item described in the recording document614is available, and if so, causes a navigation module622to record the particular content item as content624(p), where “p” can be any integer from one to “P”, in the database626.

In another implementation, the recording module604and the parser module616are executed to directly compare words608-612in the content review602with the EPG124that is stored on the client104. In other words, the EPG124(and more particularly the EPG data that is utilized to configure the EPG124) provides the database606. In this implementation, the recording module604does not wait until after the recording document608is completely generated to perform the comparison, but rather compares words608-612with the EPG124.

It should be noted that in the system600ofFIG. 6, the client104executes the recording module604to generate the recording document136. Another client618executes the parser module616to determine if the particular content item is available based on another EPG620that is stored locally on the other client618. Thus, the content recordation techniques may also be utilized for interaction between clients104,618without directly involving the head end112ofFIG. 1. Further discussion of client execution of the parser module may be found in relation to the following figure.

FIG. 7is a flow diagram depicting a procedure700in an exemplary implementation in which a client dynamically generates a recording document that is utilized to determine availability of a particular content item for recording by the client. At block702, the client displays a textual description of a particular content item. A variety of textual descriptions may be displayed, such as the content review602ofFIG. 6, an email, a text message communicated from another client, and so on.

At block704, the client receives an input to active a recording module. For example, the client may provide an icon for selection by the user, a drop-down menu for activation of the recording module, and so on. At block706, the recording module, when executed, examines the text to locate descriptions of the particular content item. For instance, the recording module may first examine the text to locate words which are typically used to describe the <program>, <service>, and <airing> elements that were previously described. The recording module may also locate other words which describe the particular content item, such as actor, output duration of the content, genre, start time, stop time, plot, and so on.

At block708, the recording module generates a recording document that includes the located descriptions of the particular content item. The recording document, for instance, may be configured according to an XML recording schema that is understood by the parser module. The recording module then passes the recording document to the parser module (block710).

At block712, the parser module queries EPG data to locate the particular content item. In a first scenario, the parser module is executed on the client to query an EPG that is stored locally on the client. In a second scenario, the parser module is executed on the client to query EPG data that is stored at the head end, such as the EPG data122(m) stored in the database120at the head end112ofFIG. 1.

At decision block714, a determination is made as to whether the located content item conflicts with another content item in the recording list. For example, the recording list may be configured for implementation by a DVR that is capable of recording a single content item at any one point in time. Therefore, the parser module may be executed to flag conflicts in the recording list so that the referenced content items are recorded as desired. If there is a conflict (block714), a message is sent to the user (block716) so that the user may decide which of the conflicting content items is to be recorded, if any.

If the located content item does not conflict with another content item in the recording list (block714), a determination is made as to whether the client is authorized to record the content (block718). For example, the parser module may be executed to determine from the client state data220(l) stored at the distribution server118ofFIG. 2whether the client is permitted to access the referenced content item. The client state data220(l), for instance, may be utilized to indicate a variety of conditional access rights, such as parental blocks, digital rights management (DRM), content subscriptions, and so on.

If the client is authorized to record the content (block718), then the located content item is added to a recording list (block720). For instance, a reference to the located content item may be added which describes how to record the located content item, such as date, time, and channel of a broadcast of a television program, a memory location, and so on. The recording list may then be utilized to cause the navigation module to record the added content item (block722).

CONCLUSION