Methods and systems for managing content subscription data

A media guide application manages multiple content subscription accounts and stream requests, optimizing stream availability and simplifying account creation, addressing user frustration and improving viewing experiences.

JP2026063075APending Publication Date: 2026-04-10ADAIR GUYS INC
View PDF 0 Cites 0 Cited by

Patent Information

Authority / Receiving Office
JP · JP
Patent Type
Applications
Current Assignee / Owner
ADAIR GUYS INC
Filing Date
2026-01-13
Publication Date
2026-04-10

AI Technical Summary

Technical Problem

Users of content subscriptions face the burden of managing multiple accounts and are frustrated by insufficient streams, leading to dissatisfaction and potential cancellation of subscriptions due to inability to view content at preferred times.

Method used

A media guide application that manages user accounts and data across multiple subscription services, recommending services and plans based on user needs, detects stream requests exceeding available streams, and automatically generates accounts with content providers using authentication keys.

Benefits of technology

Reduces user frustration by optimizing stream availability, simplifying account management, and enhancing viewing experiences by recommending additional streams and creating accounts without manual user input.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 2026063075000001_ABST
    Figure 2026063075000001_ABST
Patent Text Reader

Abstract

To provide a suitable method and system for managing content subscription data. [Solution] In part, the control circuit receives a first authentication key from a content aggregator server associated with a second subscription service at a content provider server associated with a first subscription service before the user subscribes to the first subscription service. The control circuit generates and stores a first user account after comparing the first authentication key with acceptable authentications at the content provider server. In response to storing the first user account, the control circuit receives a request from the content aggregator server to allow the user to subscribe to the first subscription service, and the request includes a second authentication key. The control circuit compares the first authentication key with the second authentication key, and in response to determining whether the first authentication key matches the second authentication key, it verifies the legitimacy of the first user account and allows access to the first subscription service through the first user account.
Need to check novelty before this filing date? Find Prior Art

Description

Background Art

[0001] Services that provide content subscriptions often enable users to stream content provided by multiple content providers, and each provider in a content subscription provides a finite number of streams for accessing the content. However, users of content subscriptions may find that the task of managing data associated with those subscriptions is overwhelming both when the user subscribes and when the user is streaming content. That is, the user may find the process of creating an account and then remembering and maintaining confidential information with each account associated with each content provider to be monotonous and burdensome. In addition, all users of content subscriptions are interested in watching new episodes of a TV show as soon as they become available, and users may be dissatisfied with the insufficient number of streams made available by content providers when the number of users exceeds the number of available streams.

Summary of the Invention

Means for Solving the Problems

[0002] Therefore, a method and system for a media guide application are described herein that liberate users from having to manage multiple accounts for multiple subscription services. For example, by monitoring user activity and managing user accounts on behalf of the user, the media guide application may recommend subscription services and / or subscription service terms tailored to the individual needs of the user.

[0003] Furthermore, a media guide application may act on behalf of the user to determine which subscription service best meets the user's needs and / or a particular plan from a specific subscription service, and may read and process large amounts of data from numerous content providers. As will be discussed in detail below, a media guide application may process large amounts of data (often accessible only in computer-readable code) by comparing separate and heterogeneous datasets to identify trends and statistical optimizations for the user's benefit.

[0004] For example, a media guide application implemented on a control circuit may detect the number of instances where the number of requests to simultaneously stream media from a subscription service to different devices exceeds the number of available streams by analyzing data stream input and output metrics over a given time period. For example, the control circuit may analyze data stream input and output metrics to detect 12 instances during a user's subscription period where the number of requests to simultaneously stream media exceeds the number of available streams. In response, the control circuit may determine whether an alternative subscription service / plan could increase the number of available streams for the user, while controlling for other variables (e.g., price) compared with the data stream input and output metrics. If applicable, the control circuit may transmit a message recommending an alternative subscription service / plan (e.g., indicating that additional streams are available for purchase).

[0005] In some embodiments, the control circuit may detect multiple instances where the number of requests to simultaneously stream media from the subscription service to different devices exceeds the number of streams available to the user from the subscription service. For example, the control circuit may detect in 12 instances that the number of requests to simultaneously stream media from the subscription service to different devices exceeds the number of streams available to the user from the subscription service. In other words, on 12 occasions, at least one user was unable to stream content from the content subscription service. As a result, users who stream content using a subscription may become frustrated by their inability to view content at their preferred time. Furthermore, users may be unaware of their ability to purchase additional streams and may be unaware of the viewing habits of other users using subscriptions. Therefore, frustrated users may have few options to improve their viewing experience and may start streaming media using a competing subscription service or cancel their subscription entirely.

[0006] The control circuit may generate multiple timestamps, each corresponding to one of several instances. For example, if the control circuit detects 12 instances where the number of requests to simultaneously stream media from a subscription service to different devices exceeds the number of streams available to the user from the subscription service, the control circuit may generate multiple timestamps, each corresponding to one of the 12 instances. As a result, the control circuit may use timestamps to effectively record these instances where the user was unable to stream content due to an insufficient number of available streams, by correlating the timestamps with each instance.

[0007] The control circuit may then compare each of the multiple timestamps to a range of timestamps corresponding to the subscription period for the subscription service in order to determine the number of instances that occurred during the subscription period. For example, if the control circuit generates 12 timestamps, the control circuit may compare each of the 12 timestamps to the subscription period for the subscription service in order to determine the number of instances that fall within the subscription period (based on their corresponding timestamps). For example, the subscription period may be defined by a start timestamp and an end timestamp. The control circuit may then compare each of the 12 timestamps to determine whether each timestamp falls within the start and end timestamps of the subscription period. Based on the number of timestamps that fall within the range of the start and end timestamps of the subscription period, the control circuit may determine the number of instances that occurred during the subscription period.

[0008] In some embodiments, the control circuit may compare the number of instances that occurred on the server during the subscription period with a threshold number for the subscription period. For example, the control circuit may determine that the threshold number is set to 8 over a given subscription period, and then compare the two numbers. For example, the threshold number may represent the number of instances at which the user may subsequently become dissatisfied with the lack of available streams. By determining whether the threshold number is exceeded, the control circuit may determine whether the user is likely to want to acquire additional streams.

[0009] In some embodiments, the control circuit may transmit a message from the server to one of the different devices in response to the step of determining whether the number of instances that occurred during the subscription period exceeds a threshold number for the subscription period. For example, in response to the step of determining whether the number of instances that occurred during the subscription period (e.g., 12) exceeds a threshold number (e.g., 8), the control circuit transmits a message from the server to the device indicating that the user associated with the device can purchase additional streams. By transmitting the message, the control circuit may address user frustration over the inability to stream content and may provide the user with an opportunity to address the problem of an insufficient quantity of available streams.

[0010] In some embodiments, the control circuit may select a threshold number for the subscription period from a plurality of potential threshold numbers based on the length of the subscription period. For example, the control circuit may select a low threshold number (e.g., 10) for a one-month subscription period to take into account the fact that there are fewer instances where the number of requests to simultaneously stream media from the subscription service exceeds the number of streams available to the user from the subscription service during shorter time periods, such as a one-month period. Thus, instead of relying on a single static threshold, the control circuit may apply thresholds related to the user's viewing habits, as individual users have varying capabilities to tolerate streams that are unavailable to them.

[0011] In addition, or alternatively, the control circuit may select a threshold number for the subscription period from several potential threshold numbers based on the number of streams available to the user from the subscription service. For example, the control circuit may analyze the number of streams associated with a subscription and determine that a user associated with a subscription that has many available streams at one point in time has few streams and has added streams to minimize streaming problems caused by an insufficient number of streams. Thus, the control circuit may determine that a user of a content subscription characterized by few available streams is more likely to try to understand how often the number of requests to stream media simultaneously exceeds the number of streams available to the user from the subscription service. On the other hand, a user of a content subscription characterized by many streams available to the user from the subscription service may be less likely to try to understand how often the number of requests to stream media simultaneously exceeds the number of streams available to the user from the subscription service, because the user may have already increased the number of available streams to avoid situations where the number of requests to stream media simultaneously exceeds the number of streams available to the user from the subscription service.

[0012] In addition, or alternatively, the control circuit may compare each of several timestamps to a range of timestamps corresponding to a portion of the subscription period for the subscription service and determine the number of multiple instances that occurred during that portion of the subscription period. For example, the control circuit may compare each timestamp to a range of timestamps corresponding to a portion of the subscription period in which a popular show is broadcast (e.g., all portions of the subscription period corresponding to the 7pm to 9pm time slot on Wednesday, corresponding to the broadcast of a new episode of the show "The Simpsons") and determine that 10 timestamp occurrences occurred within the range of timestamps corresponding to that portion of the subscription period. Furthermore, the control circuit may, on the server, compare the number of multiple instances that occurred during a portion of the subscription period to a threshold number for that portion of the subscription period. For example, the control circuit compares the number of multiple instances that occurred during a portion of the subscription period (e.g., 10) to a threshold number (e.g., 6). Finally, in response to the step of determining that the number of multiple instances that occurred during a portion of the subscription period exceeds a threshold number for that portion of the subscription period, the control circuit may modify the message transmitted from the server to one of the different devices. For example, the control circuit determines that the number of multiple instances that occurred during a portion of the subscription period (e.g., 10) exceeds a threshold number (e.g., 6). In response, the control circuit modifies the message transmitted from the server to one of the devices used by the user streaming media from the subscription, for example, by indicating that the number of requests to stream media simultaneously often exceeds the number of streams available to the user from the subscription service during a corresponding portion of the subscription period (for example, during the time slot between 7 p.m. and 9 p.m. on Wednesday, corresponding to the broadcast of a new episode of the show "The Simpsons").

[0013] In some embodiments, the control circuit may select a subset of threshold numbers for the subscription period from a plurality of potential threshold numbers based on the length of the subscription period. For example, the control circuit may select a larger number (e.g., 20) for a subset of threshold numbers for the subscription period when the subscription period is longer (e.g., one year) compared to a shorter subscription period (e.g., one month), in which case the control circuit may select a smaller number (e.g., 3). Thus, the control circuit may take into account the fact that while the probability of instances where the number of requests to stream media simultaneously exceeds the number of streams available to the user from the subscription service remains constant over time, more instances will occur over longer time periods than over shorter time periods.

[0014] In some embodiments, the control circuit may select a threshold number for a portion of the subscription period from a plurality of potential threshold numbers based on the dates corresponding to that portion of the subscription period. For example, in response to the step of determining that the date of the season premiere of a popular television show (e.g., "The Simpsons") falls within a portion of the subscription period, the control circuit may select a lower threshold number for that portion of the subscription period to take into account the fact that the majority of users of the subscription are interested in watching episodes of the season of the popular television show (e.g., "The Simpsons").

[0015] In some embodiments, the control circuit may select a threshold number for a portion of the subscription period from a plurality of potential threshold numbers based on the time corresponding to that portion of the subscription period. For example, in response to the step of determining that a portion of the subscription period (e.g., a time slot between 8 p.m. and 10 p.m. during a given day) corresponds to the time when users of the subscription are most likely to stream media, the control circuit selects a low threshold number. Thus, when selecting a threshold number, the control circuit may consider the fact that a time range of peak demand may exist based on users' viewing habits (e.g., the majority of users of the subscription service may want to relax after work by watching streaming media).

[0016] In addition, or alternatively, the control circuit may select a threshold number for a portion of a subscription period from several potential threshold numbers based on the number of media assets that become available from the subscription service during that portion of the subscription period. For example, some subscription services regularly add new media assets (e.g., three full seasons of "The Simpsons") to their media lineup. The control circuit may determine the number of media assets that become available from the subscription service during that portion of the subscription period based on the number of media assets added to the subscription service media offering. For example, if the number of media assets that become available from the subscription service during that portion of the subscription period exceeds the number of media assets that become available from the subscription service during the other portion of the subscription period, the control circuit may select a lower threshold number to take into account the fact that users of the subscription are more likely to stream the media assets and therefore more likely to try to understand how often the number of requests exceeds the number of streams available to users from the subscription service.

[0017] In some embodiments, the control circuit may transmit a message containing recommendations to reduce the frequency of multiple instances. For example, in response to a step in determining that the number of multiple instances that occurred during the subscription period exceeds a threshold number for the subscription period, the control circuit transmits a message from the server to one of the different devices used by the subscriber's user. The message may contain recommendations to reduce the frequency of multiple instances. For example, the control circuit may inform the user that they are more likely to successfully stream media outside of a certain time (for example, outside the 7pm to 9pm time slot on Wednesdays, corresponding to the broadcast of a new episode of the show "The Simpsons," which other users may be interested in watching).

[0018] Furthermore, by subscribing to a content aggregator service, users may gain access to media content provided by multiple subscription services. The media content provided by each subscription service is not always directly available through the content aggregator service; therefore, users are forced to access the content via each content provider's website. Before being able to access the content, users must create accounts with each content provider, a task that users may find monotonous and cumbersome. In addition, the process of remembering and maintaining sensitive information associated with multiple subscription service accounts can further overwhelm users.

[0019] In some embodiments, the control circuit may automatically receive authentication information from the content aggregator service. For example, a media guide application implemented on the control circuit may receive authentication information and associate it with a user account before the control circuit receives a request from the user to subscribe to the subscription service. The control circuit may then receive a request from the user to subscribe to the subscription service, thus verifying the legitimacy of the account and granting the user access to the provision of the subscription service.

[0020] The control circuit may receive a first authentication key from a content aggregator server (e.g., Rovi Super Aggregator) associated with a second subscription service at a content provider server (e.g., Hulu) associated with a subscription service, the first authentication key being received before the user subscribes to the first subscription service. For example, the user may subscribe to a content aggregator service (i.e., the second subscription service). As soon as the user completes their registration for the second subscription service, the control circuit implemented on the content aggregator server associated with the second subscription service may generate an authentication key to associate the user with some or all of the subscription services available as part of the content aggregator subscription, and forward the generated authentication key to the server associated with each subscription service (e.g., the first subscription service). Each authentication key may be encrypted to ensure that the information stored in the key is securely transmitted to the server associated with each subscription service. In addition, each authentication key may contain information identifying the user and the second subscription service. Next, a control circuit implemented on the content provider server associated with the first subscription service may receive an authentication key generated from the content aggregator server. In some cases, the control circuit implemented on the content provider server may decode the authentication key and extract the information stored within the key. The control circuit may also store the authentication key on the content provider server. In this way, the authentication information associated with the first user may be transmitted to the first subscription service without burdening the user with manually creating an account.

[0021] A control circuit implemented on the content provider server may compare a first authentication key with a set of first acceptable authentication keys and determine, based on the first authentication key, whether to generate a first user account for a first subscription service. For example, the control circuit implemented on the content provider server may extract information stored in the first authentication key and determine the name of the subscription service (e.g., Rovi Super Aggregator) listed in part of the key associated with the identifier of the second subscription service. The control circuit may then read a list of previously identified subscription services that would allow the control circuit to generate a user account on the first subscription service, and compare the name of each subscription service in the read list. In effect, the control circuit implemented on the content provider server can securely receive information about the new user from the content aggregator (i.e., the second subscription service) while maintaining control over the account being created. For example, the first subscription service may enter into an agreement with the second subscription service to offer subscriptions on the first subscription service at a discounted price. Therefore, by encapsulating information about the second provider within the authentication key, the first subscription service ensures that only user accounts associated with trusted content aggregators are created.

[0022] A control circuit implemented on the content provider server may generate a first user account on the content provider server in response to a step that determines whether a first authentication key matches one of a set of first acceptable authentication keys. For example, the control circuit may use information contained in the authentication key, such as a username, password, and subscription service name, to create the information necessary to generate the account on the content provider server. In some cases, the control circuit may store an indication associated with the first account that specifies that the account's legitimacy has not been verified. In other words, the account is created but not accessible to the user. If the user or a second subscription service decides in the future to verify the legitimacy of the account, the control circuit implemented on the content provider server may efficiently verify the legitimacy of the account with little or no input requested by the user, as will be described in more detail below.

[0023] A control circuit implemented on the content provider server may store the first user account in a database entry indicating that the first user account corresponds to the first authentication key. For example, the control circuit implemented on the content provider server may store information related to the generated user account in a database entry stored in the database. The control circuit may further associate the user account with the authentication key by, for example, storing a pointer to the location of the authentication key in a database entry associated with the user account. By associating the stored user account with the first authentication key, the control circuit implemented on the content aggregator server may ensure that the legitimacy of the account can be quickly verified when a second subscription or a user decides to verify the legitimacy of the account on the first subscription service.

[0024] A control circuit implemented on a content provider server may, following the step of storing a first user account, receive a request from a content aggregator server for the user to subscribe to a first subscription service, the request including a second authentication key. The control circuit may receive the second authentication key in response to a user request to subscribe to the first subscription service. For example, a control circuit implemented on a content aggregator server may detect that a user of a second subscription service (e.g., Rovi Super Aggregator) wishes to subscribe to a first subscription service (e.g., Hulu). In a different embodiment, a control circuit implemented on a second service may automatically send a request to the first service when the cost of subscribing to the first service meets a cost criterion. The control circuit on the first subscription service may decode the information stored in the second key, read the information stored in the second key, and store the authentication key on the content provider server. By providing a framework for receiving a second authentication key, a control circuit implemented on the content provider server may securely verify the legitimacy of the user's account.

[0025] A control circuit implemented on the content provider server may compare a first authentication key with a second authentication key. For example, the control circuit implemented on the content provider server may read information from the second key associated with the name of the user associated with the key, and then query the database to determine whether an account associated with the identified user has been created previously. In a different embodiment, the control circuit implemented on the content provider server may compare unencrypted data containing the second authentication key with unencrypted data of previously received authentication keys stored on the content provider server.

[0026] The control circuit implemented on the content provider server may prove the legitimacy of the first user account in response to the step of determining that the first authentication key matches the second authentication key. For example, based on the comparison of the first authentication key with the second authentication key, the control circuit implemented on the content provider server may then identify the user account associated with either key. The control circuit may then query the database to identify the account and store an indication that the legitimacy of the account has been proven. By proving the legitimacy of the account, the control circuit implemented on the content provider server enables the user authenticated by the content provider server to access the media content provided by the first subscription service.

[0027] In some embodiments, in response to the step of proving the legitimacy of the first user account, the control circuit implemented on the first server may permit access to the first subscription service through the first user account. For example, the control circuit implemented on the content provider server may generate a message indicating that the account is available for use and transmit it to the content aggregator server. In this way, the control circuit implemented on the content provider server can notify the user that the provision of the second subscription service can be accessed by the user.

[0028] In some embodiments, the first authentication key is an encryption key based on the username and password for the user assigned by the second subscription service. For example, the authentication key may include an automatically generated password that complies with the password requirements of the first subscription service and a username corresponding to the username associated with the content provider server.

[0029] In some embodiments, the first plurality of acceptable authentication keys are received at the content provider server from the content aggregator server. For example, a control circuit implemented at the content provider server may receive a list of authentication keys from a second subscription service at regular intervals. For example, a control circuit implemented on the content aggregator server may transmit, on a daily basis, authentication keys associated with all new users who have created an account with the second subscription service.

[0030] In some embodiments, a database entry stored at the content provider server includes a first database field that includes a pointer to a first user account and a second database field that includes a first authentication key. For example, a database entry on the content provider server may include a pointer stored in a first database field that refers to a second database entry that contains information about the user's account, such as the user's name, password, and subscription level.

[0031] In some embodiments, a database entry stored at the content provider server includes a third database field that includes a subscription agreement for a first subscription service. The subscription agreement may determine the price of the subscription, and the price that the user is to bear for the subscription may also be stored in the third database field.

[0032] In some embodiments, a request from a content aggregator server to have a user subscribe to a first subscription service is transmitted from the content aggregator server without further user input in response to the user selecting a subscription level for a second subscription service at the content aggregator server. For example, a control circuit implemented on the content aggregator server may generate two subscription levels: a “premium” level which may include a subscription to the first subscription service, and a “basic” level which does not include a subscription to the first subscription service. The control circuit implemented on the content aggregator server may transmit the request to the second subscription service only in response to the step of determining that the user has selected a “premium” level subscription.

[0033] In some embodiments, a control circuit implemented on the content provider server may transmit a confirmation from the content provider server to the content aggregator server in response to a step of verifying the legitimacy of a first user account. For example, once the control circuit has verified the legitimacy of the user account, the control circuit may transmit a message containing the confirmation to the content aggregator server. By transmitting the confirmation, the user of the second service may be informed that the user has access to media associated with the first subscription service.

[0034] In some embodiments, a control circuit implemented on the content provider server may receive a request from the content aggregator server to access media content of a first subscription service through a first user account. For example, the control circuit implemented on the content provider server may receive a user request to access media content (e.g., an episode of the television program "The Simpsons"). In response to the step of receiving a request from the content aggregator server to access media content of a first subscription service through a first user account, the control circuit implemented on the content aggregator server may create a direct connection between the content provider server and the user television device 402. By creating a direct connection, the media content may be transferred between the content provider server and the user television device 402 more quickly and efficiently than if the media content were transmitted from the content provider server to the content aggregator server before being transferred to the user television device 402.

[0035] In some embodiments, a control circuit implemented on a content aggregator server may read a user interface skin associated with a first subscription service in response to a direct connection between a content provider server and a user television device 402. For example, the user interface skin associated with the first subscription service may define the appearance of user interface elements such as background color, font, and menu location of the user interface associated with the first subscription service. In addition, the interface skin may include brand characteristics defined by the subscription service, such as a logo associated with the first subscription service and a color palette associated with the first subscription service, which may define the background color of screen elements and may be displayed in defined locations on the screen. The control circuit may extract parameters associated with the user interface skin and apply the parameters to a user interface skin associated with a second subscription service.

[0036] In some embodiments, a control circuit implemented on the content provider server may receive a user selection of a media content list from a content aggregator server through a first user account. For example, the control circuit implemented on the content aggregator server may utilize a connection established between the content provider server and the content aggregator server to read a media content list of content available on the content provider server. The control circuit implemented on the content aggregator server may then detect a selection of a media content list created by a user, who is associated with an account on the content aggregator server. Once the control circuit implemented on the content aggregator server receives a selection, it may generate media assets to display the media content list selected by the user. For example, the control circuit implemented on the content aggregator server may read the media assets using a connection established between the content provider and the content aggregator server. The media assets may be read via download or via streaming.

[0037] It should be noted that the systems and / or methods described above may be applied to or used in accordance with other systems, methods and / or apparatus. This specification also provides, for example, the following items: (Item 1) A method for managing confidential information across multiple subscription services, The content provider server associated with the first subscription service receives a first authentication key from a content aggregator server associated with the second subscription service, wherein the first authentication key is received before the user subscribes to the first subscription service. The first authentication key is compared with a first set of acceptable authentication keys, and based on the first authentication key, a first user account is generated for the first subscription service. In response to determining that the first authentication key matches one of the first multiple acceptable authentication keys, the content provider server generates the first user account, The content provider server stores the first user account in a database entry indicating that the first user account corresponds to the first authentication key, Following the storage of the first user account, the content provider server receives a request from the content aggregator server to subscribe the user to the first subscription service, the request including a second authentication key. Comparing the first authentication key with the second authentication key, In response to determining that the first authentication key matches the second authentication key, the legitimacy of the first user account is verified, In response to verifying the legitimacy of the first user account, granting access to the first subscription service through the first user account. Methods that include... (Item 2) The method according to item 1, wherein the first authentication key is an encryption key based on the username and password for the user assigned by the second subscription service. (Item 3) The first set of multiple acceptable authentication keys are received by the content provider server from the content aggregator server, as described in item 1. (Item 4) The method according to item 1, wherein the database entry includes a first database field containing a pointer to the first user account and a second database field containing the first authentication key. (Item 5) The method according to item 1, wherein the database entry includes a third database field containing the subscription terms for the first subscription service. (Item 6) The method according to item 1, wherein the request from the content aggregator server to cause the user to subscribe to the first subscription service is transmitted from the content aggregator server without further user input in response to the user selecting a subscription level for the second subscription service at the content aggregator server. (Item 7) The method according to item 1, further comprising transmitting a second subscription service confirmation from the content provider server to the content aggregator server in response to verifying the legitimacy of the first user account. (Item 8) The content aggregator server receives a second request to access the media content of the first subscription service through the first user account, In response to receiving a second request from the content aggregator server to access the media content of the first subscription service through the first user account, a direct connection is created between the content provider server and the user device. The method described in item 1, further including the method described in item 1. (Item 9) In response to the direct connection between the content provider server and the user device, the user interface skin associated with the first subscription service is loaded. Using the aforementioned user interface skin, generate a list of media content. The method described in item 8, further including the method described in item 8. (Item 10) The content aggregator server receives the user selection of the media content list through the first user account, To generate media assets corresponding to the aforementioned media content list and to display them. The method described in item 9, further including the method described in item 9. (Item 11) A system for managing confidential information across multiple subscription services, wherein the system comprises a control circuit, and the control circuit is The content provider server associated with the first subscription service receives a first authentication key from a content aggregator server associated with the second subscription service, wherein the first authentication key is received before the user subscribes to the first subscription service. The first authentication key is compared with a first set of acceptable authentication keys, and based on the first authentication key, a first user account is generated for the first subscription service. In response to determining that the first authentication key matches one of the first multiple acceptable authentication keys, the content provider server generates the first user account, The content provider server stores the first user account in a database entry indicating that the first user account corresponds to the first authentication key, Following the storage of the first user account, the content provider server receives a request from the content aggregator server to subscribe the user to the first subscription service, the request including a second authentication key. Comparing the first authentication key with the second authentication key, In response to determining that the first authentication key matches the second authentication key, the legitimacy of the first user account is verified, In response to verifying the legitimacy of the first user account, granting access to the first subscription service through the first user account. A system configured to perform the following actions. (Item 12) The system described in item 11, wherein the first authentication key is an encryption key based on the username and password for the user assigned by the second subscription service. (Item 13) The first set of acceptable authentication keys are received by the content provider server from the content aggregator server, as described in item 11. (Item 14) The system described in item 11, wherein the database entry includes a first database field containing a pointer to the first user account and a second database field containing the first authentication key. (Item 15) The system described in item 11, wherein the database entry includes a third database field containing the subscription terms for the first subscription service. (Item 16) The system according to item 11, wherein the request from the content aggregator server to cause the user to subscribe to the first subscription service is transmitted from the content aggregator server without further user input in response to the user selecting a subscription level for the second subscription service at the content aggregator server. (Item 17) The system according to item 11, wherein the control circuit is further configured to transmit a second subscription service confirmation from the content provider server to the content aggregator server in response to verifying the legitimacy of the first user account. (Item 18) The control circuit further, The content aggregator server receives a second request to access the media content of the first subscription service through the first user account, In response to receiving a second request from the content aggregator server to access the media content of the first subscription service through the first user account, a direct connection is created between the content provider server and the user device. The system described in item 11, configured to perform the following actions. (Item 19) The control circuit further, In response to the direct connection between the content provider server and the user device, the user interface skin associated with the first subscription service is loaded. Using the aforementioned user interface skin, generate a list of media content. The system described in item 18, configured to perform the following actions. (Item 20) The control circuit further, The content aggregator server receives the user selection of the media content list through the first user account, To generate media assets corresponding to the aforementioned media content list and to display them. The system described in item 19, configured to perform the following actions. (Item 21) A system for managing confidential information across multiple subscription services, A means for receiving a first authentication key from a content aggregator server associated with a second subscription service, wherein the first authentication key is received by the user before subscribing to the first subscription service, in a content provider server associated with a first subscription service. Means for comparing the first authentication key with a first plurality of acceptable authentication keys and determining whether to generate a first user account for the first subscription service based on the first authentication key, In response to determining that the first authentication key matches one of the first multiple acceptable authentication keys, the content provider server provides means for generating the first user account, The content provider server includes means for storing the first user account in a database entry indicating that the first user account corresponds to the first authentication key, Following the storage of the first user account, the content provider server provides means for receiving a request from the content aggregator server for the user to subscribe to the first subscription service, wherein the request includes a second authentication key. Means for comparing the first authentication key with the second authentication key, In response to determining that the first authentication key matches the second authentication key, means for verifying the legitimacy of the first user account, In response to verifying the legitimacy of the first user account, means for granting access to the first subscription service through the first user account, A system equipped with these features. (Item 22) The system described in item 21, wherein the first authentication key is an encryption key based on the username and password for the user assigned by the second subscription service. (Item 23) The first set of multiple acceptable authentication keys are received by the content provider server from the content aggregator server, as described in item 21. (Item 24) The system described in item 21, wherein the database entry includes a first database field containing a pointer to the first user account and a second database field containing the first authentication key. (Item 25) The system described in item 21, wherein the database entry includes a third database field containing the subscription terms for the first subscription service. (Item 26) The system according to item 21, wherein the request from the content aggregator server to cause the user to subscribe to the first subscription service is transmitted from the content aggregator server without further user input in response to the user selecting a subscription level for the second subscription service at the content aggregator server. (Item 27) The system according to item 21, further comprising means for transmitting a second subscription service confirmation from the content provider server to the content aggregator server in response to verifying the legitimacy of the first user account. (Item 28) Means for receiving a second request from the content aggregator server to access the media content of the first subscription service through the first user account, In response to receiving a second request from the content aggregator server to access media content of the first subscription service through the first user account, means for creating a direct connection between the user device and the content aggregator server. The system described in item 21, further comprising the features described therein. (Item 29) Means for loading a user interface skin associated with the first subscription service in response to the direct connection between the content provider server and the user device, Means for generating a media content list using the aforementioned user interface skin and The system described in item 28, further equipped with the features described therein. (Item 30) A means for receiving a user selection from the content aggregator server via the first user account in the media content list, Means for generating media assets to display the aforementioned media content list, The system described in item 29, further comprising the features described therein. (Item 31) A method for managing confidential information across multiple subscription services, The content provider server associated with the first subscription service receives a first authentication key from a content aggregator server associated with the second subscription service, wherein the first authentication key is received before the user subscribes to the first subscription service. The first step is to read out multiple acceptable authentication keys, The first authentication key is compared with a plurality of first acceptable authentication keys, and a determination is made based on the first authentication key whether to generate a first user account for the first subscription service. In response to determining that the first authentication key matches one of the first multiple acceptable authentication keys, the content provider server generates the first user account, The content provider server stores the first user account in a database entry indicating that the first user account corresponds to the first authentication key, Following the storage of the first user account, the content provider server receives a request from the content aggregator server to subscribe the user to the first subscription service, the request including a second authentication key. Comparing the first authentication key with the second authentication key, In response to determining that the first authentication key matches the second authentication key, the legitimacy of the first user account is verified, In response to verifying the legitimacy of the first user account, granting access to the first subscription service through the first user account. Methods that include... (Item 32) The method according to item 31, wherein the first authentication key is an encryption key based on the username and password for the user assigned by the second subscription service. (Item 33) The first set of multiple acceptable authentication keys are received by the content provider server from the content aggregator server, as described in any of items 31-32. (Item 34) The method according to any one of items 31-33, wherein the database entry includes a first database field containing a pointer to the first user account and a second database field containing the first authentication key. (Item 35) The database entry is the method described in any of items 31-34, including a third database field containing the subscription terms for the first subscription service. (Item 36) The method according to any one of items 31-35, wherein the request from the content aggregator server to cause the user to subscribe to the first subscription service is transmitted from the content aggregator server without further user input in response to the user selecting a subscription level for the second subscription service at the content aggregator server. (Item 37) The method according to any one of items 31-36, further comprising transmitting a second subscription service confirmation from the content provider server to the content aggregator server in response to verifying the legitimacy of the first user account. (Item 38) The content aggregator server receives a second request to access the media content of the first subscription service through the first user account, In response to receiving a second request from the content aggregator server to access the media content of the first subscription service through the first user account, a direct connection is created between the content provider server and the user device. The method described in any of items 31-37, further including the method described in any of items 31-37. (Item 39) In response to the direct connection between the content provider server and the user device, the user interface skin associated with the first subscription service is loaded. Using the aforementioned user interface skin, generate a list of media content. The method described in any of items 31-38, further including the method described in any of items 31-38. (Item 40) The content aggregator server receives the user selection of the media content list through the first user account, To generate media assets corresponding to the aforementioned media content list and to display them. The method described in any of items 31-39, further including the method described in any of items 31-39. (Item 41) A non-transient, computer-readable medium having instructions recorded thereon for managing confidential information across multiple subscription services, wherein the instructions are: A command in a content provider server associated with a first subscription service to receive a first authentication key from a content aggregator server associated with a second subscription service, wherein the first authentication key is received before the user subscribes to the first subscription service, and the command A command to compare the first authentication key with a first set of acceptable authentication keys and to determine whether to generate a first user account for the first subscription service based on the first authentication key, In response to determining that the first authentication key matches one of the first multiple acceptable authentication keys, the content provider server gives an instruction to generate the first user account, The content provider server includes an instruction to store the first user account in a database entry indicating that the first user account corresponds to the first authentication key, Following the storage of the first user account, the content provider server receives an instruction from the content aggregator server for a request to cause the user to subscribe to the first subscription service, wherein the request includes an instruction and a second authentication key. An instruction to compare the first authentication key with the second authentication key, In response to determining that the first authentication key matches the second authentication key, an instruction to verify the legitimacy of the first user account, In response to verifying the legitimacy of the first user account, an instruction granting access to the first subscription service through the first user account: A non-transient, computer-readable medium equipped with [specific features / features]. (Item 42) The first authentication key is an encryption key based on the username and password for the user assigned by the second subscription service, as described in item 41, on a non-transient, computer-readable medium. (Item 43) The first set of acceptable authentication keys are received from the content aggregator server to the content provider server in a non-transient, computer-readable medium as described in item 41. (Item 44) The database entry in the non-transient computer-readable medium described in item 41 includes a first database field containing a pointer to the first user account and a second database field containing the first authentication key. (Item 45) The database entry is a non-transient, computer-readable medium as described in item 41, including a third database field containing the subscription terms for the first subscription service. (Item 46) The request from the content aggregator server to cause the user to subscribe to the first subscription service is transmitted from the content aggregator server without further user input in response to the user selecting a subscription level for the second subscription service at the content aggregator server, in a non-transient computer-readable medium as described in item 41. (Item 47) A non-transient computer-readable medium as described in item 41, further comprising an instruction to transmit a second subscription service confirmation from the content provider server to the content aggregator server in response to verifying the legitimacy of the first user account. (Item 48) The aforementioned instruction further states, A command to receive a second request from the content aggregator server to access the media content of the first subscription service through the first user account, In response to receiving a second request from the content aggregator server to access the media content of the first subscription service through the first user account, the content aggregator server issues a command to create a direct connection between the content provider server and the user device. A non-transient computer-readable medium as described in item 41, comprising the features described above. (Item 49) The aforementioned instruction further states, A command to load the user interface skin associated with the first subscription service in response to the direct connection between the content provider server and the user device, Using the aforementioned user interface skin, the commands generated to display the media content list and A non-transient computer-readable medium as described in item 48, comprising the features described above. (Item 50) The aforementioned instruction further states, The content aggregator server receives a command to receive a user selection from the media content list via the first user account, Commands to generate to display media assets corresponding to the aforementioned media content list and A non-transient, computer-readable medium as described in item 49, further comprising the features described above. (Item 51) A method for recommending to users whether to increase the number of content streams from a subscription service, Detecting multiple instances in which the number of requests to simultaneously stream media from the subscription service to different devices exceeds the number of streams available to the user from the subscription service, The process involves generating multiple timestamps, each of which corresponds to one of the multiple instances, Each of the aforementioned multiple timestamps is compared with a range of timestamps corresponding to the subscription period for the subscription service, and the number of the aforementioned multiple instances that occurred during the subscription period is determined. On the server, the number of instances that occurred during the subscription period is compared with a threshold number for the subscription period, In response to determining that the number of instances that occurred during the subscription period exceeds the threshold number for the subscription period, the server transmits a message to one of the different devices. Methods that include... (Item 52) The method according to item 51, further comprising selecting the number of thresholds for the subscription period from a plurality of potential thresholds based on the length of the subscription period. (Item 53) The method of item 51, further comprising selecting the number of thresholds for the subscription period from a plurality of potential thresholds based on the number of streams available to the user from the subscription service. (Item 54) The process involves comparing each of the aforementioned multiple timestamps with a range of timestamps corresponding to a portion of the subscription period for the subscription service, and determining the number of the aforementioned multiple instances that occurred during that portion of the subscription period. The server compares the number of instances that occurred during a portion of the subscription period with a threshold number for that portion of the subscription period. In response to determining that the number of instances that occurred during the portion of the subscription period exceeds the threshold number for that portion of the subscription period, the server modifies the message sent to one of the different devices. The method described in item 51, further including the method described in item 51. (Item 55) The method of item 54, further comprising selecting the number of thresholds for a portion of the subscription period from a plurality of potential threshold numbers based on the length of the subscription period. (Item 56) The method of item 54, further comprising selecting a portion of the threshold number for the subscription period from a plurality of potential threshold numbers based on the number of streams available to the user from the subscription service. (Item 57) The method of item 54, further comprising selecting the number of thresholds for the portion of the subscription period from a plurality of potential threshold numbers based on the date corresponding to the portion of the subscription period. (Item 58) The method of item 54, further comprising selecting the number of thresholds for the portion of the subscription period from a plurality of potential threshold numbers based on the time corresponding to the portion of the subscription period. (Item 59) The method of item 54, further comprising selecting the threshold number for the portion of the subscription period from a plurality of potential threshold numbers based on the number of media assets that become available from the subscription service during the portion of the subscription period. (Item 60) The method described in item 51, wherein the message includes recommendations for reducing the frequency of the multiple instances. (Item 61) A system for recommending to a user whether to increase the number of content streams from a subscription service, the system comprising a control circuit, the control circuit comprising: Detecting multiple instances in which the number of requests to simultaneously stream media from the subscription service to different devices exceeds the number of streams available to the user from the subscription service, The process involves generating multiple timestamps, each of which corresponds to one of the multiple instances, Each of the aforementioned multiple timestamps is compared with a range of timestamps corresponding to the subscription period for the subscription service, and the number of the aforementioned multiple instances that occurred during the subscription period is determined. On the server, the number of instances that occurred during the subscription period is compared with a threshold number for the subscription period, In response to determining that the number of instances that occurred during the subscription period exceeds the threshold number for the subscription period, the server transmits a message to one of the different devices. A system configured to perform the following actions. (Item 62) The system according to item 61, wherein the control circuit is further configured to select the number of thresholds for the subscription period from a plurality of potential thresholds based on the length of the subscription period. (Item 63) The system according to item 61, wherein the control circuit is further configured to select the number of thresholds for the subscription period from a plurality of potential thresholds based on the number of streams available to the user from the subscription service. (Item 64) The control circuit further, The process involves comparing each of the aforementioned multiple timestamps with a range of timestamps corresponding to a portion of the subscription period for the subscription service, and determining the number of the aforementioned multiple instances that occurred during that portion of the subscription period. The server compares the number of instances that occurred during a portion of the subscription period with a threshold number for that portion of the subscription period. In response to determining that the number of instances that occurred during the portion of the subscription period exceeds the threshold number for that portion of the subscription period, the server modifies the message sent to one of the different devices. The system described in item 61, configured to perform the following actions. (Item 65) The system according to item 64, wherein the control circuit is further configured to select the number of thresholds for a portion of the subscription period from a plurality of potential threshold numbers based on the length of the subscription period. (Item 66) The system according to item 64, wherein the control circuit is further configured to select a portion of the threshold number for the subscription period from a plurality of potential threshold numbers based on the number of streams available to the user from the subscription service. (Item 67) The system according to item 64, wherein the control circuit is further configured to select the number of thresholds for the portion of the subscription period from a plurality of potential threshold numbers based on the date corresponding to the portion of the subscription period. (Item 68) The system according to item 64, wherein the control circuit is further configured to select the number of thresholds for the portion of the subscription period from a plurality of potential threshold numbers based on the time corresponding to the portion of the subscription period. (Item 69) The system according to item 64, wherein the control circuit is further configured to select the number of thresholds for the portion of the subscription period from a plurality of potential thresholds based on the number of media assets that become available from the subscription service during the portion of the subscription period. (Item 70) The aforementioned message includes a recommendation to reduce the frequency of the multiple instances, as described in item 61 of the system. (Item 71) A system that recommends to users whether to increase the number of content streams from a subscription service, Means for detecting multiple instances in which the number of requests to simultaneously stream media from the subscription service to different devices exceeds the number of streams available to the user from the subscription service, Means for generating multiple timestamps, each of which timestamps corresponds to one of the multiple instances, A means for comparing each of the plurality of timestamps with a range of timestamps corresponding to the subscription period for the subscription service, and for determining the number of the plurality of instances that occurred during the subscription period, The server includes means for comparing the number of instances that occurred during the subscription period with a threshold number for the subscription period, In response to determining that the number of instances that occurred during the subscription period exceeds the threshold number for the subscription period, means for transmitting a message from the server to one of the different devices. A system equipped with these features. (Item 72) The system according to item 71, further comprising means for selecting the number of thresholds for the subscription period from a plurality of potential thresholds based on the length of the subscription period. (Item 73) The system according to item 71, further comprising means for selecting the number of thresholds for the subscription period from a plurality of potential thresholds based on the number of streams available to the user from the subscription service. (Item 74) Means for comparing each of the plurality of timestamps with a range of timestamps corresponding to a portion of the subscription period for the subscription service, and for determining the number of the plurality of instances that occurred during the portion of the subscription period, The server includes means for comparing the number of instances that occurred during a portion of the subscription period with a threshold number for that portion of the subscription period, Means for modifying the message from the server to one of the different devices in response to determining that the number of instances that occurred during the portion of the subscription period exceeds the threshold number for that portion of the subscription period. The system described in item 71, further comprising the features described therein. (Item 75) The system according to item 74, further comprising means for selecting the number of thresholds for a portion of the subscription period from a plurality of potential threshold numbers based on the length of the subscription period. (Item 76) The system according to item 74, further comprising means for selecting a portion of the threshold number for the subscription period from a plurality of potential threshold numbers based on the number of streams available to the user from the subscription service. (Item 77) The system according to item 74, further comprising means for selecting the number of thresholds for a portion of the subscription period from a plurality of potential threshold numbers based on the date corresponding to the portion of the subscription period. (Item 78) The system according to item 74, further comprising means for selecting the number of thresholds for a portion of the subscription period from a plurality of potential threshold numbers based on a time corresponding to the portion of the subscription period. (Item 79) The system according to item 74, further comprising means for selecting the number of the thresholds for a portion of the subscription period from a plurality of potential thresholds, based on the number of media assets that become available from the subscription service during that portion of the subscription period. (Item 80) The aforementioned message includes a recommendation to reduce the frequency of the multiple instances, as described in item 71 of the system. (Item 81) A method for recommending to users whether to increase the number of content streams from a subscription service, Detecting multiple instances in which the number of requests to simultaneously stream media from the subscription service to different devices exceeds the number of streams available to the user from the subscription service, The process involves generating multiple timestamps, each of which corresponds to one of the multiple instances, Each of the aforementioned multiple timestamps is compared with a range of timestamps corresponding to the subscription period for the subscription service, and the number of the aforementioned multiple instances that occurred during the subscription period is determined. On the server, the number of instances that occurred during the subscription period is compared with a threshold number for the subscription period, The server generates a message, In response to determining that the number of instances that occurred during the subscription period exceeds the threshold number for the subscription period, the server transmits the message to one of the different devices. Methods that include... (Item 82) The method according to item 81, further comprising selecting the number of thresholds for the subscription period from a plurality of potential thresholds based on the length of the subscription period. (Item 83) The method of any one of items 81-82, further comprising selecting the number of thresholds for the subscription period from a plurality of potential thresholds based on the number of streams available to the user from the subscription service. (Item 84) The process involves comparing each of the aforementioned multiple timestamps with a range of timestamps corresponding to a portion of the subscription period for the subscription service, and determining the number of the aforementioned multiple instances that occurred during that portion of the subscription period. The server compares the number of instances that occurred during a portion of the subscription period with a threshold number for that portion of the subscription period. In response to determining that the number of instances that occurred during the portion of the subscription period exceeds the threshold number for that portion of the subscription period, the server modifies the message sent to one of the different devices. The method described in any of items 81-83, further including the method described in any of items 81-83. (Item 85) The method according to any one of items 81-84, further comprising selecting the number of the thresholds for a portion of the subscription period from a plurality of potential threshold numbers based on the length of the subscription period. (Item 86) The method of any one of items 81-85, further comprising selecting a portion of the threshold number for the subscription period from a plurality of potential threshold numbers based on the number of streams available to the user from the subscription service. (Item 87) The method of any one of items 81-86, further comprising selecting the number of thresholds for the portion of the subscription period from a plurality of potential threshold numbers based on the date corresponding to the portion of the subscription period. (Item 88) The method according to any one of items 81-87, further comprising selecting the number of thresholds for the portion of the subscription period from a plurality of potential threshold numbers based on the time corresponding to the portion of the subscription period. (Item 89) The method according to any one of items 81-88, further comprising selecting the threshold number for the portion of the subscription period from a plurality of potential threshold numbers based on the number of media assets that become available from the subscription service during the portion of the subscription period. (Item 90) The message is a method described in any of items 81-89, including a recommendation to reduce the frequency of the multiple instances. (Item 91) A non-transient computer-readable medium having instructions recorded thereon for recommending to a user whether to increase the number of content streams from a subscription service, wherein the instructions are: A command to detect multiple instances in which the number of requests to simultaneously stream media from the subscription service to different devices exceeds the number of streams available to the user from the subscription service, Instructions for generating multiple timestamps, each of which timestamps corresponds to one of the multiple instances, A command to compare each of the plurality of timestamps with a range of timestamps corresponding to the subscription period for the subscription service, and to determine the number of the plurality of instances that occurred during the subscription period, The server includes an instruction to compare the number of instances that occurred during the subscription period with a threshold number for the subscription period, In response to determining that the number of instances that occurred during the subscription period exceeds the threshold number for the subscription period, the server sends a command to transmit a message to one of the different devices. A non-transient, computer-readable medium equipped with [specific features / features]. (Item 92) A non-transient computer-readable medium according to item 91, further comprising instructions for selecting the number of thresholds for the subscription period from a plurality of potential thresholds based on the length of the subscription period. (Item 93) A non-transient computer-readable medium according to item 91, further comprising instructions for selecting the number of thresholds for the subscription period from a plurality of potential thresholds based on the number of streams available to the user from the subscription service. (Item 94) The aforementioned instruction further states, A command to compare each of the plurality of timestamps with a range of timestamps corresponding to a portion of the subscription period for the subscription service, and to determine the number of the plurality of instances that occurred during the portion of the subscription period, The server provides an instruction to compare the number of instances that occurred during a portion of the subscription period with a threshold number for that portion of the subscription period, In response to determining that the number of instances that occurred during the portion of the subscription period exceeds the threshold number for that portion of the subscription period, the server sends an instruction to modify the message to one of the different devices. A non-transient computer-readable medium as described in item 91, comprising the features described above. (Item 95) A non-transient computer-readable medium according to item 94, further comprising instructions for selecting the number of thresholds for a portion of the subscription period from a plurality of potential threshold numbers based on the length of the subscription period. (Item 96) A non-transient computer-readable medium according to item 94, further comprising instructions for selecting the number of the thresholds for a portion of the subscription period from a plurality of potential thresholds based on the number of the streams available to the user from the subscription service. (Item 97) A non-transient computer-readable medium according to item 94, further comprising instructions for selecting the number of thresholds for a portion of a subscription period from a plurality of potential threshold numbers based on a date corresponding to the portion of the subscription period. (Item 98) A non-transient computer-readable medium according to item 94, further comprising instructions for selecting the number of thresholds for a portion of the subscription period from a plurality of potential threshold numbers based on a time corresponding to the portion of the subscription period. (Item 99) A non-transient computer-readable medium as described in item 94, further comprising instructions for selecting the number of thresholds for a portion of the subscription period from a plurality of potential thresholds, based on the number of media assets that become available from the subscription service during that portion of the subscription period. (Item 100) The message is a non-transient, computer-readable medium as described in item 91, including recommendations for reducing the frequency of the multiple instances. [Brief explanation of the drawing]

[0038] The above and other purposes and advantages of this disclosure will become apparent by considering the following detailed description, which is to be interpreted in conjunction with the accompanying drawings, where similar reference letters refer to similar parts throughout.

[0039] [Figure 1] Figure 1 shows illustrative examples of display screens generated by a media guide application according to several embodiments of the present disclosure. [Figure 2] Figure 2 shows another illustrative example of a content aggregator display screen generated by a media guide application according to some embodiments of the present disclosure. [Figure 3] Figure 3 is a block diagram of an illustrative device according to several embodiments of the present disclosure. [Figure 4] Figure 4 is a block diagram of an illustrative media system according to several embodiments of the present disclosure. [Figure 5] Figure 5 is a flowchart illustrating illustrative steps for determining the number of instances within a subscription period, according to several embodiments of the present disclosure. [Figure 6] Figure 6 is pseudocode of an illustrative step for determining the number of instances within a subscription period, according to some embodiments of the present disclosure. [Figure 7] Figure 7 is a flowchart illustrating illustrative steps for determining the number of instances within a portion of the subscription period, according to some embodiments of the present disclosure. [Figure 8] Figure 8 is pseudocode for an illustrative step in determining the number of instances within a portion of the subscription period, according to some embodiments of the present disclosure. [Figure 9] Figure 9 is a flowchart illustrating the illustrative steps involved in transmitting a message to a device when the number of instances exceeds a certain number, according to some embodiments of the present disclosure. [Figure 10]Figure 10 is a flowchart illustrating illustrative steps for generating an account on a content provider server based on receiving a first authentication key from a content aggregator server, according to some embodiments of the present disclosure. [Figure 11] Figure 11 is pseudocode of illustrative steps for generating an account on a content provider server based on receiving a first authentication key from a content aggregator server, according to some embodiments of the present disclosure. [Figure 12] Figure 12 is a flowchart illustrating illustrative steps for verifying the legitimacy of a first user account based on a request from a content aggregator server, according to some embodiments of the present disclosure. [Figure 13] Figure 13 is pseudocode of illustrative steps for verifying the legitimacy of a first user account based on a request from a content aggregator server, according to some embodiments of the present disclosure. [Figure 14] Figure 14 is a flowchart illustrating the illustrative steps involved in generating and validating a first user account on a first subscription service, according to some embodiments of the present disclosure. [Modes for carrying out the invention]

[0040] Disclosed herein are methods and systems for detecting the number of instances in which the number of requests to simultaneously stream media from a subscription service to different devices exceeds the number of available streams, and for transmitting a message to one of the devices when the number of instances exceeds a certain number. For example, a control circuit determines that during a subscription period there are 12 instances in which the number of requests to simultaneously stream media exceeds the number of available streams available to the user from the subscription service. The control circuit may further determine that the number of instances in which the number of requests to simultaneously stream media exceeds the number of available streams available to the user from the subscription service exceeds a threshold number of 8, and in response, the control circuit transmits a message to one of the devices indicating that additional streams are available for purchase.

[0041] As used herein, the term “instance” should be understood to correspond to a specific moment in time. For example, an instance corresponds to a specific timestamp, such as a timestamp defined by a date and time.

[0042] As used herein, the term “Subscription Service” should be understood to mean any product or service that a user subscribes to in order to access media content. For example, a user subscribes to an online subscription service (e.g., Hulu) to access a television series (e.g., “The Simpsons”). A user may be able to access media content provided by a subscription service by purchasing a content subscription. The entity that provides access to content through a “Subscription Service” is referred to herein as a “Content Provider.” The term “Content Provider Server” refers to any networked device used by a Content Provider to provide access to media content to a user’s device.

[0043] Products or services that provide access to media content available from other subscription services are referred to herein as “Content Aggregator Subscriptions.” Entities that provide Content Aggregator Subscriptions are referred to herein as “Content Aggregators.” The term “Content Aggregator Server” refers to any networked device used by a Content Aggregator to collect and provide data about available content from content providers and to facilitate access to such content to user devices.

[0044] As used herein, the term “account” should be understood to mean data associated with a user and stored in the subscription service’s database. The subscription service enables users to access media content by authenticating them through the data stored in the account. In addition, an account may include information listing the user’s name, password, credit card information, viewing preferences, and subscription settings. A valid user account may be used by a user to access media content, while an account that has not yet been validated may not be used by a user to access media content.

[0045] As used herein, “authentication key” should be understood to refer to data that can be decrypted by an algorithm. For example, a user’s username and password may be encrypted on the content aggregator server. The resulting data may then constitute an authentication key, which can be transmitted to the content provider server. The content provider server may contain information necessary to decrypt the first key.

[0046] As used herein, the term “subscription period” should be understood to mean a continuous period of time during which a user of the subscription service has access to the media content provided by the subscription service. For example, a subscription period may correspond to the billing cycle of the subscription service (e.g., a subscription period may correspond to March). Furthermore, a subscription period may be associated with a start timestamp (i.e., the date and time the media provided through the subscription becomes available to the user) and an end timestamp (i.e., the date and time the media provided through the subscription becomes unavailable to the user). A “part” of a subscription period may refer to one or more arbitrary continuous or non-continuous time ranges of a subscription period. For example, a part of a subscription period may correspond to a time slot that occurs between 7 p.m. and 9 p.m. on a Wednesday during the subscription period. In a different embodiment, a part of a subscription period may correspond to a range of dates within the subscription period during which a season of a television program (e.g., “The Simpsons”) is broadcast, e.g., from August to November.

[0047] The term "stream" refers to media content data transmitted from a sender to a receiver over a period of time. For example, digital data corresponding to media content (e.g., an episode of "The Simpsons") is delivered over a network from a server (i.e., the sender) to a user device (i.e., the receiver) over a period of time corresponding to the time required for playback of the media content. A subscription service may provide a finite number of streams for simultaneous use to its subscribers (e.g., a subscription service may allow four simultaneous streams of media content). Embodiments implementing the streaming process (i.e., the process of delivering streams) may apply to digital media delivery methods, but may also apply to other content delivery methods (e.g., cable). A streaming conflict refers to a situation where the number of requests to stream media exceeds the number of available streams. When a streaming conflict occurs, at least one of the received requests (e.g., typically the most recent request) is not fulfilled.

[0048] The term "direct connection" refers to a network connection that, once established between a content provider server and a content aggregator server, allows the content aggregator server to access data stored on the content provider server without requiring authentication.

[0049] The term "interface skin" refers to a set of data used to define the appearance of a user interface. For example, the background color of windows within a user interface, the fonts used in the user interface, and the position of menus within the user interface may be defined within the data associated with the interface skin. When a control circuit generates the visual components of a user interface for display, the control circuit may read data from the interface skin file to determine how each element or group of elements within the user interface will be rendered. In addition, the set of data used to define the appearance of a user interface may include graphics and text defined by a service associated with a content provider server. For example, an interface skin associated with a subscription service (e.g., Hulu) may include a set of data that includes the Hulu logo, which may be displayed in a defined location on the screen, and a Hulu color palette, which may define the background color of screen elements.

[0050] As used herein, the term "in response to" means "to be initiated as a result of." For example, a first action performed in response to another action may include an intervening step between the first action and the second action. As used herein, the term "directly in response to" means "to be caused by." For example, a first action performed directly in response to another action may not include an intervening step between the first action and the second action.

[0051] The amount of content available to users in any given content delivery system can be enormous. As a result, many users desire a media guide through an interface that allows them to efficiently navigate content selection and easily identify the content they desire. Applications that provide such a guide are referred to herein as interactive media guide applications, but may also be referred to as media guide applications or guide applications.

[0052] Interactive media guide applications may take various forms depending on the content they provide. One typical type of media guide application is an interactive television program guide. An interactive television program guide (sometimes called an electronic program guide) is a well-known guide application that, among other things, allows users to navigate between and identify many types of content or media assets. An interactive media guide application may generate a graphical user interface screen that allows users to navigate between content, identify and select it.

[0053] As used herein, the terms “media assets” and “content” should be understood to mean electronically consumable user assets such as television programs, and pay-per-view programs, on-demand programs (such as in video-on-demand (VOD) systems), internet content (e.g., streaming content, downloadable content, webcasts, etc.), video clips, audio, content information, photographs, rotated images, documents, playlists, websites, articles, books, ebooks, blogs, advertisements, chat sessions, social media, applications, games, and / or any other media or multimedia, and / or combinations thereof. Guide applications also enable users to navigate between and identify content. As used herein, the term “multimedia” should be understood to mean content that utilizes at least two different content forms described above, e.g., text, audio, images, video, or interactive content forms. Content may be recorded, played back, displayed, or accessed by user equipment devices, or may also be part of a live performance.

[0054] Media guide applications and / or any instructions for performing any of the embodiments discussed herein may be encoded on a computer-readable medium. The computer-readable medium includes any medium capable of storing data. The computer-readable medium may be transient, including the propagation of electrical or electromagnetic signals, or non-transient, including, but not limited to, volatile and non-volatile computer memory or storage devices such as hard disks, floppy disks, USB drives, DVDs, CDs, media cards, register memory, processor caches, and random access memory ("RAM").

[0055] With the advent of the internet, mobile computing, and high-speed wireless networks, users are now accessing media on user devices they didn't previously use. As used herein, the terms “User Equipment Device,” “User Equipment,” “User Device,” “Electronic Device,” “Electronic Device,” “Media Equipment Device,” or “Media Device” should be understood to mean any device for accessing the content described above, such as televisions, smart TVs, set-top boxes, integrated receiver decoders (IRDs) for satellite television, digital storage devices, digital media receivers (DMRs), digital media adapters (DMAs), streaming media devices, DVD players, DVD recorders, connected DVDs, local media servers, Blu-ray® players, Blu-ray® recorders, personal computers (PCs), laptop computers, tablet computers, webTV boxes, personal computer televisions (PC / TVs), PC media servers, PC media centers, handheld computers, landline telephones, personal digital assistants (PDAs), mobile phones, portable video players, portable music players, portable game consoles, smartphones, or any other television equipment, computing equipment, or wireless devices, and / or combinations thereof. In some embodiments, the user device may have a front screen and a rear screen, multiple front screens, or multiple angled screens. In some embodiments, the user device may have a front camera and / or a rear camera. On these user devices, the user may be able to navigate between and identify identical content available through the television. As a result, a media guide may also be available on these devices. The guide provided may be for content available only through the television, content available only through one or more of the other types of user devices, or content available through both the television and one or more of the other types of user devices.The media guide application may be provided as an online application (i.e., on a website) or as a standalone application or client on the user's device. Various devices and platforms on which the media guide application can be implemented are described in further detail below.

[0056] One of the functions of a media guide application is to provide media guide data to the user. As used herein, the terms “media guide data” or “guide data” should be understood to mean any data related to content or data used to operate the guide application. For example, guide data may include program information, guide application settings, user preferences, user profile information, media lists, media-related information (e.g., broadcast times, broadcast channels, titles, content, rating information (e.g., parental control ratings, critic ratings, etc.), genre or category information, actor information, logo data of broadcaster or provider logos, media format (e.g., standard definition, high definition, 3D, etc.), advertising information (e.g., text, images, media clips, etc.), on-demand information, blogs, websites, and any other types of guide data that help the user navigate between and identify their desired content selections.

[0057] Figure 1-2 shows an illustrative display screen that may be used to provide media guide data. The display screen shown in Figure 1-2 may be implemented on any suitable user equipment device or platform. Although the displays in Figure 1-2 are illustrated as full-screen displays, they may also be fully or partially overlaid on the displayed content. The user may indicate their desire to access content information by selecting selectable options provided on the display screen (e.g., menu options, list options, icons, hyperlinks, etc.) or by pressing a dedicated button on a remote control or other user input interface or device (e.g., a “Guide” button). In response to user indication, the media guide application may provide a display screen with media guide data organized in one of several ways, such as by time and channel in a grid, by time, by channel, by source, by content type, by category (e.g., movies, sports, news, children's, or other program categories), or by other predetermined, user-defined, or other organizing criteria.

[0058] Figure 1 shows an illustrative grid of a program list display 100 arranged by time and channel, which also allows access to different types of content within a single display. Display 100 may include a grid 102 with (1) a column of channel / content type identifiers 104, where each channel / content type identifier (cell in the column) identifies a different channel or content type available, and (2) a row of time identifiers 106, where each time identifier (cell in the row) identifies the time slot of the program. Grid 102 also includes cells for program lists, such as program list 108, where each list provides the title of the program, provided above the channel and time associated with the list. Using a user input device, the user can select a program list by moving a highlight area 110. Information about the program list selected by the highlight area 110 may be provided in a program information area 112. Area 112 may include, for example, the program title, program content, the time the program is offered (if applicable), the channel on which the program is broadcast (if applicable), the program rating, and other desired information.

[0059] In addition to providing access to linear programming (e.g., content scheduled to be transmitted to multiple user devices at a given time and delivered according to that schedule), the Media Guide application also provides access to non-linear programming (e.g., content that is accessible to user devices at any time and is not delivered according to a schedule). Non-linear programming may include content from different content sources, including on-demand content (e.g., VOD), internet content (e.g., streaming media, downloadable media, etc.), locally stored content (e.g., content stored on any user device or other storage device as described above), or other content without time constraints. On-demand content may include movies or any other content provided by a particular content provider (e.g., HBO, which provides "The Sopranos" and "Curb Your Enthusiasm" through the HBO GO service). THE SOPRANOS and CURB YOURE ENTHUSIASM are trademarks owned by Home Box Office, Inc. Internet content may include web events such as chat sessions or webcasts, or content available on demand as streaming content or downloadable content through internet websites or other internet access (e.g., FTP).

[0060] Grid 102 may provide media guide data for non-linear programming, including an on-demand list 114, a recorded content list 116, and an internet content list 118. A display that combines media guide data for content from different types of content sources may be referred to as a “mixed media” display. Various permutations of the types of media guide data that can be displayed, different from display 100, may be based on user selection or guide application definition (e.g., displaying only recorded and broadcast lists, or only on-demand and broadcast lists). As illustrated, lists 114, 116, and 118 are shown as spanning the entire time period displayed within grid 102, indicating that selection of these lists may provide access to displays dedicated to the on-demand list, recorded list, or internet list, respectively. In some embodiments, these content type lists may be included directly in grid 102. Additional media guide data may be displayed in response to the user selecting one of the navigation icons 120 (the display may also be affected by pressing arrow keys on a user input device, similar to selecting a navigation icon 120).

[0061] Display 100 may also include a video area 122, an advertisement 124, and an optional area 126. The video area 122 may allow the user to view and / or preview programs that are currently available, will be available in the future, or have been available to the user. The content of the video area 122 may correspond to or be independent of one of the lists displayed in grid 102. A grid display including a video area is sometimes referred to as a Picture-in-Guide (PIG) ​​display. PIG displays and their functions are described in more detail in U.S. Patent No. 6,564,378 by Satterfield et al., issued May 13, 2003, and U.S. Patent No. 6,239,794 by Yuen et al., issued May 29, 2001, which are incorporated herein by reference in their entirety. PIG displays may be included in other media guide application display screens of embodiments described herein.

[0062] Advertisements 124 may offer advertisements for content that is currently available for viewing, will become available for viewing in the future, or will never become available for viewing, depending on the viewer's access rights (e.g., for subscribed programs), and may correspond to or be unrelated to one or more of the content listings in grid 102. Advertisements 124 may also be for products or services that are related to or unrelated to the content displayed in grid 102. Advertisements 124 may be selectable and provide further information about the content, provide information about products or services, enable the purchase of content, products or services, provide content related to the advertisement, etc. Advertisements 124 may be targeted based on user profiles / preferences, monitored user activity, type of display offered, or other preferred targeted advertising infrastructure.

[0063] Advertisements 124 are shown as rectangles or banners, but advertisements may be provided in any suitable size, shape, and location within the guide application display. For example, advertisement 124 may be provided as a rectangle horizontally adjacent to grid 102. This may also be referred to as a panel advertisement. In addition, advertisements may be overlaid on the content or guide application display, or embedded within the display. Advertisements may also include text, images, rotated images, video clips, or other types of content as described above. Advertisements may be stored in a user device having the guide application, in a database connected to the user device, in a remote location (including a streaming media server), or on other storage means or a combination of these locations. The step of providing advertisements to a media guide application is discussed in more detail, for example, in Knudson et al., U.S. Patent Application No. 2003 / 0110499, filed January 17, 2003; Ward, III et al., U.S. Patent No. 6,756,997, issued June 29, 2004; and Schein et al., U.S. Patent No. 6,388,714, issued May 14, 2002, which are incorporated herein by reference in their entirety. It will be understood that advertisements may also be included in other media guide application display screens of embodiments described herein.

[0064] The options area 126 may allow the user to access different types of content, media guide application displays, and / or media guide application features. The options area 126 may be part of display 100 (and other display screens described herein), or may be invoked by the user by selecting an option on the screen or by pressing a dedicated or assignable button on a user input device. Selectable options within the options area 126 may relate to features related to the program list in grid 102, or may include options available from the main menu display. Features related to the program list may include searching for other broadcast times or ways to receive programs, recording programs, enabling continuous recording of programs, setting programs and / or channels as favorites, purchasing programs, or other features. Options available from the main menu display may include search options, VOD options, parental control options, internet options, cloud-based options, device synchronization options, second screen device options, options for accessing various types of media guide data displays, options for subscribing to premium services, options for editing the user profile, options for accessing a browser overlay, or other options.

[0065] A media guide application may be personalized based on user preferences. A personalized media guide application allows users to customize its display and features to generate a personalized “experience” through the media guide application. This personalized experience may be generated by allowing users to input these customizations and / or by the media guide application monitoring user activity to determine various user preferences. Users may access their personalized guide application by logging in or otherwise identifying themselves to the guide application. Customization of the media guide application may be done according to a user profile. Customization may include steps to modify presentation methods (e.g., display color scheme, text font size, etc.), aspects of the displayed content list (e.g., HDTV programs only or 3D programs only, user-specified broadcast channels based on favorite channel selection, sorting of channel displays, recommended content, etc.), desired recording features (e.g., recording or continuous recording for a specific user, recording quality, etc.), parental control settings, customized presentation of internet content (e.g., presentation of social media content, emails, electronically distributed articles, etc.), and other desired customizations.

[0066] The media guide application may allow the user to provide user profile information, or it may automatically compile user profile information. The media guide application may monitor, for example, the content the user accesses and / or other interactions the user may have with the guide application. In addition, the media guide application may obtain all or part of other user profiles related to a particular user (e.g., from other websites on the internet that the user accesses, such as www.allrovi.com, from other media guide applications that the user accesses, from other interactive applications that the user accesses, from other user devices of the user, etc.), and / or obtain information about the user from other sources that the media guide application may access. As a result, the user can be provided with a unified guide application experience across the user's different user devices. This type of user experience will be described in more detail below in relation to Figure 4. Additional personalized media guide application features are described in more detail in U.S. Patent Application Publication No. 2005 / 0251827, filed July 11, 2005, U.S. Patent No. 7,165,098, issued January 16, 2007, by Boyer et al., and U.S. Patent Application Publication No. 2002 / 0174430, filed February 21, 2002, which are incorporated herein by reference in their entirety.

[0067] Another display array for providing a media guide is shown in Figure 2. The video mosaic display 200 includes selectable options 202 for content information organized based on various organizing criteria such as recommendations, inclusion in watchlists, and / or content type. In display 200, the movie list option 204 is selected, and therefore provides lists 206, 208, 210, and 212 as movies. In display 200, lists may provide graphic images, including cover art, still images from content, video clip previews, live video from content, or other types of content that show the user the content described by the media guide data in the list. Each graphic list may also be accompanied by text to provide further information about the content associated with the list. For example, list 208 may include one or more parts, including a media section 214 and a text section 216. The media section 214 and / or text section 216 may be selectable to view the content in full screen or to browse information related to the content displayed in the media section 214 (e.g., to browse a list of specific content providers).

[0068] The lists in display 200 are of different sizes (i.e., list 206 is larger than lists 208, 210, and 212), but all lists may be the same size if desired. Lists may be of different sizes or graphically highlighted to indicate the degree of user interest or to highlight certain content, as desired by the content provider or based on user preferences. Various systems and methods for graphically highlighting content lists are discussed, for example, in Yates' U.S. Patent Application Publication No. 2010 / 0153885, filed November 12, 2009, which is incorporated herein by reference in whole.

[0069] A user may access the content and media guide application (and its display screen as described above and below) from one or more of their user equipment devices. Figure 3 shows a general embodiment of an illustrative equipment device 300. More specific implementations of the device are discussed below in relation to Figure 4. The equipment device 300 may be implemented on a user television device 402, a user computer device 404, and a wireless user communication device 406. In addition, the device 300 may be implemented as part of a server associated with content providers 416 and 418, and as part of a server associated with a content aggregator 430. The device 300 may receive content and data via an input / output (hereinafter "I / O") path 302. The I / O path 302 may provide content (e.g., broadcast programs, on-demand programs, Internet content, content available via a local area network (LAN) or wide area network (WAN), and / or other content) and data to a control circuit 304, which includes a processing circuit 306 and a storage device 308. The control circuit 304 may be used to send and receive commands, requests, and other suitable data using the I / O path 302. The I / O path 302 may connect the control circuit 304 (specifically, the processing circuit 306) to one or more communication paths (described below). I / O functionality may be provided by one or more of these communication paths, but to avoid making the diagram too complex, it is shown as a single path in Figure 3.

[0070] The control circuit 304 may be based on any suitable processing circuit, such as the processing circuit 306. As referred to herein, a processing circuit is understood to mean a circuit based on one or more microprocessors, microcontrollers, digital signal processors, programmable logic devices, field-programmable gate arrays (FPGAs), application-specific integrated circuits (ASICs), etc., and may include a multicore processor (e.g., dual-core, quad-core, hexa-core, or any suitable number of cores) or a supercomputer. In some embodiments, the processing circuit may be multiple distinct processors or processing units, for example, multiple processing units of the same type (e.g., two Intel Core i7 processors) or multiple different processors (e.g., Intel Core The control circuit may be distributed across i5 and Intel Core i7 processors. In some embodiments, the control circuit 304 executes instructions for a media guide application stored in memory (i.e., storage device 308). Specifically, the control circuit 304 may be instructed by the media guide application to perform the functions discussed above and below. For example, the media guide application may provide the control circuit 304 with instructions to generate a media guide display. In some implementations, any action performed by the control circuit 304 may be based on instructions received from the media guide application.

[0071] In a client-server based embodiment, the control circuit 304 may include a suitable communication circuit for communicating with a guide application server or other network or server. Instructions for performing the aforementioned functionality may be stored on the guide application server. The communication circuit may include a cable modem, an Integrated Digital Network (ISDN) modem, a Digital Subscriber Line (DSL) modem, a telephone modem, an Ethernet® card, a wireless modem for communication with other devices, or any other suitable communication circuit. Such communication may involve the Internet or any other suitable communication network or path (described in more detail in relation to Figure 4). In addition, the communication circuit may include a circuit that enables peer-to-peer communication between device devices or communication between device devices located at distant locations (described in more detail below).

[0072] The memory may be an electronic storage device provided as a storage device 308, which is part of the control circuit 304. As used herein, the terms “electronic storage device” or “storage device” should be understood to mean any device for storing electronic data, computer software, or firmware, such as random access memory, read-only memory, hard drives, optical drives, digital video disc (DVD) recorders, compact disc (CD) recorders, Blu-ray® disc (BD) recorders, Blu-ray® 3D disc recorders, digital video recorders (DVRs (sometimes called personal video recorders), or PVRs), solid-state devices, quantum memory devices, game consoles, game media, or any other suitable fixed or removable storage devices, and / or any combination thereof. The storage device 308 may be used to store various types of content as described herein, and media guide data as described above. Non-volatile memory may also be used (for example, to start boot-up routines and other instructions). A cloud-based storage device, as described in relation to Figure 4, may be used to complement or replace the storage device 308.

[0073] The control circuit 304 may include video generation and tuning circuits such as one or more analog tuners, one or more MPEG-2 decoders or other digital decoding circuits, high-resolution tuners or any other suitable tuning or video circuits, or combinations of such circuits. Encoding circuits (for example, for converting radio, analog, or digital signals to MPEG signals for storage) may also be provided. The control circuit 304 may also include scaler circuits for converting content up and down to preferred output formats of the instrument device 300. The circuit 304 may also include digital-to-analog and analog-to-digital conversion circuits for converting between digital and analog signals. The tuning and coding circuits may be used by the instrument device to receive and display, play back, or record content. The tuning and coding circuits may also be used to receive guide data. The circuits described herein, including, for example, tuning, video generation, coding, decoding, encryption, decryption, scaler, and analog / digital circuits, may be implemented using software running on one or more general-purpose or specialized processors. Multiple tuners may be provided to handle simultaneous tuning functions (e.g., viewing and recording functions, picture-in-picture (PIP) function, multiple tuner recording, etc.). If the storage device 308 is provided as a separate device from the equipment device 300, the tuning and encoding circuits (including multiple tuners) may be associated with the storage device 308.

[0074] When the equipment device 300 is implemented on a user television device 402, a user computer device 404, or a wireless user communication device 406, the user may use the user input interface 310 to send commands to the control circuit 304. The user input interface 310 may be any suitable user interface, such as a remote control, mouse, trackball, keypad, keyboard, touchscreen, touchpad, stylus input, joystick, voice recognition interface, or other user input interface. The display 312 may be provided as a standalone device or may be integrated with other elements of the user equipment device 300. For example, the display 312 may be a touchscreen or a touch-sensitive display. In such a situation, the user input interface 310 may be integrated with or combined with the display 312. The display 312 may be one or more of the following suitable devices for displaying visual images: a liquid crystal display (LCD), amorphous silicon display, low-temperature polysilicon display, electronic ink display, electrophoretic display, active matrix display, electrowetting display, electrofluidic display, cathode ray tube display, light-emitting diode display, electroluminescent display, plasma display panel, high-performance addressing display, thin-film transistor display, organic light-emitting diode display, surface conduction electron emission device display (SED), laser television, carbon nanotube, quantum dot display, interference modulator display, or any other suitable device for displaying visual images. In some embodiments, the display 312 may be HDTV-compatible. In some embodiments, the display 312 may be a 3D display, and interactive media guide applications and any suitable content may be displayed in 3D. A video card or graphics card may generate output to the display 312.The video card may provide various functions such as accelerating the rendering of 3D scenes and 2D graphics, MPEG-2 / MPEG-4 decoding, TV output, or the ability to connect multiple monitors. The video card may also be any processing circuit described above related to the control circuit 304. The video card may be integrated with the control circuit 304. The speaker 314 may be provided as an integration with other elements of the instrument device 300, or it may be a standalone unit. Audio components of video and other content displayed on the display 312 may be played through the speaker 314. In some embodiments, the audio may be distributed to a receiver (not shown) that processes and outputs the audio via the speaker 314.

[0075] The guide application may be implemented using any preferred architecture. For example, it may be a standalone application fully implemented on the instrument device 300. In such an approach, the application's instructions are stored locally (e.g., in a memory device 308), and data for use by the application is downloaded periodically (e.g., from an out-of-band feed, from an internet resource, or using another preferred approach). The control circuit 304 may read the application's instructions from the memory device 308 and process the instructions to generate one of the displays discussed herein. Based on the processed instructions, the control circuit 304 may determine what action to take when input is received from the input interface 310. For example, moving the cursor up / down on the display may be indicated by the processed instructions when the input interface 310 indicates that the up / down button has been selected.

[0076] In some embodiments, the media guide application is a client-server based application. Data for use by thick or thin clients, implemented on the device 300, is retrieved on demand by issuing requests to a server located remotely from the device 300. In one embodiment of the client-server based guide application, the control circuit 304 runs a web browser that interprets web pages provided by the remote server. For example, the remote server may store instructions for the application in a storage device. The remote server may use a circuit (e.g., the control circuit 304) to process the stored instructions and generate the displays discussed above and below. A client device may receive the displays generated by the remote server and display the content of the displays locally on the device 300. Thus, the processing of instructions is performed remotely by the server, while the resulting displays are provided locally on the device 300. The device 300 may receive user inputs via the input interface 310 and transmit those inputs to the remote server to process and generate corresponding displays. For example, the device 300 may transmit a communication to a remote server indicating that the up / down button has been selected via the input interface 310. The remote server may process the command according to the input and generate an application display corresponding to the input (for example, a display to move the cursor up / down). The generated display is then transmitted to the device 300 for presentation to the user.

[0077] In some embodiments, the media guide application is downloaded, interpreted, or otherwise invoked by an interpreter or virtual machine (invoked by the control circuit 304). In some embodiments, the guide application may be encoded in ETV Binary Interchange Format (EBIF), received by the control circuit 304 as part of a preferred feed, and interpreted by a user agent invoked on the control circuit 304. For example, the guide application may be an EBIF application. In some embodiments, the guide application may be defined by a set of Java®-based files, received and invoked by a local virtual machine or other preferred middleware executed by the control circuit 304. In some of such embodiments (e.g., employing MPEG-2 or other digital media encoding schemes), the guide application may be encoded and transmitted, for example, in an MPEG-2 object carousel using MPEG audio and video packets of a program.

[0078] The device 300 in Figure 3 can be implemented in the system 400 in Figure 4 as any other type of user device suitable for accessing content such as a user television device 402, a user computer device 404, a wireless user communication device 406, or a non-portable game console. For simplicity, these devices may be collectively referred to herein as user devices or user device devices, and may be substantially similar to the user device devices described above. A user device device, in which a media guide application may be implemented, may function as a standalone device or as part of a network of devices. Various network configurations of devices may be implemented and will be discussed in more detail below. In addition, the device 300 may be implemented as part of a server associated with content providers 416 and 418, and as part of a server associated with a content aggregator 430.

[0079] A user device utilizing at least some of the system features described above in relation to Figure 3 does not necessarily have to be classified simply as a user television device 402, a user computer device 404, or a wireless user communication device 406. For example, a user television device 402 may be internet-enabled, like some user computer devices 404, enabling access to internet content, while a user computer device 404 may include a tuner, like some television devices 402, enabling access to television programs. The media guide application may have the same layout on various different types of user devices, or it may be adapted to the display capabilities of the user device. For example, on a user computer device 404, the guide application may be provided as a website accessed by a web browser. In another embodiment, the guide application may be scaled down for a wireless user communication device 406.

[0080] In System 400, typically there are more than one of each type of user equipment device, but to avoid making the diagrams too complex, only one of each is shown in Figure 4. In addition, each user may use more than one type of user equipment device, and more than one of each type of user equipment device.

[0081] In some embodiments, user equipment devices (e.g., user television equipment 402, user computer equipment 404, wireless user communication device 406) may be referred to as “second screen devices.” For example, the second screen device may complement the content presented on the first user equipment device. The content presented on the second screen device may be any suitable content that complements the content presented on the first device. In some embodiments, the second screen device provides an interface for adjusting the settings and display preferences of the first device. In some embodiments, the second screen device is configured to interact with other second screen devices or with social networks. The second screen device may be located in the same room as the first device, in a different room but in the same house or building, or in a different building.

[0082] Users may also configure various settings to maintain consistent Media Guide application settings across home and remote devices. These settings include the settings described herein, as well as favorite channels and programs, program preferences, display preferences, and other desired guide settings that the guide application uses to recommend programs. For example, if a user sets a channel as a favorite on their office personal computer, for example, on the website www.allrovi.com, the same channel will, if desired, appear as a favorite on the user's home devices (e.g., user television equipment and user computer equipment) and the user's mobile devices. Thus, changes made on one user device, whether identical or different types of user devices, can alter the guide experience on another user device. In addition, changes made may be based on user setting inputs and user activity monitored by the guide application.

[0083] User equipment devices may be coupled to the communication network 414. That is, user television equipment 402, user computer equipment 404, and wireless user communication device 406 are coupled to the communication network 414 via communication paths 408, 410, and 412, respectively. The communication network 414 may be one or more networks, including the Internet, a mobile phone network, a mobile voice or data network (e.g., a 4G or LTE network), a cable network, a public switched telephone network, or other types of communication networks, or a combination of communication networks. Paths 408, 410, and 412 may individually or together include one or more communication paths, such as a satellite path, a fiber optic path, a cable path, a path supporting Internet communications (e.g., IPTV), a free-space connection (e.g., for broadcast or other wireless signals), or any other suitable wired or wireless communication path, or a combination of such paths. In the exemplary embodiment shown in Figure 4, path 412 is drawn with a dashed line to indicate that it is a wireless path, and paths 408 and 410 are drawn with solid lines to indicate that they are wired paths (however, these paths may also be wireless paths, if desired). Communication with the user equipment device may be provided by one or more of these communication paths, but in Figure 4, they are shown as a single path to avoid making the drawing too complex.

[0084] Although no communication paths are depicted between user equipment devices, these devices may communicate directly with each other via communication paths such as those described above in relation to paths 408, 410, and 412, and other short-range point-to-point communication paths such as USB cables, IEEE 1394 cables, wireless paths (e.g., Bluetooth®, infrared, IEEE 802-11x, etc.), or other short-range communication paths such as wired or wireless paths. BLUETOOTH® is a certification mark owned by Bluetooth® SIG, INC. User equipment devices may also communicate directly with each other via indirect paths through communication network 414.

[0085] System 400 includes content providers 416 and 418 and content aggregator 430, which are connected to the communication network 414 via communication paths 420, 422, 424, 426, and 428, respectively. Paths 420, 422, 424, 426, and 428 may include any of the communication paths described above with respect to paths 408, 410, and 412. Communication with content providers 416 and content aggregator 430 may occur via one or more communication paths, but in Figure 4, it is shown as a single path to avoid making the diagram too complex. In addition, there may be more than one content provider 416 and content aggregator 430, but in Figure 4, only two content providers and one content aggregator are shown to avoid making the diagram too complex. (Different types of each of these sources will be discussed below). Although communication between content providers 416 and 418 and user equipment devices 402, 404, and 406 is shown as occurring through the communication network 414, in some embodiments, content providers 416 and 418 may communicate directly with user equipment devices 402, 404, and 406 via communication paths (not shown), such as those described above in relation to paths 408, 410, and 412. In some cases, communication between content providers 416 and 418 and user equipment devices 402, 404, and 406 occurs through the content aggregator 430. For example, communication between user television equipment 402 and content provider 416 may occur via paths 426, 428, and 408.

[0086] Content providers 416 and 418 may include one or more types of content distribution equipment, including television distribution facilities, cable system headends, satellite distribution facilities, program sources (e.g., television broadcasters such as NBC, ABC, and HBO), intermediate distribution facilities and / or servers, internet providers, on-demand media servers (e.g., Netflix, Hulu, Amazon, etc.), and other content providers. NBC is the National Broadcasting Company. ABC is a trademark owned by American Broadcasting Company, Inc., and HBO is a trademark owned by Home Box Office, Inc. Content Provider 416 may be a source of content (e.g., a television broadcaster, a webcast provider, etc.) or may not be a source of content (e.g., an on-demand content provider, an internet provider of broadcast program content for download, etc.). Content Provider 416 may also include cable sources, satellite providers, on-demand providers, internet providers, over-the-top content providers, or other content providers. Content Provider 416 may also include a remote media server used to store different types of content (including video content selected by the user) located remotely from any of the user equipment devices. Systems and methods for remote storage of content and for providing remotely stored content to user equipment are discussed in more detail in relation to U.S. Patent No. 7,761,892 of July 20, 2010, by Ellis et al., which is incorporated herein by reference in whole.

[0087] The content aggregator 430 may collect media guide data from content providers 416 and 418 and provide such data, as described above. The media guide data may be provided to the user equipment device using any preferred approach. In some embodiments, the guide application may be a standalone interactive television program guide that receives program guide data via a data feed (e.g., a continuous feed or trickle feed). Program schedule data and other guide data may be provided to the user equipment on the sidebands of television channels, using in-band digital signals, using out-of-band digital signals, or by any other preferred data transmission technique. Program schedule data and other media guide data may be provided to the user equipment on multiple analog or digital television channels. In some embodiments, a control circuit 304 implemented on the content aggregator 430 may transmit requests for media guide data from content providers 416 and 418 via paths 426 and 424.

[0088] The content aggregator 430 may communicate with device devices 402, 404, and 406 via clients installed on each of the device devices. For example, when a user first subscribes to a content aggregator subscription, a control circuit 304 implemented on the content aggregator 430 may facilitate the transfer of the client application to the device device. The control circuit 304 implemented on each of the device devices 402, 404, and 406 may then download, install, and reconfigure the client application from the content aggregator 430. The client application may then facilitate the distribution of media and media guide data from the content aggregator 430 to the device device. The client application may further include a user interface generated by the control circuit 304 implemented on the device device 300 for display on the display 312, enabling the user to interact with the media list using a user input interface 310, code for handling digital rights management (DRM) data, and codecs and players required to generate media for display on the display 312. In some embodiments, clients may be configured to communicate directly with content providers 416 and 418. The content aggregator 430 may include corresponding communication interfaces so that a control circuit 304 implemented on the content aggregator can receive input from clients implemented on each device. The control circuit 304 implemented on the content aggregator 430 may then use the communication interfaces to send and receive data from each client and from each content provider 416 and 418. The content aggregator 430 may also include one or more databases that store subscriber information and media content lists from content providers 416 and 418.

[0089] In some embodiments, the content aggregator 430 may communicate with the device devices via an internet browser available on the device devices 402, 404, and 406. For example, the user computer device 404 may include an implementation of Internet Explorer. When a user wishes to access media offerings of a content aggregator subscription (for example, a user may wish to access a list of Netflix available as part of a content aggregator subscription that the user subscribes to), the control circuit 304 implemented on the device device 404 may output a browser window containing a video mosaic display 200 on the display 312. The control circuit 304 implemented on the device device 404 may then receive a selection from the user input interface 310 indicating that the user wishes to access content from a subscription service that is part of a content aggregator subscription. For example, the user may instruct the mouse pointer to highlight and select a text portion 216 (e.g., Netflix). Next, the control circuit 304 implemented on the device 404 may transmit the input corresponding to the text portion 216 to the process of launching an internet browser, enabling the browser to load and display an internet website (e.g., www.netflix.com) associated with the selected subscription service.

[0090] In some embodiments, guide data from the content aggregator 430 may be provided to the user's device using a client-server approach. For example, the user's device may pull media guide data from the server, or the server may push media guide data to the user's device. In some embodiments, a guide application client residing on the user's device may initiate a session with the content aggregator 430 and retrieve the guide data as needed, for example, when the guide data is outdated or when the user's device receives a request from the user to receive the data. The media guide may be provided to the user's device at any preferred frequency (e.g., continuously, daily, at user-specified intervals, at system-specified intervals, upon request from the user's device, etc.). The content aggregator 430 may provide the user's device devices 402, 404, and 406 with the media guide application itself, or software updates for the media guide application.

[0091] In some embodiments, media guide data may include viewer data. For example, viewer data may include current and / or historical user activity information (e.g., what content a user typically watches, when a user watches content, whether a user interacts with social networks, when a user interacts with social networks and posts information, what types of content a user typically watches (e.g., pay TV or free TV), mood, brain activity information, etc.). Media guide data may also include subscription data. For example, subscription data may identify sources or services that a given user subscribes to and / or sources or services that a given user previously subscribed to but later discontinued access to (e.g., whether a user subscribes to pay channels, whether a user added a pay level of service, whether a user increased their internet speed). In some embodiments, viewer data and / or subscription data may identify patterns of a given user over a period of more than one year. Media guide data may include a model (e.g., a survivor model) used to generate a score indicating the likelihood that a given user will discontinue access to a service / source. For example, a media guide application may process audience data along with subscription data using a model to generate a value or score that indicates the likelihood of a given user terminating access to a particular service or source. In particular, a higher score may indicate a higher level of confidence that the user is likely to terminate access to a particular service or source. Based on the score, the media guide application may generate advertisements and promotions that encourage users to maintain access to a particular service or source indicated by the score as one that the user is likely to terminate access to.

[0092] The media guide application may be a standalone application implemented on the user's device, for example. For example, the media guide application may be implemented as software or a set of executable instructions that can be stored in the storage device 308 and executed by the control circuit 304 of the device 300. In some embodiments, the media guide application may be a client-server application, in which case only the client application resides on the user's device, and the server application resides on a remote server. For example, the media guide application may be implemented partly as a client application on the control circuit 304 of the device 300, and partly as a server application launched on the control circuit of the remote server (e.g., a content aggregator 430). When executed by the control circuit of the remote server (e.g., the content aggregator 430), the media guide application may instruct the control circuit to generate a guide application display and transmit the generated display to the user's device. The server application may instruct the control circuit of the content aggregator 430 to transmit data for storage on the user's device. The client application may instruct the control circuit of the receiving user device to generate a guide application display.

[0093] The content and / or media guide data delivered to user equipment devices 402, 404, and 406 may be over-the-top (OTT) content. OTT content delivery enables Internet-enabled user devices, including any user equipment devices described above, to receive content transmitted over the Internet, including any content described above, in addition to content received over cable or satellite connections. OTT content is delivered over Internet connections provided by Internet service providers (ISPs), but third parties also distribute the content. The ISP does not have to be involved in viewing capabilities, copyright, or redistribution of the content and may only transmit IP packets provided by the OTT content provider. Examples of OTT content providers include YouTube®, Netflix, and Hulu, which deliver audio and video over IP packets. YouTube is a trademark owned by Google Inc., Netflix is ​​a trademark owned by Netflix, Inc., and Hulu is a trademark owned by Hulu, LLC. The OTT content provider may also, or alternatively, provide media guide data as described above. In addition to content and / or media guide data, OTT content providers may distribute media guide applications (e.g., web-based or cloud-based applications), or the content may be displayed by a media guide application stored on the user's device.

[0094] The media guide system 400 is intended to illustrate several approaches or network configurations, thereby allowing user equipment devices and sources of content and guide data to communicate with each other for the purpose of accessing content and providing media guides. The embodiments described herein may be applied in any one or a subset of these approaches, or in systems employing other approaches for distributing content and providing media guides. The following four approaches provide specific examples of the general embodiment shown in Figure 4.

[0095] In one approach, user equipment devices may communicate with each other within a home network. User equipment devices can communicate with each other directly via the short-range point-to-point communication scheme described above, via an indirect path through a hub or other similar device provided on the home network, or via the communication network 414. Each of several individuals in a household may operate different user equipment devices on the home network. As a result, it may be desirable for various media guide information or settings to be communicated between different user equipment devices. For example, as described in more detail in U.S. Patent Publication No. 2005 / 0251827 filed July 11, 2005, it may be desirable for a user to maintain consistent media guide application settings on different user equipment devices within a home network. Different types of user equipment devices within a home network may also communicate with each other and transmit content. For example, a user may transmit content from a user computer device to a portable video player or portable music player.

[0096] In the second approach, a user may have multiple types of user devices, thereby accessing content and obtaining media guides. For example, some users may have a home network accessed by both home and mobile devices. Users may control their home devices via a media guide application implemented on a remote device. For example, a user may access an online media guide application on a website via their office personal computer or a mobile device such as a PDA or web-enabled mobile phone. Users may control their home devices by configuring various settings (e.g., recording, reminders, or other settings) on the online guide application. The online guide may control the user's devices directly or by communicating with the media guide application on the user's home devices. Various systems and methods for communication between user device devices that are located remotely from one another are discussed, for example, in U.S. Patent No. 8,046,801 of October 25, 2011, by Ellis et al., which is incorporated herein by reference in whole.

[0097] In the third approach, users of user devices inside and outside the home can communicate directly with the content provider 416 and use its media guide application to access content. Specifically, within the home, users of user television equipment 402 and user computer equipment 404 may access the media guide application to navigate between and identify desired content. Users may also use the wireless user communication device 406 to access the media guide application outside the home to navigate between and identify desired content.

[0098] In a fourth approach, user equipment devices may operate within a cloud computing environment and access cloud services. In a cloud computing environment, various types of computing services for content sharing, storage, or distribution (e.g., video sharing sites or social networking sites) are provided by a collection of network-accessible computing and storage resources referred to as the “cloud.” For example, the cloud may include a collection of server computing devices, which may be located in a central or distributed location, that provide cloud-based services, e.g., the Internet via a communication network 414, to various types of users and devices connected via a network. These cloud resources may include one or more content providers 416 and one or more content aggregators 430. In addition, or alternatively, remote computing sites may include other user equipment devices such as user television equipment 402, user computer equipment 404, and wireless user communication devices 406. For example, other user equipment devices may provide access to stored copies of video or streamed video. In such embodiments, user equipment devices may operate in a peer-to-peer manner without communicating with a central server.

[0099] The cloud provides user devices with access to services such as content storage, content sharing, or social networking services, and access to any content described above, among other embodiments. Services may be delivered within the cloud through a cloud computing service provider or through other providers of online services. For example, cloud-based services may include content storage services, content sharing sites, social networking sites, or other services through which user-supplied content is distributed for viewing by others on connected devices. These cloud-based services may enable user devices to store content in the cloud and receive content from the cloud, rather than storing and accessing content locally.

[0100] Users may record content using various content capture devices such as camcorders, digital cameras with video modes, audio recorders, mobile phones, and handheld computing devices. Users can upload content to a content storage service on the cloud either directly, for example, from user computer equipment 404, or from a wireless user communication device 406 having content capture features. Alternatively, users can first transfer content to a user equipment device such as user computer equipment 404. The user equipment device storing the content uploads the content to the cloud using a data transmission service on the communication network 414. In some embodiments, the user equipment device itself is a cloud resource, and other user equipment devices can directly access content from the user equipment device where the user has stored the content.

[0101] Cloud resources may be accessed by a user device using, for example, a web browser, a media guide application, a desktop application, a mobile application, and / or any combination thereof of access applications. The user device may be a cloud client that relies on cloud computing for application delivery, or it may have some functionality without accessing cloud resources. For example, some applications launched on the user device may be cloud applications, i.e., applications delivered as a service over the internet, while other applications may be stored and launched on the user device. In some embodiments, the user device may receive content from multiple cloud resources simultaneously. For example, the user device may stream audio from one cloud resource while downloading content from a second cloud resource. Alternatively, the user device may download content from multiple cloud resources for more efficient downloading. In some embodiments, the user device may use cloud resources for processing operations, such as processing operations performed by processing circuits described in relation to Figure 3.

[0102] Services that provide content subscriptions often allocate a finite number of streams to each subscription to allow users to stream media simultaneously. However, the number of streams allocated to each subscription is limited based on the type of subscription. In effect, when all available streams for a subscription are in use, users of a content subscription who wish to stream media may be forced to either wait until a stream becomes available or choose to control the streams being used by other users. This is particularly frustrating for users, for example, when all users of a content subscription are interested in watching a new episode of a TV show as soon as it becomes available, and the number of users exceeds the number of available streams. Furthermore, users may not be aware of the option to purchase additional streams, nor may they be aware of how often other users of the content subscription themselves are unable to watch content due to an unavailability of a stream.

[0103] Therefore, methods and systems for media guide applications that free users from having to manage multiple accounts for multiple subscription services are described herein. For example, by monitoring user activity and managing user accounts on behalf of the user, the control circuit 304 may recommend subscription services and / or terms of service tailored to the individual needs of the user.

[0104] Furthermore, the control circuit 304 may act on behalf of the user to determine which subscription service best meets the user's needs and / or a particular plan from a particular subscription service, and may read and process large amounts of data from numerous content providers. As will be discussed in detail below, the media guide application may process large amounts of data (often accessible only in computer-readable code) by comparing separate and heterogeneous datasets to identify trends and statistical optimizations for the user's benefit.

[0105] In some embodiments, the control circuit 304 may be configured to associate the number of available streams available to a user from the subscription service with the subscription associated with the user. The control circuit 304 may be implemented on a server, such as within a media content provider 416 or a content aggregator 430. The control circuit 304 implemented on the content aggregator 430 may communicate with various devices used by users accessing the subscription using a communication network 414. These devices may include a user television device 402, a user computer device 404, and a wireless user communication device 406. For example, the control circuit 304 receives a request from the media content provider 416 to stream media content (e.g., an episode of the television program "The Simpsons") to the computer device 404. Then, if the control circuit 304 implemented on the content aggregator 430 determines that the number of requests does not exceed the number of available streams, the control circuit 304 implemented on the content aggregator 430 streams the media content to the user computer device 404 using the communication network 414.

[0106] In some embodiments, the control circuit 304 may record data associated with each request in a log stored in the storage device 308. For example, in response to a request to stream media content, the control circuit 304 records a timestamp associated with the request, a reference to the requested media content (e.g., a reference to an episode of the television show "The Simpsons"), an identifier of the user requesting the content, an identifier of the device the user is using to request the content, and the number of available streams at the time of the request. In addition, the control circuit 304 may store an indication of whether the request was fulfilled. To provide this indication, the control circuit 304 may, at the time of the request, compare the number of available streams with the total number of requests to stream media. The control circuit 304 may then store an indication of whether the request was fulfilled.

[0107] In some embodiments, the control circuit 304 may record a start timestamp and an end timestamp associated with each request to stream media data in a log stored in the storage device 308. The control circuit 304 may use timestamps to effectively record instances where the user was unable to stream content due to an insufficient number of available streams, by correlating the timestamps with each instance. For example, the start timestamp corresponds to the time or near the time when the control circuit 304 received a request to stream media to the user device. The end timestamp may indicate the time or near the time when the control circuit 304 stopped sending streams to the user device (e.g., when media playback was complete or when the user requested to stop media playback). When the control circuit 304 receives a request to stream media to a device and the total number of requests at the time the request is received exceeds the number of streams available to the user, the control circuit 304 may record only the start timestamp and not the end timestamp to indicate that the request to stream media was not fulfilled.

[0108] In some embodiments, the control circuit 304 may associate a finite number of streams with a subscription. For example, the control circuit 304 associates nine streams with user Robert's subscription. In other words, nine streams are available for Robert to use to stream content. Therefore, if any other user requests to stream media using Robert's subscription, those requests will be fulfilled as long as the number of requests at the time the requests are made does not exceed the number of available streams.

[0109] In some embodiments, the control circuit 304 may detect multiple instances where the number of requests to simultaneously stream media from the subscription service to different devices exceeds the number of streams available to the user from the subscription service. For example, the control circuit 304 reads records stored in the log in the storage device 308 to identify a record that includes an identifier indicating that a given request associated with the record was not fulfilled. In another embodiment, the control circuit 304 reads a start timestamp associated with a request from the log stored in the storage device 308. For each read start timestamp, the control circuit 304 may determine the number of overlaps with a timestamp range defined by a pair of start and end timestamps. For example, the timestamp range corresponds to the duration between the start timestamp (i.e., a time associated with the time or near the time when the control circuit 304 received a request to stream media to the user device) and the end timestamp (i.e., a time or near the time when the control circuit 304 stopped sending streams to the user device). The control circuit 304 then may determine whether the number of overlaps exceeds the number of streams available to the user from the subscription service. If the number of duplicates exceeds the number of available streams, the control circuit 304 may associate the duplicates with instances. The control circuit 304 may further analyze all timestamps or a subset of timestamps stored in the log to determine the number of instances where the number of requests to simultaneously stream media from the subscription service to different devices exceeds the number of streams available to users from the subscription service. For example, the control circuit 304 may detect 12 instances where the number of requests to simultaneously stream media from the subscription service to different devices exceeds the number of streams available to users from the subscription service. In other words, on 12 occasions, at least one user was unable to access a stream from the subscription service.

[0110] In some embodiments, the control circuit 304 may generate multiple timestamps, each corresponding to one of multiple instances. For example, based on detecting the number of instances where the number of requests to simultaneously stream media from the subscription service to different devices exceeds the number of streams available to the user from the subscription service, the control circuit 304 stores a timestamp associated with each instance in a list in the storage device 308. Continuing the above embodiment of analyzing start and end timestamps, after the control circuit 304 detects multiple instances where the number of requests to simultaneously stream media from the subscription service to different devices exceeds the number of streams available to the user from the subscription service, it associates each instance with a corresponding start timestamp. For example, if the control circuit 304 detects 12 instances where the number of requests to simultaneously stream media from the subscription service to different devices exceeds the number of streams available to the user from the subscription service, the control circuit 304 generates a list of timestamps, each corresponding to one of the 12 instances, and stores it in the storage device 308.

[0111] In some embodiments, the control circuit 304 may compare each of the multiple timestamps to a range of timestamps corresponding to the subscription period for the subscription service and determine the number of instances that occurred during the subscription period. For example, if the control circuit 304 generates 12 timestamps, the control circuit 304 compares each of the 12 timestamps to the subscription period for the subscription service and determines the number of instances that fall within the subscription period (based on their corresponding timestamps). As previously discussed, the subscription period may be defined by a start timestamp and an end timestamp. The control circuit 304 then compares each of the 12 timestamps and determines whether each timestamp falls within the time range defined by the start and end timestamps of the subscription period. Based on the number of timestamps that fall within the range, the control circuit 304 may determine the number of instances that occurred during the subscription period. For example, the control circuit 304 determines that 9 of the 12 generated timestamps fall within the time range defined by the start and end timestamps of the subscription period.

[0112] In some embodiments, the control circuit 304 may compare the number of instances that occurred on the server during the subscription period with a threshold number for the subscription period. For example, the threshold number may represent the number of instances at which the user may subsequently become dissatisfied with the lack of available streams. By determining whether the threshold number has been exceeded, the control circuit may determine whether the user is likely to desire to acquire additional streams. As will become clearer below, the control circuit 304 may employ different approaches to determine the threshold number for the subscription period. Thus, instead of relying on a single static threshold, the control circuit may apply a threshold derived from the user's viewing habits, as individual users have varying degrees of tolerance for unavailable streams. For example, the control circuit 304 may base the threshold number on the number of streams available to the user from the subscription service. For example, the control circuit 304 may target users who consistently face unavailable streams. To that end, if the control circuit 304 determines that the number of streams available to a user from the subscription service (e.g., 9 streams) is greater than the average number of streams available to an average user of the subscription service (e.g., an average user may be associated with only 2 streams), the control circuit 304 sets the threshold number to a smaller number (e.g., 4). Users in subscriptions associated with multiple streams may have added extra streams in advance to minimize streaming conflict, and such users may already be sensitive to experiencing further streaming conflict. Therefore, the control circuit 304 may target users in such systems when the number of streaming conflicts exceeds a lower threshold.

[0113] In some embodiments, the control circuit 304 may transmit a message from the server to one of the different devices via the communication network 414 in response to the step of determining that the number of instances that occurred during the subscription period exceeds a threshold number for the subscription period. By transmitting the message, the control circuit 304 may address user frustration over the inability to stream content and may provide the user with an opportunity to address the problem of an insufficient quantity of streams available to them. The control circuit 304 may determine whether an alternative subscription service / plan could improve the number of streams available to the user, while controlling other variables (e.g., price) compared with data stream input and output metrics. Where applicable, the control circuit may transmit a message recommending an alternative subscription service / plan (e.g., indicating that additional streams are available for purchase). For example, in response to the step of determining that the number of instances that occurred during the subscription period (e.g., 12) exceeds a threshold number (e.g., 8), the control circuit 304 transmits a message from the server to the device indicating that the user associated with the device can purchase additional streams. The control circuit 304 may generate a message indicating that the user can purchase additional streams due to frequent streaming conflicts. The control circuit 304 may transmit messages for display on the display 312 of the user television equipment 402, the user computer equipment 404, or the wireless communication device 406. For example, the control circuit 304 generates a message for display within the program list display 100, which is displayed on the display 312 of the user television equipment 402.

[0114] In some embodiments, the control circuit 304 may select a threshold number for the subscription period from a plurality of potential threshold numbers based on the length of the subscription period. The control circuit 304 may determine the length of time associated with the subscription period by accessing data associated with the subscription stored in the storage device 308. For example, the control circuit 304 determines the length of the subscription period based on the start and end timestamps of the subscription period. For example, the control circuit 304 determines a one-month subscription period. In this embodiment, it may be undesirable to set a low threshold because it is unlikely that there will be many instances where the number of requests to simultaneously stream media from the subscription service exceeds the number of streams available to the user from the subscription service, and therefore the user may not be interested in taking action according to the message if they do not perceive the need to increase the number of streams or change their viewing habits. For this purpose, the control circuit 304 selects a low threshold number (e.g., 10) to take into account the fact that, on average, there may be a small number of instances where the number of requests to simultaneously stream media from the subscription service exceeds the number of streams available to the user from the subscription service during a one-month period compared to, for example, a six-month period. Therefore, the control circuit 304 sets a larger threshold if it determines that the length of time is longer (for example, one year).

[0115] In some embodiments, the control circuit 304 may store a number of thresholds associated with the subscription period in the storage device 308. For example, the control circuit 304 analyzes how often streaming conflicts (e.g., the number of instances where the number of requests to simultaneously stream media from the subscription service exceeds the number of streams available to the user from the subscription service) occur during a subscription period of a given length. The control circuit 304 further correlates instances in which conflicts occurred during the subscription period with instances in which the user took actions related to their subscription. For example, the control circuit 304 determines whether the user added a new stream to their subscription before or after the time when some conflicts occurred (e.g., a situation where the user was frustrated with the streaming conflict and took action to avoid future streaming conflicts by increasing the number of available streams). In another embodiment, the control circuit 304 determines whether the user canceled their subscription before or after the time when a certain number of conflicts occurred (e.g., a situation where the user was frustrated with the streaming conflict and therefore took action to cancel their subscription). The control circuit 304 may perform statistical analysis on these instances, where actions taken on the subscription are correlated with a certain number of streaming conflicts, in order to determine the number of effective thresholds to associate with the subscription period length. In this way, the control circuit 304 determines a threshold number that will enable it to effectively target users who are frustrated by streaming conflicts by transmitting useful messages while simultaneously avoiding interference from other users who are less likely to experience frustration with streaming conflicts. The control circuit 304 may store the threshold number in a record associated with a given subscription period in the storage device 308.

[0116] In some embodiments, the control circuit 304 may select a threshold number for the subscription period from a plurality of potential threshold numbers based on the number of streams available to the user from the subscription service. For example, a user of a subscription characterized by a small number of streams available to the user from the subscription service is more likely to want to understand how often the number of requests to stream media simultaneously exceeds the number of streams available to the user from the subscription service, because streaming conflicts are more likely to occur when only one or two streams are available. On the other hand, a user of a subscription characterized by a large number of streams available to the user from the subscription service is less likely to be interested in understanding how often the number of requests to stream media simultaneously exceeds the number of streams available to the user from the subscription service, because there are more likely to already be enough streams in the user's subscription to avoid most streaming conflicts.

[0117] In some embodiments, the control circuit 304 may store in the storage device 308 a number of thresholds associated with the number of streams available to the user from the subscription service. For example, the control circuit 304 analyzes how often conflicts (e.g., the number of instances where the number of requests to simultaneously stream media from the subscription service exceeds the number of streams available to the user from the subscription service) occur for each potentially available number of streams. For example, the control circuit 304 determines the average number of conflicts that occur when only one stream is available to the user, when two streams are available, etc. The control circuit 304 may further correlate the average number of conflicts that occur for each number of available streams with instances where the user has taken actions related to their subscription. For example, the control circuit 304 determines that when only one stream is available, the user frequently adds new streams to their subscription (e.g., a situation where the user can stream media to only one device, and therefore the user acts to avoid future streaming conflicts by increasing the number of available streams). In another embodiment, the control circuit 304 determines whether a user canceled their subscription before or after a certain number of conflicts occurred (for example, a situation where a user was dissatisfied with streaming conflicts and therefore acted to cancel their subscription). The control circuit 304 may perform statistical analysis on these instances, correlating the actions taken on the subscription with the number of available streams, in order to determine a threshold number to associate with the subscription duration. The control circuit 304 may then store the threshold number in a record associated with the subscription in the storage device 308.

[0118] In some embodiments, the control circuit 304 may compare each of the multiple timestamps to a range of timestamps corresponding to a portion of the subscription period for the subscription service and determine the number of multiple instances that occurred during that portion of the subscription period. For example, the control circuit 304 may compare each of the timestamps to a range of timestamps corresponding to a portion of the subscription period in which a popular program is broadcast (for example, all portions of the subscription period that may correspond to the 7 p.m. to 9 p.m. time slot on Wednesday, corresponding to the broadcast of a new episode of the program "The Simpsons") and determine that 10 timestamps occurred within the range of timestamps corresponding to that portion of the subscription period.

[0119] In some embodiments, the control circuit 304 may determine a portion of the subscription period by identifying the time of day, week, or month during which the user frequently streams media. For example, the control circuit 304 may identify a portion of the subscription period based on identifying the time of day corresponding to a certain percentage (e.g., 75%) of total stream consumption by analyzing data stored in the log in the storage device 308. For example, the control circuit 304 may determine that 75% of all media streaming during the subscription period occurred between 6 p.m. and 12 p.m. (e.g., after the user returns from work or school). The control circuit 304 then defines a portion of the subscription period to include only the time range defined by 6 p.m. to 12 p.m. each day.

[0120] Furthermore, the control circuit 304 may compare the number of instances that occurred during a portion of the subscription period on the server with a threshold number for that portion of the subscription period. For example, the control circuit 304 may compare the number of instances that occurred during a portion of the subscription period (e.g., 8) with a threshold number (e.g., 6).

[0121] In some embodiments, the control circuit 304 may modify a message transmitted from the server to one of the different devices in response to the step of determining that the number of instances that occurred during a portion of the subscription period exceeds a threshold number for that portion of the subscription period. For example, the control circuit 304 determines that the number of instances that occurred during a portion of the subscription period (e.g., 8) exceeds a threshold number (e.g., 6). In response, the control circuit 304 modifies a message transmitted from the server to one of the devices, for example, by indicating that the number of requests to stream media simultaneously often exceeds the number of streams available to the user from the subscription service during a corresponding portion of the subscription period (e.g., during a time slot between 7 p.m. and 9 p.m. on Wednesday, which could correspond to the broadcast of a new episode of the show "The Simpsons"). For example, the control circuit 304 generates a message such as, "Consider watching the show before 7 p.m. today, as other users associated with your subscription are likely to be watching a new episode of The Simpsons." Alternatively, the control circuit 304 may generate a message indicating that additional streams can be purchased in response to a step in determining that the number of instances that occurred during a portion of the subscription period (e.g., 8) exceeds a threshold number (e.g., 6). For example, the control circuit 304 may generate a message such as, "It appears your subscription does not support your viewing habits. Would you like to know how to increase the number of streams in your subscription?"

[0122] In some embodiments, the control circuit 304 may select a subset of threshold numbers for the subscription period from a plurality of potential threshold numbers based on the length of the subscription period. For example, as described above in relation to selecting a subset of threshold numbers for the subscription period from a plurality of potential threshold numbers based on the length of the subscription period, the control circuit 304 may apply an analogous principle to select a subset of threshold numbers for the subscription period.

[0123] In some embodiments, the control circuit 304 may select a threshold number for a portion of the subscription period from a plurality of potential threshold numbers based on the dates corresponding to that portion of the subscription period. For example, the control circuit 304 determines that a season premiere of a popular television show (e.g., "The Simpsons") falls within a portion of the subscription period by sending a query to the content aggregator 430 via the communication network 414. In response, the control circuit 304 may select a lower threshold number for that portion of the subscription period, taking into account the fact that the majority of users of the subscription are interested in watching episodes of the season of the popular television show (e.g., "The Simpsons"). In this way, users are more likely to be informed about streaming conflicts at times when they are more likely to care about streaming conflicts. In another embodiment, the control circuit 304 determines that dates corresponding to summer months (e.g., June, July, and August) occur within a portion of the subscription period. Summer months are typically associated with fewer new television shows airing. In addition, users with children are more likely to spend less time streaming media, and therefore, users may instead spend more time on vacation and outdoors compared to months in other seasons. Thus, during the summer months, users may feel less frustrated by streaming conflicts, and streaming conflicts may also be less likely to occur. Therefore, the control circuit 304 may set a higher threshold for a portion of the subscription period from a number of potential thresholds based on the date corresponding to the portion of the subscription period that falls in the month of June, July, or August. In this way, users may receive fewer messages, if any, during months when they may stream media less frequently.

[0124] In some embodiments, the control circuit 304 may select a number of thresholds for a portion of the subscription period from a plurality of potential threshold numbers based on the time corresponding to that portion of the subscription period. For example, the control circuit 304 monitors the user's viewing history by accessing the profile associated with the subscription. In one embodiment, the control circuit 304 queries the user history stored in the subscription data on the user television device 402, the user computer device 404, or the wireless user communication device 406. In a different embodiment, the control circuit 304 queries the user history on the storage device 308 of the media guide data source. By analyzing the user history, the control circuit 304 determines the time of day during which the user is most likely to stream media. In one embodiment, the control circuit 304 determines that most users stream media at night (for example, after returning from work or school). The control circuit 304 may select a low threshold number for the time of day during which the user is most likely to stream media to help the user understand their viewing habits and streaming needs. For example, in response to the step of determining that a portion of the subscription period (e.g., a time slot between 8 p.m. and 10 p.m. during a given day) corresponds to the time when the subscriber's users are most likely to stream media, the control circuit 304 selects a low threshold number (to take into account the fact that streaming conflicts are more likely to occur after users have returned from work and school).

[0125] In some embodiments, the control circuit 304 may select a threshold number for a portion of the subscription period from a plurality of potential threshold numbers based on the number of media assets that became available from the subscription service during that portion of the subscription period. For example, some subscription services improve their content offerings by periodically adding new media assets. If this happens, users may be interested in streaming more media than they had before the new media assets became available. Thus, more streaming conflict is likely to occur. The control circuit 304 may determine the number of media assets that became available from the subscription service during that portion of the subscription period based on the number of media assets that were added to the subscription service media offering during that portion of the subscription period. The control circuit 304 may determine the number of media assets that became available from the subscription service during that portion of the subscription period by sending a query to the content aggregator 430 via the communication network 404. Such a query may request the number of media assets that were added to the subscription service offering during the time period corresponding to that portion of the subscription period. For example, if the number of media assets made available from the subscription service during one part of the subscription period is greater than the number of media assets made available from the subscription service during the other part of the subscription period, the control circuit 304 sets a lower threshold number to take into account the fact that the user of the subscription is more likely to stream media assets that have not been streamed before (e.g., because they were recently added), and therefore is more likely to want to know how often the number of requests exceeds the number of streams available to the user from the subscription service.

[0126] In some embodiments, the control circuit 304 may transmit a message that includes recommendations for reducing the frequency of multiple instances. For example, in response to a step in determining that the number of multiple instances that occurred during the subscription period exceeds a threshold number for the subscription period, the control circuit 304 transmits a message from the server to one of the different devices. The message may include recommendations for reducing the frequency of multiple instances. For example, the control circuit 304 may inform the user that they are more likely to successfully stream the media outside of a certain time (for example, outside the 7pm to 9pm time slot on Wednesdays, which may correspond to the broadcast of a new episode of the show "The Simpsons" that the user is interested in streaming). The message may include information that may be useful when informing the user about streaming conflicts. For example, such information may include the name of the media asset, the user's name, the number of streaming conflicts that occurred during the subscription period, instructions to increase or decrease the number of streams in the subscription, and recommendations on how to minimize the number of future streaming conflicts.

[0127] Figures 5 and 6 present algorithms, according to some embodiments of the present disclosure, for a control circuit (e.g., control circuit 304) to detect the number of instances in which the number of instances simultaneously streaming media from a subscription service to different devices exceeds the number of available streams during the subscription period, and for transmitting a message to one of the devices when the number of instances exceeds a certain number. In some embodiments, the algorithm may be encoded on a non-transient storage medium (e.g., storage device 308) as a set of instructions that are decoded and executed by a processing circuit (e.g., processing circuit 306). The processing circuit may, in turn, provide instructions to other subcircuits contained within control circuit 304, such as tuning, video generation, coding, decoding, encryption, decryption, scaling, analog-to-digital conversion circuits, and equivalents.

[0128] The flowchart in Figure 5 illustrates an algorithm for determining the number of instances that occurred during the subscription period in a control circuit (e.g., control circuit 304) according to some embodiments of the present disclosure.

[0129] In step 502, an algorithm would be initiated to detect the number of instances that occurred during the subscription period in which the number of requests to stream media from the subscription service to different devices simultaneously exceeds the number of available streams, based on requests to stream media. In some embodiments, this may be done in response to a user action or input (e.g., from a signal received by the control circuit 304 or the user input interface 310), either directly or indirectly. For example, the algorithm may be initiated in direct response to the control circuit 304 receiving a signal from the user input interface 310, or the control circuit 304 may prompt the user to acknowledge its input using a display (e.g., by generating a prompt displayed on the display 312) prior to invoking the algorithm.

[0130] In step 504, the control circuit 304 then reads the next instance of the timestamp from the stored memory. In some embodiments, the control circuit 304 may receive a single basic data structure representing the value of the timestamp. In some embodiments, the value may be stored as part of a larger data structure, and the control circuit 304 may read the value by performing an appropriate accessor method to read the value from the larger data structure.

[0131] In step 506, the control circuit 304 then compares the value of the retrieved timestamp with the stored values ​​of the start timestamp and end timestamp associated with the subscription period. In some embodiments, the stored values ​​of the start timestamp and end timestamp associated with the subscription period may be stored (e.g., on a storage device 308) prior to starting the algorithm. In some embodiments, the start timestamp and end timestamp associated with the subscription may also be retrieved for every instance of the retrieved timestamp, and the start timestamp and end timestamp associated with the subscription may change with iteration. In some embodiments, the control circuit 304 may directly compare the stored values ​​of the start timestamp and end timestamp associated with the subscription with the value of the retrieved timestamp by accessing the values ​​from memory and performing a value comparison, respectively. In some cases, the control circuit 304 may call a comparison function (e.g., for object comparison) to compare the retrieved timestamp with the stored values ​​of the start timestamp and end timestamp associated with the subscription.

[0132] In step 508, the control circuit 304 compares the value of the read timestamp with the stored value of the end timestamp associated with the subscription to determine whether the value of the read timestamp is greater than the value of the end timestamp associated with the subscription. If the condition is met, the algorithm may proceed to step 510. If the condition is not met, the algorithm may instead proceed to step 512.

[0133] In step 510, the control circuit 304 will execute a subroutine to ignore the instance associated with the read timestamp, based on the condition in step 508 being met. After the subroutine is executed, the algorithm may proceed to step 516, where all instances of the read timestamp are considered and it is determined whether further iteration is required.

[0134] In step 512, the control circuit 304 compares the value of the read timestamp with the value of the start timestamp and determines whether the value of the read timestamp is greater than the value of the start timestamp. If the condition is met, the algorithm may proceed to step 514. If the condition is not met, the algorithm may instead proceed to step 516.

[0135] In step 514, based on the conditions of step 512 being met, the control circuit 304 will execute a subroutine to add the instance associated with the identified timestamp to the count of instances within the subscription period. After the subroutine has been executed, the algorithm may proceed to step 516, where all instances of the timestamp are considered and it is determined whether further iteration is required.

[0136] In step 516, the control circuit 304 will check whether all instances of the timestamp are to be considered. If all instances have been evaluated, the control circuit 304 may proceed to step 518. For example, the control circuit 304 may call a function to check if there is a next element in the timestamp. If the function returns true (i.e., there are still instances that need to be processed), the control circuit 304 may proceed to step 504.

[0137] In step 518, the control circuit 304 will execute a subroutine to compare the total number of identified instances with a threshold number.

[0138] It should be considered that the description of Figure 5 may be used in conjunction with any other embodiments of the present disclosure. In addition, the description relating to the algorithm in Figure 5 may be performed in an alternative order or in parallel to facilitate the purposes of the present disclosure. For example, conditional statements and logical evaluations, such as those in 508 and 512, may be performed in any order, in parallel, or simultaneously to reduce delays in the system or method or to increase speed. As a further embodiment, in some embodiments, some instances of timestamps may be evaluated in parallel using multiple logical processor threads, or the algorithm may be extended by incorporating branch prediction. Furthermore, it should be noted that the algorithm in Figure 5 may be implemented on a well-configured combination of software and hardware, and any of the devices or equipment discussed with respect to Figures 3-4 may be used to implement one or more parts of the algorithm.

[0139] The pseudocode in Figure 6 illustrates an algorithm that, according to some embodiments of the present disclosure, would begin with a request to stream media and detect the number of instances that occurred within a subscription period in which the number of requests to simultaneously stream media from a subscription service to different devices exceeds the number of available streams. The process illustrated by the pseudocode in Figure 6 may be implemented in any number of programming languages ​​and various different hardware, and it will be apparent to those skilled in the art that the style and form should not be interpreted as restrictive but rather as a general template of steps and procedures that would be consistent with code used to implement some embodiments of the present disclosure.

[0140] On line 601, the algorithm may invoke a subroutine, which begins on line 605, to initialize a variable and prepare to determine the number of instances that occurred during the subscription period. For example, in some embodiments, the control circuit 304 may copy instructions from a non-transient storage medium (e.g., storage device 308) into RAM or into a cache for the processing circuit 306 during the initialization phase. In addition, in some embodiments, the values ​​of a stored subscription period start timestamp and a stored subscription period end time, which are used for comparison, may be read, set, and stored at 601.

[0141] On line 605, the control circuit 304 may receive an instance of a timestamp. In some embodiments, these instances may be read from stored memory. The control circuit 304 receives an instance of a timestamp, for example, by receiving a pointer to an array of timestamp values. In another embodiment, the control circuit 304 receives an object of a class such as an iterator object containing the elements of the timestamp.

[0142] In line 606, the control circuit 304 may iterate through various instances of the timestamp, and if only a single instance is available, the loop will execute only once. This loop may be implemented in multiple forms depending on the hardware and software language choices used to implement the algorithm in Figure 6; for example, it may be implemented as part of a "for" or "while" loop.

[0143] On line 607, the control circuit 304 will store the timestamp value in a temporary variable "A". In some embodiments, the timestamp value may be stored as part of a larger data structure or class, and the timestamp value may be retrieved through an appropriate accessor method. In some embodiments, the timestamp may be converted from a string or other non-numeric data type to a numeric data type using an appropriate hashing algorithm. In some embodiments, the control circuit 304 may call a function that compares the retrieved timestamp to the subscription start time. In some embodiments, the timestamp may be encoded as a basic data structure, and the retrieved timestamp may be used directly in the comparison on lines 610 and 612, rather than using a temporary variable.

[0144] On line 608, the control circuit 304 will store the value of the subscription start timestamp in a temporary variable "B". Similar to timestamps, in some embodiments, the value of the subscription start timestamp may be stored as part of a larger data structure or class, and the value of the subscription start timestamp may be retrieved through an accessor method. In some embodiments, the subscription start timestamp may be converted from a string or other non-numeric data type to a numeric data type using a suitable hashing algorithm, or the subscription start timestamp may be a basic data structure and may be used directly in the comparison on line 612.

[0145] On line 609, the control circuit 304 will store the value of the subscription end time in a temporary variable "C". Similar to the start timestamp, in some embodiments the value of the subscription end timestamp may be stored as part of a larger data structure or class, and the value of the subscription end timestamp may be retrieved through an accessor method. In some embodiments the subscription end timestamp may be converted from a string or other non-numeric data type to a numeric data type using a suitable hashing algorithm, or the subscription end timestamp may be a basic data structure and may be used directly in the comparison on line 610.

[0146] In line 610, the control circuit 304 will compare the values ​​of A and C to determine whether A is greater than C.

[0147] On line 611, control circuit 304 will execute a subroutine to ignore the instance associated with the read timestamp control circuit if the conditions on line 610 are met.

[0148] In line 612, the control circuit 304 will compare the values ​​of A and B and determine whether A is greater than B.

[0149] On line 613, the control circuit 304 will execute a subroutine to add the instance associated with the identified timestamp to the count of instances within the subscription period, provided that the conditions in line 612 are met.

[0150] On line 615, control circuit 304 will execute a subroutine to determine whether all instances associated with a timestamp are considered using control circuit 304 if neither of the conditions on line 610 or 612 is met.

[0151] On line 617, the control circuit 304 may invoke a termination subroutine after the algorithm has performed its function. For example, in some embodiments, the control circuit 304 may destroy variables, perform garbage collection, free memory, or clear the cache of the processing circuit 306.

[0152] It will be apparent to those skilled in the art that the algorithm illustrated by the pseudocode in Figure 6 can be implemented in any number of programming languages ​​and various different hardware, and that the specific choices and locations of the antiderivative, logical evaluation, and functional evaluation are not intended to be limiting. It will also be apparent that the code can be refactored or rewritten to manipulate the order of various logical evaluations, to perform several iterations in parallel instead of a single iterative loop, or to optimize execution time and performance metrics in a different way without fundamentally changing the input or final output. For example, in some embodiments, break conditions may be imposed after lines 610 and 612 to accelerate operation, or conditional statements may be replaced with case switches. In some embodiments, instead of iterating over all instances of the timestamp in step 606, the code may be rewritten to reduce the number of iterations required and potentially accelerate computation time by instructing the control circuit 304 to evaluate multiple instances of the timestamp simultaneously on multiple processors or processor threads.

[0153] Figures 7 and 8 present an algorithm, according to some embodiments of the present disclosure, for a control circuit (e.g., control circuit 304) to detect the number of instances in which the number of instances simultaneously streaming media from a subscription service to different devices exceeds the number of streams available during a portion of the subscription period, and for transmitting a message to one of the devices when the number of instances exceeds a certain number. In some embodiments, the algorithm may be encoded on a non-transient storage medium (e.g., storage device 308) as a set of instructions that are decoded and executed by a processing circuit (e.g., processing circuit 306). The processing circuit may, in turn, provide instructions to other subcircuits contained within control circuit 304, such as tuning, video generation, coding, decoding, encryption, decryption, scaling, analog-to-digital conversion circuits, and equivalents.

[0154] The flowchart in Figure 7 illustrates an algorithm for determining the number of instances that occurred during a portion of the subscription period in a control circuit (e.g., control circuit 304) according to some embodiments of the present disclosure.

[0155] Step 702 would initiate an algorithm that detects the number of instances that occurred within a portion of the subscription period in which the number of requests to stream media from the subscription service to different devices simultaneously exceeds the number of available streams, based on requests to stream media. In some embodiments, this may be done in response to user actions or input (e.g., from signals received by the control circuit 304 or the user input interface 310), either directly or indirectly. For example, the algorithm may be initiated in direct response to the control circuit 304 receiving a signal from the user input interface 310, or the control circuit 304 may prompt the user to acknowledge their input using the display (e.g., by generating a prompt displayed on the display 312) prior to invoking the algorithm.

[0156] In step 704, the control circuit 304 then reads the next instance of the timestamp from the stored memory. In some embodiments, the control circuit 304 may receive a single basic data structure representing the value of the timestamp. In some embodiments, the value may be stored as part of a larger data structure, and the control circuit 304 may read the value by performing an appropriate accessor method to read the value from the larger data structure.

[0157] In step 706, the control circuit 304 then compares the value of the retrieved timestamp with the stored values ​​of the start timestamp and end timestamp associated with the portion of the subscription period. In some embodiments, the stored values ​​of the start timestamp and end timestamp associated with the portion of the subscription period may be stored (e.g., on the storage device 308) prior to starting the algorithm. In some embodiments, the start timestamp and end timestamp associated with the portion of the subscription period may also be retrieved for every instance of the retrieved timestamp, and the start timestamp and end timestamp associated with the portion of the subscription period may change with iteration. In some embodiments, the control circuit 304 may directly compare the stored values ​​of the start timestamp and end timestamp associated with the portion of the subscription period with the value of the retrieved timestamp by accessing the values ​​from memory and performing a value comparison, respectively. In some cases, the control circuit 304 may call a comparison function (e.g., for object comparison) to compare the retrieved timestamp with the stored values ​​of the start timestamp and end timestamp associated with the portion of the subscription period.

[0158] In step 708, the control circuit 304 compares the value of the read timestamp with the value of the end timestamp associated with the portion of the subscription period to determine whether the value of the read timestamp is greater than the value of the end timestamp associated with the portion of the subscription. If the condition is met, the algorithm may proceed to step 710. If the condition is not met, the algorithm may instead proceed to step 712.

[0159] In step 710, the control circuit 304 will execute a subroutine to ignore the instance associated with the read timestamp, based on the condition in step 708 being met. After the subroutine is executed, the algorithm may proceed to step 716, where all instances of the read timestamp are considered and it is determined whether further iteration is required.

[0160] In step 712, the control circuit 304 compares the value of the read timestamp with the value of the start timestamp and determines whether the value of the read timestamp is greater than the value of the start timestamp. If the condition is met, the algorithm may proceed to step 714. If the condition is not met, the algorithm may instead proceed to step 716.

[0161] In step 714, based on the conditions of step 712 being met, the control circuit 304 will execute a subroutine to add the instances associated with the identified timestamps to the count of instances that are within a portion of the subscription period. After the subroutine has been executed, the algorithm may proceed to step 716, where all instances of the timestamps have been considered and it is determined whether further iterations are required.

[0162] In step 716, the control circuit 304 will check whether all instances of the timestamp are considered. If all instances have been evaluated, the control circuit 304 may proceed to step 718. For example, the control circuit 304 may call a function to check if there is a next element in the timestamp. If the function returns true (i.e., there are still instances that need to be processed), the control circuit 304 may proceed to step 704.

[0163] In step 718, the control circuit 304 will execute a subroutine to compare the total number of identified instances with a threshold number.

[0164] It should be considered that the description of Figure 7 may be used in conjunction with any other embodiments of the present disclosure. In addition, the description relating to the algorithm in Figure 7 may be performed in an alternative order or in parallel to facilitate the purposes of the present disclosure. For example, conditional statements and logical evaluations, such as those in 708 and 712, may be performed in any order, in parallel, or simultaneously to reduce delays in the system or method or to increase speed. In further embodiments, in some embodiments, some instances of timestamps may be evaluated in parallel using multiple logical processor threads, or the algorithm may be extended by incorporating branch prediction. Furthermore, it should be noted that the algorithm in Figure 7 may be implemented on a well-configured combination of software and hardware, and any of the devices or equipment discussed with respect to Figures 3-4 may be used to implement one or more parts of the algorithm.

[0165] The pseudocode in Figure 8 illustrates an algorithm, which, according to some embodiments of the present disclosure, would begin with a request to stream media and detect the number of instances that occurred within a portion of the subscription period in which the number of requests to simultaneously stream media from a subscription service to different devices exceeds the number of available streams. It will be apparent to those skilled in the art that the algorithm illustrated by the pseudocode in Figure 8 can be implemented in any number of programming languages ​​and various different hardware, and that its style and form should not be interpreted as restrictive but rather as a general template of steps and procedures that would correspond to code used to implement some embodiments of the present disclosure.

[0166] On line 801, the algorithm may invoke a subroutine, which begins on line 805, to initialize a variable and prepare to determine the number of instances that occurred within a portion of the subscription period. For example, in some embodiments, the control circuit 304 may copy instructions from a non-transient storage medium (e.g., storage device 308) into RAM or into a cache for the processing circuit 306 during the initialization phase. In addition, in some embodiments, stored start-time values ​​for a portion of the subscription period and stored end-time values ​​for a portion of the subscription period, which are used for comparison, may be read, set, and stored in 801.

[0167] On line 805, the control circuit 304 may receive an instance of a timestamp. In some embodiments, these instances may be read from stored memory. The control circuit 304 may receive an instance of a timestamp, for example, by receiving a pointer to an array of timestamp values. In another embodiment, the control circuit 304 may receive an object of a class such as an iterator object containing the elements of a timestamp.

[0168] In line 806, the control circuit 304 may iterate through various instances of the timestamp, and if only a single instance is available, the loop will execute only once. This loop may be implemented in multiple forms depending on the hardware and software language choices used to implement the algorithm in Figure 8; for example, it may be implemented as part of a "for" or "while" loop.

[0169] On line 807, the control circuit 304 will store the timestamp value in a temporary variable "A". In some embodiments, the timestamp value may be stored as part of a larger data structure or class, and the timestamp value may be retrieved through an appropriate accessor method. In some embodiments, the timestamp may be converted from a string or other non-numeric data type to a numeric data type using an appropriate hashing algorithm. In some embodiments, the control circuit 304 may call a function that compares the read timestamp to the start time of a portion of the subscription period. In some embodiments, the timestamp may be encoded as a basic data structure, and the read timestamp may be used directly in the comparison on lines 810 and 812, rather than using a temporary variable.

[0170] On line 808, the control circuit 304 will store the value of the start time of a portion of the subscription period in a temporary variable "B". Similar to timestamps, in some embodiments, the timestamp value of the start time of a portion of the subscription period may be stored as part of a larger data structure or class, and the value of the subscription period start timestamp may be retrieved through an accessor method. In some embodiments, the subscription period start timestamp may be converted from a string or other non-numeric data type to a numeric data type using a suitable hashing algorithm, or the subscription period start timestamp may be a basic data structure and may be used directly in the comparison on line 812.

[0171] At line 809, the control circuit 304 will store the value of the end timestamp of a portion of the subscription period in a temporary variable "C". Similar to the start timestamp, in some embodiments, the value of the subscription period end timestamp is stored as part of a larger data structure or class, and the value of the end timestamp of a portion of the subscription period may be obtained through an accessor method. In some embodiments, the end timestamp of a portion of the subscription period may be converted from a string or other non-numeric data type to a numeric data type using an appropriate hashing algorithm, or the end timestamp of a portion of the subscription period may be a basic data structure and may be used directly in the comparison at line 810.

[0172] At line 810, the control circuit 304 will compare the values of A and C to determine whether A is greater than C.

[0173] At line 811, the control circuit 304 will execute a subroutine to ignore the instance associated with the read timestamp control circuit if the condition at line 810 is satisfied.

[0174] At line 812, the control circuit 304 will compare the values of A and B to determine whether A is greater than B.

[0175] At line 813, the control circuit 304 will execute a subroutine to add the instance associated with the identified timestamp to the count of instances within the subscription period portion if the condition at line 812 is satisfied.

[0176] At line 814, the control circuit 304 will determine whether neither condition at line 810 nor 812 is satisfied. If neither condition is satisfied, the instruction at line 815 may be evaluated and executed.

[0177] At line 817, the control circuit 304 may initiate an end subroutine after the algorithm has fulfilled its function. For example, in some embodiments, the control circuit 304 may destroy variables, perform garbage collection, free memory, or erase the cache of the processing circuit 306.

[0178] The algorithm described by the pseudocode of FIG. 8 can be implemented in any number of programming languages and various different hardware, and it will be apparent to those skilled in the art that the particular choices and locations of primitive functions, logical evaluations, and functional evaluations are not intended to be limiting. Also, the code can be refactored or rewritten to operate the execution time and performance metrics differently for optimization, such as operating several iterations in parallel instead of a single iteration loop that manipulates the order of various logical evaluations, or changing the input or final output fundamentally. For example, in some embodiments, a break condition may be imposed after lines 810 and 812 to accelerate the operation, or the conditional statement may be replaced with a case switch. In some embodiments, instead of iterating over all instances of the timestamp in step 806, in some embodiments, the code may be rewritten such that the control circuit 304 is instructed to evaluate multiple instances of the timestamp simultaneously on multiple processors or processor threads, reducing the number of iterations required and potentially accelerating the computation time.

[0179] Figure 9 is a flowchart of illustrative steps involved in transmitting a message to a device when the number of instances exceeds a certain number. Note that process 900 or any of its steps may occur on or be provided by any of the devices shown in Figures 3-4. For example, process 900 may be performed by control circuit 304 (Figure 3) as instructed by control circuits implemented on user devices 402, 404, and / or 406 (Figure 4) to detect when the number of instances exceeds a certain number and to transmit a message to a device. In addition, one or more steps of process 900 may be incorporated into or combined with one or more steps of any other process or embodiment.

[0180] Process 900 begins in step 902, in which the control circuit 304 detects multiple instances in which the number of requests to simultaneously stream media from the subscription service to different devices exceeds the number of streams available to the user from the subscription service. The control circuit 304 receives requests from various devices used by users accessing the subscription service. These devices may include user television equipment 402, user computer equipment 404, and wireless user communication device 406. In one embodiment, the control circuit 304 detects in 12 instances that the number of requests to simultaneously stream media from the subscription service to different devices exceeds the number of streams available to the user from the subscription service. In other words, on 12 occasions, at least one user of the subscription was unable to stream content from the content subscription service.

[0181] In step 904, the control circuit 304 generates multiple timestamps, each corresponding to one of the multiple instances. For example, based on detecting the number of instances where the number of requests to simultaneously stream media from the subscription service to different devices exceeds the number of streams available to users from the subscription service, the control circuit 304 stores a timestamp associated with each instance in a list in the storage device 308. For example, if the control circuit 304 detects 12 instances where the number of requests to simultaneously stream media from the subscription service to different devices exceeds the number of streams available to users from the subscription service, the control circuit 304 generates a list of timestamps, each timestamp corresponding to one of the 12 instances, and stores it in the storage device 308.

[0182] In step 906, the control circuit 304 determines the number of instances that occurred within the subscription period based on the timestamps by comparing each of the multiple timestamps with the timestamp range corresponding to the subscription period for the subscription service and determining the number of instances that occurred during the subscription period. For example, if the control circuit 304 generates 12 timestamps, the control circuit 304 compares each of the 12 timestamps with the subscription period for the subscription service. The control circuit 304 then compares each of the 12 timestamps and determines whether each timestamp falls within the time range defined by the start and end timestamps of the subscription period. Based on the number of timestamps that fall within the range, the control circuit 304 determines the number of instances that occurred during the subscription period. For example, the control circuit 304 determines that 9 of the 12 generated timestamps fall within the time range defined by the start and end timestamps of the subscription period.

[0183] In step 908, the control circuit 304 compares the number of instances that occurred during the subscription period to a threshold number for the subscription period. The control circuit 304 employs different approaches to determine the threshold number for the subscription period. For example, the control circuit 304 may base the threshold number on the number of streams available to the user from the subscription service. For example, the control circuit 304 may target users who are consistently dealing with unavailable streams. To that end, if the control circuit 304 determines that the number of streams available to the user from the subscription service (e.g., 9 streams) is greater than the average number of streams available to the average user of the subscription service (e.g., the average user may be associated with only 2 streams), then the control circuit 304 sets the threshold number to a larger number (e.g., 12).

[0184] In step 910, the control circuit 304 transmits a message to the device if the number of instances that occurred during the subscription period exceeds a threshold number. For example, in response to the step of determining that the number of instances that occurred during the subscription period exceeds a threshold number for the subscription period, the control circuit 304 transmits a message over the network from the server to one of the different devices via the communication network 414. For example, in response to the step of determining that the number of instances that occurred during the subscription period (e.g., 12) exceeds a threshold number (e.g., 8), the control circuit 304 transmits a message from the server to the device indicating that the user associated with the device can purchase additional streams. In one embodiment, the control circuit 304 generates a message indicating that the user can purchase additional streams due to frequent streaming conflicts. The control circuit 304 transmits the message for display on the display 312 of a user television device 402, a user computer device 404, or a wireless communication device 406. For example, the control circuit 304 generates a message for display within a program list display 100, which is displayed on the display 312 of a user television device 402.

[0185] It should be considered that the steps or descriptions in Figure 9 may be used in conjunction with any other embodiments of the present disclosure. In addition, the steps and descriptions described with respect to Figure 9 may be performed in an alternative order or in parallel in order to facilitate the purpose of the present disclosure. For example, each of these steps may be performed in any order, in parallel, or substantially simultaneously in order to reduce delays or increase speed of the system or method.

[0186] It will be apparent to those skilled in the art that methods relating to the present invention can be embodied in a computer program product including a computer-usable and / or computer-readable medium. For example, such a computer-usable medium may consist of a read-only memory device such as a CD-ROM disk or a conventional ROM device, or a random-access memory such as a hard drive device or a computer diskette, having computer-readable program code stored thereon. It should also be understood that methods, techniques, and processes relating to the present invention can be performed using processing circuits. For example, the detection of social media interactions associated with a user may be performed by a processing circuit, for example, the processing circuit 306 in Figure 3. The processing circuit may be, for example, a general-purpose processor in an instrument device 300, a media content provider 416, or a content aggregator 430, a customized integrated circuit (e.g., an ASIC), or a field-programmable gate array (FPGA). For example, media asset metadata, as described herein, may be stored in and read from a storage device 308 in Figure 3 or a content aggregator 430 in Figure 4. Furthermore, the processing circuit or computer program may update user-associated settings, such as user profile attributes, and update the information stored in the storage device 308 in Figure 3 or the content aggregator 430 in Figure 4.

[0187] The processes discussed above are intended to be illustrative, not restrictive. Those skilled in the art will understand that any additional steps, which may be omitted, modified, combined, and / or rearranged, may be performed without departing from the scope of the invention. More generally, the above disclosures are intended to be illustrative, not restrictive. Only the subsequent claims are intended to set boundaries regarding what the invention encompasses. Furthermore, it should be noted that features and limitations described in any one embodiment may apply to any other embodiment of this specification, and that flowcharts or examples relating to one embodiment may be combined with any other embodiment in a preferred manner, performed in a different order, or performed in parallel. In addition, the systems and methods described herein may be performed in real time. It should also be noted that the systems and / or methods described above may apply to or be used in accordance with other systems and / or methods.

[0188] In some embodiments, the control circuit 304 may automatically receive authentication information from the content aggregator service. For example, a media guide application implemented on the control circuit 304 may receive authentication information and associate it with a user account before the control circuit 304 receives a request from the user to subscribe to the subscription service. The control circuit 304 may then receive the request from the user to subscribe to the subscription service, thus verifying the legitimacy of the account and granting the user access to the provision of the subscription service.

[0189] In some respects, the control circuit 304 may receive a first authentication key from a content aggregator server (e.g., Rovi Super Aggregator) associated with a second subscription service at a content provider server (e.g., Hulu) associated with a subscription service, the first authentication key being received before the user subscribes to the first subscription service. For example, the user may subscribe to a content aggregator service (i.e., the second subscription service). Once the user has completed their registration for the second subscription service, the control circuit 304 implemented on the content aggregator server associated with the second subscription service may generate an authentication key to associate the user with some or all of the subscription services available as part of the content aggregator subscription, and may forward the generated authentication key to the servers associated with each subscription service, including the first subscription service. Each authentication key may be encoded to ensure that the information stored in the key is securely transmitted to the servers associated with each subscription service. In addition, each authentication key may include information identifying the user and the second subscription service (e.g., Rovi Super Aggregator). Next, the control circuit 304 implemented on the content provider server associated with the first subscription service may receive an authentication key generated from the content aggregator server. In some cases, the control circuit 304 implemented on the content provider server may decrypt the authentication key and extract the information stored in the key. In addition, the control circuit 304 may store the authentication key on the content provider server. In this way, the control circuit 304 may transmit authentication information associated with the first user to the first subscription service without burdening the user with manually creating an account.

[0190] In some cases, after a user has subscribed to a second subscription service, but before the control circuit 304 implemented on the content aggregator server detects that the user wishes to subscribe to a first subscription service, the control circuit 304 implemented on the content provider server may receive the first authentication key from the content aggregator server. For example, an entity providing a second subscription service (e.g., Rovi Super Aggregator) may reach an agreement with an entity providing a first subscription service (e.g., Hulu) to offer a discounted subscription to the first subscription service to users of the second subscription service. Before the user subscribes to the first subscription service, the control circuit 304 implemented on the content aggregator server may transmit the first authentication key to the content aggregator server.

[0191] In some cases, a control circuit 304 implemented on a content aggregator server associated with a second subscription service may generate an authentication key to associate the user with some or all of the subscription services available as part of the content aggregator subscription, and forward the generated authentication key to the servers associated with each subscription service, including the first subscription service. Each authentication key may be encrypted to ensure that the information stored in the key is securely transmitted to the servers associated with each subscription service. For example, the authentication key may be encrypted via a public key that may be accessible to both the content provider server and the content aggregator server. In addition, each authentication key may include information that identifies the user and the second subscription service (e.g., Rovi Super Aggregator). In one embodiment, the authentication key may include a username and password associated with the user on the second subscription service. The control circuit 304 implemented on the content provider server associated with the first subscription service may then receive the generated authentication key from the content aggregator server. In some cases, the control circuit 304 implemented on the content provider server may decrypt the authentication key and extract the information stored within the key. In addition, the control circuit 304 may store the authentication key on the content provider server. In this way, the control circuit 304 may transmit the authentication information associated with the first user to the first subscription service without burdening the user with manually creating an account.

[0192] In some cases, the control circuit 304 implemented on the content provider server may compare the first authentication key with a set of first acceptable authentication keys and determine, based on the first authentication key, whether to generate a first user account for the first subscription service. For example, the control circuit 304 implemented on the content provider server may extract information stored in the first authentication key and determine the name of the subscription service (e.g., Rovi Super Aggregator) listed in part of the key associated with the identifier of the second subscription service. The control circuit 304 then may read a list of previously identified subscription services that would allow the control circuit 304 to generate an account on the first subscription service, and compare the name of the subscription service with each subscription service in the read list. In effect, the control circuit 304 implemented on the content provider server can securely receive information about the new user from the content aggregator (i.e., the second subscription service) while maintaining control over the account being created. For example, the first subscription service may enter into an agreement with the second subscription service to offer subscriptions on the first subscription service at a discounted price. Furthermore, by encapsulating information about the second provider within the authentication key, the first subscription service ensures that only user accounts associated with trusted content aggregators are created.

[0193] In some cases, a control circuit 304 implemented on the content provider server may extract information stored in the first authentication key and determine the user's username. The control circuit 304 may then read a list of previously identified usernames, which allows the control circuit 304 to create an account on the first subscription service, and compare the extracted username with each identified username.

[0194] In some aspects, the control circuit 304 implemented on the content provider server may generate a first user account on the content provider server in response to the step of determining that a first authentication key matches one of a first set of acceptable authentication keys. For example, the control circuit 304 may extract information contained in the authentication key, such as a username, password, and subscription service name, in order to create the information necessary to generate an account on the content provider server. In some cases, the control circuit 304 may store an indication associated with the first account that specifies that the legitimacy of the account has not been verified. If the control circuit 304 implemented on the user or the second subscription service decides to verify the legitimacy of the account in the future, the control circuit 304 implemented on the content provider server may efficiently verify the legitimacy of the account with little or no input requested by the user, as will be described in more detail below.

[0195] In some aspects, the control circuit 304 implemented on the content provider server may store the first user account in a database entry indicating that the first user account corresponds to a first authentication key. For example, the control circuit 304 implemented on the content provider server may store information related to the generated user account in an entry stored in the database. The control circuit 304 may also associate the user account with the authentication key by, for example, storing a pointer to the location of the authentication key in a database entry associated with the user account. By associating the stored user account with the first authentication key, the control circuit 304 implemented on the content aggregator server may ensure that the legitimacy of the account is quickly verified when a second subscription or a user decides to verify the legitimacy of the account on the first subscription service. In some cases, the control circuit 304 may store the first authentication key in a location in the storage device 308, the location being identified by a directory or file path. The control circuit 304 may then store the path to the location in the database entry corresponding to the first user account.

[0196] In some aspects, a control circuit 304 implemented on a content provider server may, following the step of storing a first user account, receive a request from a content aggregator server on the content provider server for the user to subscribe to a first subscription service, the request including a second authentication key. The control circuit 304 may receive the second authentication key in response to a user request to subscribe to the first subscription service. For example, a control circuit 304 implemented on a content aggregator server may detect that a user of a second subscription service (e.g., Rovi Super Aggregator) wishes to subscribe to a first subscription service (e.g., Hulu). In a different embodiment, a control circuit 304 implemented on a second service may automatically send a request to the first service when the cost of subscribing to the first service meets a cost criterion. The control circuit 304 on the first subscription service may decode the information stored in the second key, read the information stored in the second key, and store the authentication key on the content provider server. By providing a framework for receiving a second authentication key, a control circuit implemented on the content provider server may securely verify the legitimacy of the user's account.

[0197] In some respects, the control circuit 304 implemented on the content provider server may compare the first authentication key with the second authentication key. For example, the control circuit 304 implemented on the content provider server may read information from the second key associated with the name of the user associated with the key, and then query the database to determine whether an account associated with the identified user exists. Optionally, the control circuit 304 may then read the first authentication key associated with the account of the identified user (i.e., from the storage device 308 or from the database). The control circuit 304 may further compare the second authentication key with the first authentication key, with or without deciphering the data stored in the key.

[0198] In some aspects, in response to determining that the first authentication key matches the second authentication key, the control circuit 304 implemented on the content provider server may authenticate the legitimacy of the first user account. For example, based on the comparison of the first authentication key with the second authentication key, the control circuit 304 implemented on the content provider server may then identify the user account associated with either key. The control circuit 304 may then query the database to identify the account and store an indication that the legitimacy of the account has been authenticated. In one embodiment, the control circuit 304 identifies the database record associated with the identified account and sets a field (e.g., field IS_VALIDATED) associated with whether the legitimacy of the account has been authenticated to a value (e.g., TRUE) indicating that the legitimacy of the account has been authenticated. By authenticating the legitimacy of the account, the control circuit 304 implemented on the content provider server enables a user authenticated by the content provider server, without the need for the user to create an account, to access the media content provided by the first subscription service.

[0199] In some embodiments, in response to authenticating the legitimacy of the first user account, the control circuit 304 implemented on the first account may permit access to the first subscription service through the first user account. For example, the control circuit 304 implemented on the content provider server may generate a message indicating that the account is available for use and transmit it to the content aggregator server. Thus, the control circuit 304 implemented on the content provider server can notify the user that the provision of the second subscription service can be accessed by the user.

[0200] In some aspects, the first authentication key is an encryption key based on the username and password for a user assigned by the second subscription service. For example, the authentication key may include the username and password corresponding to the user's account on the content aggregator server. In another embodiment, the control circuit 304 on the content aggregator server may generate a password that conforms to the password requirements of the first subscription service. The control circuit 304 generated on the content aggregator server may utilize a password generation module that can be designed to generate a randomized string that is difficult to decipher, ensuring that the authentication credentials required to access the content provider server are stronger than what an average user would typically choose. For example, to make it easier to remember their password, an average user might choose a short keyword and numbers for their password (e.g., "mypetsname1") if the password requirement for creating an account on the content provider server allows the password to consist only of letters and numbers. Alternatively, the control circuit 304 implemented on the content aggregator server may utilize a password generator module to create a longer string of mixed lowercase and uppercase letters, numbers, and special characters. The control circuit 304 may be pre-configured with password rules for each subscription service. For example, the password rules may indicate that a first subscription service (e.g., Hulu) allows passwords with a maximum length of 15 characters and that ampersands are not allowed as part of the password. Based on the password rules for the first subscription service (e.g., Hulu), the control circuit 304 may generate a secure password (e.g., "y#E%f4v3Tt$80u") that conforms to the requirements of the first subscription service. In this way, the user's account on the content provider server becomes less susceptible to password hacking attempts. The user's username may similarly be generated to further enhance the security of the user's authentication information on the content provider server.

[0201] In some embodiments, the first set of acceptable authentication keys are received by the content provider server from the content aggregator server. For example, a control circuit 304 implemented on the content provider server may receive a list of authentication keys from a second subscription service at regular intervals. For example, the control circuit 304 implemented on the content aggregator server may routinely transmit authentication keys associated with all new users who have created accounts with the second subscription service. In some cases, the control circuit 304 implemented on the content provider server may store a list of received authentication keys in a database to compare the first authentication key with the set of acceptable authentication keys, as previously described.

[0202] In some respects, a database entry stored on a content provider server includes a first database field containing a pointer to a first user account and a second database field containing a first authentication key. The term “pointer” as used herein refers to data whose value contains the address of another value located in storage. For example, a database entry on a content provider server may include a pointer stored in the first database field that points to a second database entry containing information about a user's account, such as the user's username, password, and subscription level. The database entry may also include a second database field that may contain a first authentication key. For example, the first authentication key may be stored as a value in the second database field, or alternatively, the second database field may contain a pointer to the location of the first authentication key.

[0203] In some embodiments, a database entry stored on the content provider server includes a third database field containing the subscription terms for a first subscription service. The subscription terms may include a date range during which the user can access content made available to the user from the subscription service. For example, the user may subscribe to the first subscription service (e.g., Hulu) from January 1 to March 31. Furthermore, the subscription terms may include information relating to how the user can access the content and which content is made available based on the selected subscription. For example, the subscription terms may specify that a maximum of four streams of content can be accessed through the user's subscription. In another embodiment, the subscription terms may indicate that the user can access all content as part of a “premium” subscription, but under a “basic” subscription, a fee must be paid to access the latest movies. The subscription terms may also determine the price of the subscription, and the price the user pays to subscribe may also be stored in the third database field.

[0204] In some embodiments, a request from a content aggregator server to have a user subscribe to a first subscription service is transmitted from the content aggregator server without further user input in response to the user selecting a subscription level for a second subscription service at the content aggregator server. For example, when a user enters information as part of registering for a second subscription service (e.g., Rovi Super Aggregator), a control circuit 304 implemented on the content aggregator server may generate two subscription levels: a "standard" level that may include a subscription to one subscription service, and a "deluxe" level that may include a subscription to two subscription services. If the first subscription is offered only as part of a "deluxe" level subscription, the control circuit 304 implemented on the content aggregator server may transmit a request from the user to the second subscription service in response only to determining that the user has selected a "deluxe" level subscription. In different embodiments, the user may already be subscribed to the "standard" level of the subscription. Upon learning that the first subscription is offered only as part of the "Deluxe" level subscription, the user may decide to upgrade their subscription to the "Deluxe" level. By transmitting a request from the content aggregator server to the first subscription without further user input, the control circuit 304 implemented on the content aggregator server may quickly provide the user with access to the content provided by the first subscription service with minimal user input.

[0205] In some embodiments, a control circuit 304 implemented on a content provider server may transmit a confirmation from the content provider server to a content aggregator server in response to a step of verifying the legitimacy of a first user account. For example, once the control circuit 304 has verified the legitimacy of a user account, the control circuit 304 may transmit a message containing the confirmation to the content aggregator server. By transmitting the confirmation, a user of the second service may be informed that the user has access to media associated with the first subscription service. In a different embodiment, if the control circuit 304 implemented on the second subscription service is configured to access the media content of the first subscription service via a connection between the first and second subscription services, the control circuit 304 implemented on the second subscription service may be configured to enumerate the media of the first subscription service in response to receiving the confirmation.

[0206] In some embodiments, a control circuit 304 implemented on a content provider server may receive a second request from a content aggregator server to access media content of a first subscription service through a first user account. Users of content aggregator services may become frustrated with the task of manually logging into each content subscription service to access content. A direct connection created between the subscription service and the user's television device 402 may facilitate a streamlined viewing experience for the user. For example, a control circuit 304 implemented on a content provider server may receive a user request from a content aggregator server to access media content (e.g., an episode of the television program "The Simpsons"). In response to the step of receiving a request from the content aggregator server to access media content of a first subscription service through a first user account, the control circuit 304 implemented on the content aggregator server or content provider server may create a direct connection between the content provider server and the user's television device 402 via a communication network 414. The direct connection may reserve a certain amount of bandwidth between the content provider and the user television device 402 so that user requests to stream media from the content provider server to the user television device 402 are always handled, regardless of the network conditions between the content provider and the user television device 402. The control circuit 304 implemented on the content provider server may use the direct connection to transfer media content to the user television device 402 without further authentication. Furthermore, by creating a direct connection and transferring media from the content provider server to the content aggregator server, the media content may be displayed within a user interface used to access a second subscription service, streamlining the viewing experience for the user.

[0207] In some embodiments, a control circuit 304 implemented on a content aggregator server may read a user interface skin associated with a first subscription service in response to the creation of a direct connection between a content provider server and a user television device 402. For example, the user interface skin associated with a first subscription service may define the appearance of user interface elements such as background color, font, and menu location of the user interface associated with the first subscription service. In addition, the interface skin may include a logo associated with the first subscription service, which can be displayed in defined locations on the screen, and a color palette associated with the first subscription service that can define the background color of screen elements. The control circuit 304 may extract parameters associated with the user interface skin and apply the parameters to a user interface skin associated with a second subscription service. The control circuit 304 implemented on a content aggregator server may generate a media content list user interface skin to display the second subscription service. In this way, the first subscription service may be able to control the feel of the content presented using the second subscription service.

[0208] In some embodiments, a control circuit 304 implemented on a content provider server may receive a user selection of a media content list from a content aggregator server through a first user account. For example, a control circuit 304 implemented on a content aggregator server may utilize a connection established between the content provider server and the content aggregator server to read a media content list of content available on the content provider server. The control circuit 304 implemented on the content aggregator server may then detect a selection of a media content list created by a user, who is associated with an account on the content aggregator server. Once the control circuit 304 implemented on the content aggregator server receives a selection, it may generate media assets to display the media content list selected by the user. For example, a control circuit 304 implemented on a user television device 402 may read media assets using a direct connection established between the content provider and the user television device 402. In one example, a control circuit 304 implemented on a content provider server may receive a request for media content (for example, an episode of the television program "The Simpsons"). The control circuit 304 may begin streaming the media by using a direct connection to transfer the portion of the media from the content provider server to the user television device 402. In a different embodiment, the control circuit 304 implemented on the content provider server may provide a path to the media asset to a control circuit 304 implemented on a content aggregator server. In response, the control circuit 304 implemented on the content aggregator server may access the file referenced in the path and download the media file to the content aggregator server, or alternatively, to the user television device 402, user computer device 404, or wireless user communication device 406.

[0209] Figures 10 and 11 show, in some embodiments of the present disclosure, an algorithm by a control circuit (e.g., control circuit 304) for generating a user account on a content provider server associated with a first subscription service, before the user subscribes to a first service. In some embodiments, the algorithm may be encoded on a non-transient storage medium (e.g., storage device 308) as a set of instructions that are decoded and executed by a processing circuit (e.g., processing circuit 306). The processing circuit may, in turn, provide instructions to other subcircuits contained within control circuit 304, such as tuning, video generation, coding, decoding, encryption, decryption, scaling, analog-to-digital conversion circuits, and equivalents.

[0210] The flowchart in Figure 10 illustrates an algorithm for generating an account on a content provider server based on a control circuit (e.g., control circuit 304) receiving a first authentication key from a content aggregator server, according to some embodiments of the present disclosure.

[0211] In step 1002, the algorithm for generating an account on the content provider server would begin based on receiving a first authentication key from the content aggregator server. In some embodiments, this may be done in response to a user action or input (e.g., from a signal received by the control circuit 304 or the user input interface 310), either directly or indirectly. For example, the algorithm may begin in direct response to the control circuit 304 receiving a signal from the user input interface 310, or the control circuit 304 may prompt the user to confirm their input using a display (e.g., by generating a prompt displayed on the display 312) prior to invoking the algorithm.

[0212] In step 1004, the control circuit 304 then reads the next instance of an acceptable authentication key from the stored memory. In some embodiments, the control circuit 304 may receive a single basic data structure representing the value of the acceptable authentication key. In some embodiments, the value may be stored as part of a larger data structure, and the control circuit 304 may read the value by performing an appropriate accessor method to read the value from the larger data structure.

[0213] In step 1006, the control circuit 304 then compares the value of the read acceptable authentication key with the stored value of the first authentication key received from the content aggregator server. In some embodiments, the value of the first authentication key received from the content aggregator server may be stored (e.g., on a storage device 308) prior to starting the algorithm. In some embodiments, the value of the first authentication key received from the content aggregator server may also be read for every instance of the acceptable authentication key, and the value of the first authentication key received from the content aggregator server may change with iteration. In some embodiments, the control circuit 304 may directly compare the value of the first authentication key received from the content aggregator server with the value of the acceptable authentication key by accessing the value from memory and performing a value comparison. In some cases, the control circuit 304 may call a comparison function (e.g., for object-to-object comparison) to compare the acceptable authentication key and the first authentication key received from the content aggregator server.

[0214] In step 1008, the control circuit 304 compares the value of the acceptable authentication key with the value of the first authentication key received from the content aggregator server and determines whether the value of the acceptable authentication key is equal to the value of the first authentication key received from the content aggregator server. If the condition is met, the algorithm may proceed to step 1010. If the condition is not met, the algorithm may instead proceed to step 1012.

[0215] In step 1010, the control circuit 304 will execute a subroutine to generate a first user account, based on the conditions in step 1008 being met. After the subroutine has been executed, the algorithm may proceed to step 1012, in which all instances of acceptable authentication keys are considered and it is determined whether further iteration is required.

[0216] In step 1014, if the control circuit 304 generated a user account in step 1010, the control circuit 304 will execute a subroutine to store the user account.

[0217] It should be considered that the description of Figure 10 may be used in conjunction with any other embodiments of this disclosure. In addition, the description relating to the algorithm in Figure 10 may be performed in an alternative order or in parallel to facilitate the purposes of this disclosure. For example, conditional statements and logical evaluations, such as those in 1008, may be performed in any order, in parallel, or simultaneously to reduce delays in the system or method or to increase speed. As a further embodiment, in some embodiments, several instances of an acceptable authentication key may be evaluated in parallel using multiple logical processor threads, or the algorithm may be extended by incorporating branch prediction. Furthermore, it should be noted that the algorithm in Figure 10 may be implemented on a well-configured combination of software and hardware, and any of the devices or equipment discussed with respect to Figures 3-4 may be used to implement one or more parts of the algorithm.

[0218] The pseudocode in Figure 11 illustrates an algorithm, according to several embodiments of the present disclosure, that generates an account on a content provider server based on receiving a first authentication key from a content aggregator server. It will be apparent to those skilled in the art that the algorithm illustrated by the pseudocode in Figure 11 can be implemented in any number of programming languages ​​and various different hardware, and that its style and form should not be construed as restrictive but rather as a general template of steps and procedures that would correspond to code used to implement several embodiments of the present disclosure.

[0219] On line 1101, the algorithm may invoke a subroutine that starts on line 1105, initializing variables and preparing to generate an account on the content provider server based on receiving a first authentication key from the content aggregator server. For example, in some embodiments, the control circuit 304 may copy instructions from a non-transient storage medium (e.g., storage device 308) into RAM or into a cache for the processing circuit 306 during the initialization phase. In addition, in some embodiments, the value of the first authentication key used for comparison, or an acceptable level for determining whether two values ​​are essentially equivalent, may be read, set, and stored at 1101.

[0220] On line 1105, the control circuit 304 may receive an instance of an acceptable authentication key. In some embodiments, these instances may be read from stored memory. The control circuit 304 may receive an instance of an acceptable authentication key, for example, by receiving a pointer to an array of acceptable authentication key values. In another embodiment, the control circuit 304 may receive an object of a class such as an iterator object containing elements of an acceptable authentication key.

[0221] In line 1106, the control circuit 304 may iterate through various instances of acceptable authentication keys, and if only a single instance is available, the loop will execute only once. This loop may be implemented in multiple forms depending on the hardware and software language choices used to implement the algorithm in Figure 11; for example, it may be implemented as part of a "for" or "while" loop.

[0222] At line 1107, the control circuit 304 will store the value of the acceptable authentication key in a temporary variable "A". In some embodiments, the value of the acceptable authentication key may be stored as part of a larger data structure or class, and the value of the acceptable authentication key may be retrieved through an appropriate accessor method. In some embodiments, the acceptable authentication key may be converted from a string or other non-numeric data type to a numeric data type using an appropriate hashing algorithm. In some embodiments, the control circuit 304 may call a function that compares the acceptable authentication key to a first authentication key. In some embodiments, the acceptable authentication key may be encoded as a base data structure, and instead of using a temporary variable, the acceptable authentication key may be used directly in the comparison at line 1109.

[0223] In line 1108, the control circuit 304 will store the value of the first authentication key in a temporary variable "B". Similar to the acceptable authentication key, in some embodiments the value of the first authentication key may be stored as part of a larger data structure or class, and the value of the first authentication key may be retrieved through an accessor method. In some embodiments the first authentication key may be converted from a string or other non-numeric data type to a numeric data type using a suitable hashing algorithm, or the first authentication key may be a basic data structure and used directly in the comparison in line 1109.

[0224] In line 1109, the control circuit 304 compares the value of A with the value of B to determine if they are equivalent.

[0225] At line 1110, control circuit 304 will execute a subroutine to generate a first user account if the conditions at line 1109 are met.

[0226] On line 1112, control circuit 304 will execute a subroutine to read the next acceptable authentication key if the conditions on line 1109 are not met.

[0227] On line 1113, if the control circuit 304 has previously generated an account on line 1110, the control circuit 304 will execute a subroutine to store the generated user account. The control circuit 304 may also store the account in the storage device 308.

[0228] On line 1115, the control circuit 304 may invoke a termination subroutine after the algorithm has performed its function. For example, in some embodiments, the control circuit 304 may destroy variables, perform garbage collection, free memory, or clear the cache of the processing circuit 306.

[0229] It will be apparent to those skilled in the art that the algorithm illustrated by the pseudocode in Figure 11 can be implemented in any number of programming languages ​​and various different hardware, and that the specific choices and locations of the antiderivative, logical evaluation, and functional evaluation are not intended to be limiting. It will also be apparent that the code can be refactored or rewritten to manipulate the order of various logical evaluations, to perform several iterations in parallel instead of a single iterative loop, or to optimize execution time and performance metrics in a different way without fundamentally changing the input or final output. For example, in some embodiments, break conditions may be imposed after lines 1110 and 1112 to accelerate operation, or conditional statements may be replaced with case switches. In some embodiments, instead of iterating over all instances of an acceptable authentication key in step 1006, the code may be rewritten to reduce the number of iterations required and potentially accelerate computation time by instructing the control circuit 304 to evaluate multiple instances of an acceptable authentication key simultaneously on multiple processors or processor threads.

[0230] Figures 12 and 13 show, in some embodiments of the present disclosure, an algorithm in which a control circuit (e.g., control circuit 304) uses a database containing values ​​that could be considered as possible authentication keys to verify the legitimacy of a first user account on request. Similar to the algorithm described in Figures 10 and 11, in some embodiments, the algorithm may be encoded on a non-transient storage medium (e.g., storage device 308) as a set of instructions that are decoded and executed by a processing circuit (e.g., processing circuit 306). The processing circuit may, in turn, provide instructions to other subcircuits contained within control circuit 304, such as tuning, video generation, coding, decoding, encryption, decryption, scaling, analog-to-digital conversion circuits, and equivalents.

[0231] The flowchart in Figure 12 illustrates an algorithm, according to some embodiments of the present disclosure, in which a control circuit (e.g., control circuit 304) searches a database based on a request and verifies the legitimacy of a first user account.

[0232] In step 1202, an algorithm will be initiated based on the request to search the database and verify the legitimacy of the first user account. In some embodiments, this may be done directly or indirectly in response to a user action or input (for example, from a signal received by the control circuit 304 or the user input interface 310).

[0233] In step 1204, the control circuit 304 then reads the next instance of the next authentication key from the stored memory. In some embodiments, the control circuit 304 may read a single basic data structure representing the value of the authentication key. In some embodiments, the control circuit 304 may read the value from a larger class or data structure.

[0234] In step 1206, the control circuit 304 accesses a database containing values ​​that can be considered as possible types of authentication keys. In some embodiments, this database may be stored locally (e.g., on a storage device 308) prior to starting the algorithm. In some embodiments, the database may also be accessed by using a communication circuit to transmit information across a communication network (e.g., a communication network 414) to a database implemented on a remote storage device (e.g., a content aggregator 430).

[0235] In step 1208, the control circuit 304 searches the database tables for entries that match the authentication key. In some embodiments, this may be done by comparing a string or integer representing the authentication key that matches an identifier, e.g., a type of identifier used internally within the database. In some embodiments, the control circuit 304 may submit a general query to the database for table entries that match the authentication key, and the control circuit 304 may receive a list of indexes or a data structure containing a portion of the database content. In some embodiments, the database may implement cross-reference tables that cross-reference entries from other databases. In this case, the control circuit 304 may read indexes from the first database which can then be used to read information from the second database. For the sake of clarity, the control circuit 304 may be described as interacting with a single database, but it will be understood that the algorithm in Figure 12 can be implemented using multiple independent or cross-referencing databases.

[0236] In step 1210, the control circuit 304 may determine whether there is a database entry that matches the authentication key. In some embodiments, the control circuit 304 may receive a signal from the database indicating that there is no matching entry. In some embodiments, the control circuit 304 may instead receive a list or data structure of indexes with NULL or dummy values. If the control circuit 304 determines that there is a database entry that matches the authentication key, the algorithm proceeds to step 1212; otherwise, the algorithm proceeds to step 1214.

[0237] In step 1212, the control circuit 304 will execute a subroutine to verify the legitimacy of the user account. The algorithm may then proceed to step 1214, where it will determine if there are any further instances of the authentication key that need to be considered.

[0238] In step 1214, the control circuit 304 will determine whether all instances of the authentication key have been considered and whether further iterations are required. If further iterations are required, the algorithm will return to step 1204, and the control circuit 304 will read the next instance of the authentication key. If further iterations are not required, the algorithm will proceed to step 1216.

[0239] In step 1216, the control circuit 304 will execute a subroutine to allow access to the first subscription.

[0240] It should be considered that the description of Figure 12 may be used in conjunction with any other embodiments of this disclosure. In addition, the descriptions relating to the algorithm in Figure 12 may be given in an alternative order or in parallel to facilitate the purposes of this disclosure. For example, the control circuit 304 may submit multiple queries to the database in parallel, or it may submit multiple queries to multiple similar databases to reduce or accelerate the execution of the algorithm. Furthermore, it should be noted that the algorithm in Figure 12 may be implemented on a well-configured combination of software and hardware, and any of the devices or equipment discussed with respect to Figures 3-4 may be used to implement one or more parts of the algorithm.

[0241] The pseudocode in Figure 13 illustrates an algorithm for verifying the legitimacy of a first user account on request, according to several embodiments of the present disclosure. It will be apparent to those skilled in the art that the algorithms illustrated by the pseudocode in Figure 13 can be implemented in any number of programming languages ​​and various different hardware, and that the style and form should not be construed as restrictive, but rather as a general template of steps and procedures that would correspond to code used to implement some embodiments of the present disclosure.

[0242] On line 1301, the algorithm may invoke a subroutine, which begins on line 1305, to initialize variables and prepare to verify the legitimacy of the first user account on request. For example, in some embodiments, the control circuit 304 may copy instructions from a non-transient storage medium (e.g., storage device 308) into RAM or into a cache for the processing circuit 306 during the initialization phase.

[0243] On line 1305, the control circuit 304 may receive an instance of an acceptable authentication key. In some embodiments, these instances may be read from stored memory.

[0244] In line 1306, the control circuit 304 may iterate through various instances of acceptable authentication keys, and if only a single instance is available, the loop will execute only once. This loop may be implemented in multiple forms depending on the choice of hardware and software language used to implement the algorithm in Figure 13; for example, it may be implemented as part of a "for" or "while" loop in some programming languages. In some embodiments, it may be convenient to store instances of acceptable authentication keys in a single class or encapsulated data structure, which will execute the loop as part of an internal method.

[0245] In line 1307, the control circuit 304 may query the database for entries that match an acceptable authentication key. Depending on how the database is implemented and how the acceptable authentication key is stored, intermittent steps may be required to convert the acceptable authentication key into a form that matches the database. For example, the acceptable authentication key may be encoded into a string or integer using an appropriate hashing algorithm prior to being transmitted to the database by the control circuit 304 as part of the query. In some embodiments, the acceptable authentication key may be encoded as a basic data structure, and the control circuit 304 may submit the acceptable authentication key directly to the database as a query. After querying the database, the control circuit 304 may receive a set of database entries that match the acceptable authentication key. In some embodiments, the control circuit 304 may receive these entries in the form of a data structure, a list of database indexes, or a list of a set of indexes in another cross-referenced database.

[0246] At line 1309, the control circuit 304 would determine whether there is a database entry that matches an acceptable authentication key. In some embodiments, the control circuit 304 may determine this by checking whether the database returned an empty data structure or a NULL value in response to the query at line 1309. If there is a matching database entry, the algorithm may proceed to line 1309. If there is no matching database entry, the algorithm may instead proceed to line 1312.

[0247] At line 1309, the control circuit 304 may read one or more values ​​of the first authentication keys from a database entry that matches an acceptable authentication key. For example, if the control circuit 304 reads a list of indexes after querying the database at line 1307, in some embodiments, the control circuit 304 may read a database entry for the first authentication key located in the received index. In some embodiments, the index may point to a larger data structure contained within the database, and the control circuit 304 may read the value of the first authentication key from within the data structure using an appropriate accessor method. In some embodiments, the control circuit 304 may read the value of the first authentication key and store it locally (e.g., in storage device 308) in a separate data structure prior to proceeding further. After reading the value of the first authentication key, the algorithm would proceed to line 1310.

[0248] At line 1310, the control circuit 304 will execute a subroutine using the value of the first authentication key to verify the legitimacy of the first user account using the control circuit. The algorithm may then proceed to line 1313.

[0249] On line 1312, if the conditions on line 1309 are not met, the control circuit 304 will execute a subroutine to read the next authorized authentication key.

[0250] At line 1313, the control circuit 304 will execute a subroutine to grant access to the first user account. The algorithm may then proceed to the termination subroutine at line 1315.

[0251] On line 1315, the control circuit 304 may execute a termination subroutine after the algorithm has performed its function and all instances of acceptable authentication keys have been processed and checked against the database. For example, in some embodiments, the control circuit 304 may destroy variables, perform garbage collection, free memory, or clear the cache of the processing circuit 306.

[0252] It will be apparent to those skilled in the art that the algorithm illustrated by the pseudocode in Figure 13 can be implemented in any number of programming languages ​​and various different hardware, and that the specific choices and locations of the antiderivative, logical evaluation, and functional evaluation are not intended to be limiting. It will also be apparent that the code can be refactored or rewritten to manipulate the order of various logical evaluations, to perform several iterations in parallel instead of a single iterative loop, or to optimize execution time and performance metrics in a different way without fundamentally changing the input or final output. For example, in some embodiments, the code may be rewritten so that the control circuit 304 is instructed to use multiple processors or processor threads to evaluate multiple instances of acceptable authentication keys and simultaneously submit multiple database queries. While a control circuit 304 interacting with a single database can also be described, this is only a single embodiment described for illustrative purposes, and it will be understood that the algorithm in Figure 13 can also be implemented using multiple independent or cross-referencing databases. For example, a locally stored database (e.g., on storage device 308) may index or cross-reference a remotely stored database (e.g., a content aggregator 430) that may be accessible through any number of communication channels (e.g., a communication network 414). In some embodiments, this may allow the control circuit 304 to utilize a lookup table or database front-end efficiently stored on a small local drive to access a larger database stored on a remote server on demand.

[0253] Figure 14 is a flowchart of illustrative steps involved in generating and legitimizing a first user account on a first subscription service. Note that process 1400 or any of its steps may occur on or be provided by any of the devices shown in Figures 3-4. For example, process 1400 may be performed by control circuit 304 (Figure 3) as instructed by control circuits implemented on user devices 402, 404, and / or 406 (Figure 4) to detect when the number of instances exceeds a certain number and to transmit a message to the device. In addition, one or more steps of process 1400 may be incorporated into or combined with any other process or one or more steps of any other embodiment.

[0254] Process 1400 begins in step 1402, in which the control circuit 304 receives a first authentication key from the content aggregator server. For example, an entity providing a second subscription service (e.g., Rovi Super Aggregator) may reach an agreement with an entity providing a first subscription service (e.g., Hulu) to offer a discounted rate on subscriptions to the first subscription service to users of the second subscription service. Before a user subscribes to the first subscription service, the control circuit 304, implemented on the content aggregator server, transmits the first authentication key to the content aggregator server.

[0255] In step 1404, the control circuit 304 compares the first authentication key with a set of first acceptable authentication keys. For example, the control circuit 304 implemented on a content provider server may extract information stored in the first authentication key and determine the name of the subscription service (e.g., Rovi Super Aggregator) listed in the key associated with the identifier of the second subscription service. The control circuit 304 may then read a list of previously identified subscription services that would allow the control circuit 304 to create an account on the first subscription service, and compare the name of the subscription service with each subscription service in the read list. In effect, the control circuit 304 implemented on a content provider server can securely receive information about the new user from the content aggregator (i.e., the second subscription service) while maintaining control over the account being created. For example, the first subscription service may enter into an agreement with the second subscription service to offer subscriptions on the first subscription service at a discounted price. By encapsulating information about the second provider within the authentication key, the first subscription service ensures that only user accounts associated with trusted content aggregators are created.

[0256] In step 1406, the control circuit 304 generates a first user account in response to the step of determining that the first authentication key matches one of a first set of acceptable authentication keys. For example, the control circuit 304 may extract information contained in the authentication key, such as a username, password, and subscription service name, in order to create the information necessary to generate the account on the content provider server. In some cases, the control circuit 304 may store an indication associated with the first account that specifies that the legitimacy of the account has not been verified.

[0257] In step 1408, the control circuit 304 stores the first user account in a database entry. For example, a control circuit 304 implemented on a content provider server may store information related to the generated user account in a database entry stored in the database. The control circuit 304 may also associate the user account with an authentication key, for example, by storing a pointer to the location of the authentication key in a database entry associated with the user account. By associating the stored user account with the first authentication key, a control circuit 304 implemented on a content aggregator server may ensure that the account's legitimacy is quickly verified when a second subscription or a user decides to verify the legitimacy of the account on the first subscription service. In some cases, the control circuit 304 may store the first authentication key in a location in storage device 308, the location being identified by a path. The control circuit 304 may then store the path to the location in the database entry corresponding to the first user account.

[0258] In step 1410, the control circuit 304 receives a request from the content aggregator server to have the user subscribe to the first subscription service, following the step of storing the first user account. The control circuit 304 may receive a second authentication key in response to the user request to subscribe to the first subscription service. For example, the control circuit 304 implemented on the content aggregator server may detect that a user of the second subscription service (e.g., Rovi Super Aggregator) wishes to subscribe to the first subscription service (e.g., Hulu). In a different embodiment, the control circuit 304 implemented on the second service may automatically send a request to the first service when the cost of subscribing to the first service meets the cost criteria. The control circuit 304 on the first subscription service may decode the information stored in the second key, read the information stored in the second key, and store the authentication key on the content provider server.

[0259] In step 1412, the control circuit 304 compares the first authentication key with the second authentication key. For example, the control circuit 304 implemented on a content provider server may read information from the second key associated with the name of the user associated with the key, and then query the database to determine whether an account exists associated with the identified user. Optionally, the control circuit 304 may then read the first authentication key associated with the account of the identified user (i.e., from the storage device 308 or from the database). The control circuit 304 may further compare the second authentication key with the first authentication key, with or without deciphering the data stored in the key.

[0260] In step 1414, the control circuit 304 validates the legitimacy of the first user account in response to the step of determining whether the first authentication key matches the second authentication key. For example, based on the comparison of the first authentication key with the second authentication key, the control circuit 304 implemented on the content provider server may then identify the user account associated with either key. The control circuit 304 may then query the database to identify the account and store an indication that the account's legitimacy has been validated. In one embodiment, the control circuit 304 may identify the database record associated with the identified account and set a field associated with whether the account's legitimacy has been validated (e.g., the field IS_VALIDATED) to a value indicating that the account's legitimacy has been validated.

[0261] In step 1416, the control circuit 304 grants access to the first subscription service in response to the step of verifying the legitimacy of the first user account. For example, the control circuit 304 implemented on the content provider server may generate a message indicating that the account is available for use and transmit it to the content aggregator server. Thus, the control circuit 304 implemented on the content provider server can notify the user that the provision of the second subscription service is available to the user.

[0262] It should be considered that the steps or descriptions in Figure 14 may be used in conjunction with any other embodiments of the present disclosure. In addition, the steps and descriptions described with respect to Figure 14 may be performed in an alternative order or in parallel in order to facilitate the purpose of the present disclosure. For example, each of these steps may be performed in any order, in parallel, or substantially simultaneously in order to reduce delay or increase speed of the system or method.

[0263] The processes discussed above are intended to be illustrative, not restrictive. Those skilled in the art will understand that any additional steps, which may be omitted, modified, combined, and / or rearranged, may be performed without departing from the scope of the invention. More generally, the above disclosures are intended to be illustrative, not restrictive. Only the subsequent claims are intended to set boundaries regarding what the invention encompasses.

Claims

1. A control circuit detects the number of devices associated with the same account that attempt to log in to a service for streaming at least one video within a threshold time period, The control circuit identifies a threshold number of devices associated with the same account that enable it to attempt to log in to the service for streaming at least one video within the threshold time period, Based at least in part on determining that the number of detected devices attempting to log in to the service for streaming at least one video within the threshold time period exceeds the threshold number of devices, The control circuit generates a message including a user-selectable option associated with increasing the threshold number of devices for display on at least one of the devices attempting to log in to the service for streaming at least one video within the threshold time period, Based on the receipt of the user selection of the user-selectable option, the control circuit increases the threshold number of the device. A method that includes this.

2. The control circuit receives account login information associated with the account from each of the devices attempting to log in to the service for streaming at least one video within the threshold time period, The control circuit authenticates the account login information from each of the devices attempting to log in to the service for streaming at least one video within the threshold time period. The method according to claim 1, further comprising:

3. The method according to claim 2, wherein the account login information from each of the devices attempting to log in to the service for streaming at least one video within the threshold time period includes at least one of an identifier for an individual device or an identifier for a user profile associated with the individual device.

4. The control circuit records an individual timestamp corresponding to each login attempt corresponding to each individual device. It further includes, The method according to claim 1, wherein determining whether the number of devices attempting to log in to the service for streaming at least one video within the threshold time period exceeds the threshold number of devices is based on the recorded timestamp corresponding to each login attempt corresponding to each individual device.

5. The control circuit restricts at least one of the devices attempting to log in to the service for streaming at least one video within the threshold time period from accessing the service for streaming at least one video, Further based on receiving the user selection of the user-selectable option for increasing the threshold number of devices, the control circuit provides each of the devices attempting to log in to the service for streaming at least one video within the threshold time period to access the service for streaming at least one video. The method according to claim 1, further comprising:

6. The method of claim 5, wherein the message, which includes the user-selectable option for increasing the threshold number of devices, is generated for display on at least one restricted device.

7. The control circuit validates the legitimacy of at least one of the devices attempting to log in to the service for streaming at least one video within the threshold time period, which is different from each restricted device, and the validation is based on the threshold number of devices. The control circuit provides each validated device with access to the service for streaming at least one video. The method according to claim 5, further comprising:

8. The method according to claim 1, wherein the threshold number of devices associated with the same account that are enabled to attempt to log in to the service for streaming at least one video within the threshold time period is determined at least in part on one or more previous instances of conflicts in attempted logins to the service by devices associated with the same account.

9. The method according to claim 1, wherein each device of the device attempting to log in to the service for streaming at least one video within the threshold time period is associated with a different individual user profile.

10. The message is, Name of media asset, User name, The number of conflict instances in attempted logins to the service by devices associated with the same account, An instruction to increase or decrease the threshold number of devices associated with the same account that enable an attempt to log in to the service for streaming at least one video within the threshold time period, or Recommendations for minimizing the number of future conflict instances. The method according to claim 1, further comprising at least one of the following.

11. Control circuit, Input / Output (I / O) circuits and A system equipped with, The aforementioned control circuit is To detect the number of devices associated with the same account that attempt to log in to a service for streaming at least one video within a threshold time period, Identifying a threshold number of devices associated with the same account that would be able to attempt to log in to the service for streaming at least one video within the threshold time period, Based at least in part on determining that the number of detected devices attempting to log in to the service for streaming at least one video within the threshold time period exceeds the threshold number of devices, To generate a message that includes a user-selectable option associated with increasing the threshold number of devices for display on at least one of the devices attempting to log in to the service for streaming at least one video within the threshold time period. It is configured to perform, The aforementioned I / O circuit is The system is configured to receive user selections for the aforementioned user-selectable options. The aforementioned control circuit is A system configured to increment the threshold number of a device based on the receipt of a user selection of the user-selectable option.

12. The I / O circuit is The system is further configured to receive account login information associated with the account from each of the devices attempting to log in to the service for streaming at least one video within the threshold time period, The aforementioned control circuit is The system according to claim 11, further configured to authenticate the account login information from each of the devices attempting to log in to the service for streaming at least one video within the threshold time period.

13. The system according to claim 12, wherein the account login information from each of the devices attempting to log in to the service for streaming at least one video within the threshold time period includes at least one of an identifier for an individual device or an identifier for a user profile associated with the individual device.

14. The control circuit is It is further configured to record a separate timestamp for each login attempt corresponding to each individual device. The system according to claim 11, wherein determining whether the number of devices attempting to log in to the service for streaming at least one video within the threshold time period exceeds the threshold number of devices is based on the recorded timestamp corresponding to each login attempt corresponding to each individual device.

15. The control circuit is Restricting at least one of the devices attempting to log in to the service for streaming at least one video within the threshold time period from accessing the service for streaming at least one video, Further based on receiving the user selection of the user-selectable option for increasing the threshold number of devices, provide each of the devices attempting to log in to the service for streaming at least one video within the threshold time period to access the service for streaming at least one video. The system according to claim 11, further configured to perform the following:

16. The system according to claim 15, wherein the message, which includes the user-selectable option for increasing the threshold number of devices, is generated for display on at least one restricted device.

17. The control circuit is The legitimacy of at least one of the devices attempting to log in to the service for streaming at least one video within the threshold time period, distinct from each restricted device, wherein the legitimacy is based on the threshold number of devices. To provide each validated device with access to the service for streaming at least one video. The system according to claim 15, further configured to perform the following:

18. The system according to claim 11, wherein the threshold number of devices associated with the same account that are enabled to attempt to log in to the service for streaming at least one video within the threshold time period is determined at least in part on one or more previous instances of conflicts in attempted logins to the service by devices associated with the same account.

19. The system according to claim 11, wherein each device of the device attempting to log in to the service for streaming at least one video within the threshold time period is associated with a different individual user profile.

20. The message is, Name of media asset, User name, The number of conflict instances in attempted logins to the service by devices associated with the same account, An instruction to increase or decrease the threshold number of devices associated with the same account that enable an attempt to log in to the service for streaming at least one video within the threshold time period, or Recommendations for minimizing the number of future conflict instances. The system according to claim 11, further comprising at least one of the following.