EP4659453A1 - Integrating live television content from multiple sources in an electronic program guide of a media platform - Google Patents
Integrating live television content from multiple sources in an electronic program guide of a media platformInfo
- Publication number
- EP4659453A1 EP4659453A1 EP23721101.6A EP23721101A EP4659453A1 EP 4659453 A1 EP4659453 A1 EP 4659453A1 EP 23721101 A EP23721101 A EP 23721101A EP 4659453 A1 EP4659453 A1 EP 4659453A1
- Authority
- EP
- European Patent Office
- Prior art keywords
- television
- channel
- navigation
- group
- channels
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/20—Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
- H04N21/25—Management operations performed by the server for facilitating the content distribution or administrating data related to end-users or client devices, e.g. end-user or client device authentication, learning user preferences for recommending movies
- H04N21/258—Client or end-user data management, e.g. managing client capabilities, user preferences or demographics, processing of multiple end-users preferences to derive collaborative data
- H04N21/25808—Management of client data
- H04N21/25841—Management of client data involving the geographical location of the client
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/20—Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
- H04N21/25—Management operations performed by the server for facilitating the content distribution or administrating data related to end-users or client devices, e.g. end-user or client device authentication, learning user preferences for recommending movies
- H04N21/258—Client or end-user data management, e.g. managing client capabilities, user preferences or demographics, processing of multiple end-users preferences to derive collaborative data
- H04N21/25866—Management of end-user data
- H04N21/25875—Management of end-user data involving end-user authentication
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/20—Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
- H04N21/25—Management operations performed by the server for facilitating the content distribution or administrating data related to end-users or client devices, e.g. end-user or client device authentication, learning user preferences for recommending movies
- H04N21/258—Client or end-user data management, e.g. managing client capabilities, user preferences or demographics, processing of multiple end-users preferences to derive collaborative data
- H04N21/25866—Management of end-user data
- H04N21/25891—Management of end-user data being end-user preferences
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/20—Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
- H04N21/25—Management operations performed by the server for facilitating the content distribution or administrating data related to end-users or client devices, e.g. end-user or client device authentication, learning user preferences for recommending movies
- H04N21/262—Content or additional data distribution scheduling, e.g. sending additional data at off-peak times, updating software modules, calculating the carousel transmission frequency, delaying a video stream transmission, generating play-lists
- H04N21/26283—Content or additional data distribution scheduling, e.g. sending additional data at off-peak times, updating software modules, calculating the carousel transmission frequency, delaying a video stream transmission, generating play-lists for associating distribution time parameters to content, e.g. to generate electronic programme guide data
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/20—Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
- H04N21/25—Management operations performed by the server for facilitating the content distribution or administrating data related to end-users or client devices, e.g. end-user or client device authentication, learning user preferences for recommending movies
- H04N21/266—Channel or content management, e.g. generation and management of keys and entitlement messages in a conditional access system, merging a VOD unicast channel into a multicast channel
- H04N21/2665—Gathering content from different sources, e.g. Internet and satellite
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/20—Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
- H04N21/25—Management operations performed by the server for facilitating the content distribution or administrating data related to end-users or client devices, e.g. end-user or client device authentication, learning user preferences for recommending movies
- H04N21/266—Channel or content management, e.g. generation and management of keys and entitlement messages in a conditional access system, merging a VOD unicast channel into a multicast channel
- H04N21/2668—Creating a channel for a dedicated end-user group, e.g. insertion of targeted commercials based on end-user profiles
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/40—Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
- H04N21/41—Structure of client; Structure of client peripherals
- H04N21/422—Input-only peripherals, i.e. input devices connected to specially adapted client devices, e.g. global positioning system [GPS]
- H04N21/42202—Input-only peripherals, i.e. input devices connected to specially adapted client devices, e.g. global positioning system [GPS] environmental sensors, e.g. for detecting temperature, luminosity, pressure, earthquakes
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/40—Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
- H04N21/47—End-user applications
- H04N21/482—End-user interface for programme selection
- H04N21/4821—End-user interface for programme selection using a grid, e.g. sorted out by channel and broadcast time
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/40—Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
- H04N21/47—End-user applications
- H04N21/482—End-user interface for programme selection
- H04N21/4826—End-user interface for programme selection using recommendation lists, e.g. of programmes or channels sorted out according to their score
Definitions
- a display device may display an electronic programming guide (EPG) for live television (e.g., linear programming).
- EPG electronic programming guide
- the EPG displays a list of channels from a single provider, e.g., a cable or satellite communication company.
- a number of streaming applications e.g., internet protocol (IP)-based providers
- IP internet protocol
- a user may have to switch between multiple EPGs to locate which television channel to watch on the display device.
- the techniques described herein relate to a method including: receiving, by a media platform, a request for electronic programming guide data from a television device; retrieving, from a media provider database, a list of television channels associated with an account identifier or a device identifier of the television device, the list of television channels being associated with a plurality of providers; constructing, using configuration data, a plurality of navigation groups, each of the plurality of navigation groups being a separate group of television channels; retrieving, from the media provider database, program data that identifies programs broadcasted by the list of television channels; and transmitting, by the media platform, the electronic programming guide data to the television device, the electronic programming guide data configured to cause the television device to display a selectable user interface (UI) element corresponding to each of the plurality of navigation groups in a first portion of an electronic programming guide such that selection of the selectable UI element is configured to cause the television device to display programs and television channels corresponding to a respective navigation group in a second portion of the electronic programming guide.
- UI selectable user
- the techniques described herein relate to a non-transitory computer-readable medium storing executable instructions that when executed by at least one processor cause the at least one processor to execute operations, the operations including: receiving, by a media platform, a request for electronic programming guide data from a television device; retrieving, from a media provider database, a list of television channels associated with an account identifier or a device identifier of the television device, the list of television channels being associated with a plurality of providers; determining a plurality of navigation groups based on entitlement data associated with the account identifier, each of the plurality of navigation groups being a separate group of television channels; retrieving, from the media provider database, program data that identifies programs broadcasted by the list of television channels; and transmitting, by the media platform, the electronic programming guide data to the television device, the electronic programming guide data configured to cause the television device to display a selectable user interface (UI) element corresponding to each of the plurality of navigation groups in a first portion of an electronic programming guide such
- UI selectable user interface
- the techniques described herein relate to a television device including: at least one processor; and a non-transitory computer-readable medium storing executable instructions that cause the at least one processor to: transmit a request for electronic programming guide data to a media platform; receive electronic programming guide data from the media platform, the electronic programming guide data configured to cause the television device to identify a plurality of navigation groups in a first portion of an electronic programming guide; in response to selection of a first user interface (UI) element corresponding to a first navigation group of the plurality of navigation groups, display programs and television channels corresponding to the first navigation group in a second portion of the electronic programming guide; and in response to selection of a second UI element corresponding to a second navigation group of the plurality of navigation groups, display programs and television channels corresponding to the second navigation group in the second portion of the electronic programming guide.
- UI user interface
- FIG. 1A illustrates a system configured to integrate television channels from multiple providers in a single electronic programming guide of a media platform according to an aspect.
- FIG. IB illustrates an example of navigation groups according to an aspect.
- FIG. 1C illustrates an electronic programming guide with navigation groups according to an aspect.
- FIG. ID illustrates an example of a navigation group constructor according to an aspect.
- FIG. IE illustrates examples of providers according to an aspect.
- FIG. IF illustrates an example of channel and program data according to an aspect.
- FIG. 2A illustrates a system for incorporating tuner-based content into a media platform according to an aspect.
- FIG. 2B illustrates an example of a television device according to an aspect.
- FIG. 3 illustrates an example of a user interface depicting an electronic programming guide with navigation groups according to an aspect.
- FIG. 4 illustrates an example of a user interface depicting an electronic programming guide with navigation groups according to another aspect.
- FIG. 5 illustrates an example of a user interface depicting an electronic programming guide with navigation groups according to another aspect.
- FIG. 6 illustrates an example of a user interface depicting an electronic programming guide with navigation groups according to another aspect.
- FIG 7 illustrates an example of a user interface depicting an electronic programming guide with navigation groups according to another aspect.
- FIG. 8 illustrates an example of a user interface depicting an electronic programming guide with navigation groups according to another aspect.
- FIGS. 9A through 9D illustrate examples of a navigation group section according to various aspects.
- FIG. 10 illustrates an example of a user interface depicting an electronic programming guide with navigation groups according to another aspect.
- FIG. 11 illustrates an example of a user interface depicting an electronic programming guide with navigation groups according to another aspect.
- FIG. 12 illustrates an example of a user interface depicting an electronic programming guide with navigation groups according to another aspect.
- FIG. 13 illustrates a flowchart depicting example operations for integrating television channels from multiple providers in a single electronic programming guide according to an aspect.
- FIG. 14 illustrates a flowchart depicting example operations for integrating television channels from multiple providers in a single electronic programming guide according to another aspect.
- This disclosure relates to a system configured to integrate live television content (e.g., linear programming) from multiple providers in a single electronic programming guide (EPG) of a media platform.
- the EPG may be an interactive television guide that uses media content from various databases (e.g., various providers) to bundle channels into navigation groups (e.g., based on type such as sports, news, etc.), deduplicate live television content from multiple sources, prioritize live television content predicted to be likely viewed by the user, and/or other features that organize live television content for browsing, searching, and/or viewing.
- the techniques described herein may provide technical benefits of fast content retrieval while reducing the amount of computer resources (e.g., central processing unit (CPU), memory) for providing an enriched EPG with live television content across a relatively large number of television channels associated with multiple providers.
- the system uses an intelligent caching mechanism that retrieves (e.g., fetches, pre-fetches) portions of the EPG data over time in response to the detection of user interactions with the EPG, which may reduce memory usage, CPU usage, and/or server calls while reducing user perceived latency.
- the multiple providers may include the media platform itself, multichannel video programming distributor( MVPD) provider(s), video on demand (VOD) provider(s), free ad-supported streaming television (FAST) provider(s), and/or tuner content.
- MVPD multichannel video programming distributor
- VOD video on demand
- FAST free ad-supported streaming television
- the EPG may render selectable user interface (UI) elements corresponding to different navigation groups, where each navigation group is a separate grouping of television channels (e.g., a favorite-channel group, a recent-channel group, recommendation group(s), provider-specific group(s), a tuner-channel group, and/or genrebased group(s), etc.).
- UI user interface
- one or more navigation groups are included as part of a larger category referred to as a navigation block (e.g., your channels, free channels, free channels from applications, premium channels, built-in channels, etc.).
- the EPG may render information about television channels and programs that correspond to a respective navigation group.
- the EPG may be re-populated with television channels and programs that correspond to another navigation group.
- a television device may execute a media application configured to display a user interface (e.g., a single unified user interface) that identifies media content (e.g., live content and/or on-demand content, etc.) across multiple providers, and the user interface may include a live section (e.g., a live tab) configured to display an EPG for live television content.
- the media platform is a specific provider that offers a live television subscription package. If a user account is associated with the live subscription package, the EPG may display the programs across time intervals for the television channels included as part of the live television subscription package.
- the television device may execute other streaming applications, some of which may offer live television channels and have their own in-app guide (e.g., their own EPG).
- the television device may have a tuner and/or antenna configured to display tuner-based television channels and the television device may have its own EPG to display the programming information for the tuner-based television channels.
- a user may have to switch between multiple interfaces and/or in- app guides (e.g., multiple EPGs) to identify live television content, which may involve launching multiple applications, navigating to their respective EPGs, and/or searching within multiple EPGs.
- the system may enable an EPG (e.g., a single EPG) to manage live television content across multiple providers in a manner that can reduce the amount of computing resources for searching and identifying programs to watch on live television channels.
- the system may overcome technical problem(s) associated with integrating live television channels from multiple providers, including integrating tuner-based television channels in the platform’s EPG.
- the media platform includes a live television engine configured to receive, over a network, a request for electronic programming guide data from a television device.
- the live television engine may retrieve, from a media provider database, a list of television channels associated with an account identifier or a device identifier of the television device.
- the account identifier may identify a user account associated with the media platform, and the user account may store entitlement data that identifies which providers the user account has access rights to.
- the live television engine may transmit a channel query to the media provider database, where the channel query may identify the providers associated with the user account, and the live television engine may receive a response that includes a list of television channels associated with the multiple providers.
- the live television engine may construct (e.g., generate, define, etc.) a plurality of navigation groups, where each navigation group is a separate group of television channels.
- constructing a plurality of navigation groups may include determining which navigation groups to include in the EPG based on entitlement data associated with the user account and/or identifying a list of television channels for a respective navigation group.
- constructing a plurality of navigation groups includes determining a channel order (e.g., display order) for one or more of the navigation groups.
- constructing a plurality of navigation groups includes determining a channel order for one or more navigation groups that is personalized for each user (e.g., a user account or a profile within a user account), which may include determining which navigation groups to display for a particular user and/or the channel order of a respective navigation group.
- the navigation groups and the channel order may change over time based on user behavior and/or user preferences.
- the live television engine may rank the television channels within a particular navigation group using signals associated with the user account, signals representing device information and/or location of the television device, and/or signals associated with engagement metrics computed by the media platform.
- constructing a plurality of navigation groups may include deduplicating television channels offered by multiple providers and ranking the providers such that a particular provider is identified as a primary watch entity.
- the live television engine may generate the navigation groups based on configuration data stored at the live television engine and the configuration data may include the instructions that define the navigation groups.
- an administrator may update the configuration data at the live television engine to implement a change to the navigation groups.
- the navigation groups may include a plurality of genre-based groups that identify television channels by genre (e.g., news, ports, movies, entertainment, family, Spanish, and/or other, etc.).
- the list of television channels received from the media provider database may include information (e.g., genre tag) that identifies whether a particular television channel is associated with one or more genres.
- the genre tags may be stored in the media provider database.
- the media platform may programmatically determine the genre tags based on analysis of channel and/or program data associated with the television channels and store the genre tags in the media provider database.
- the genre tags are determined by an administrator of the media platform and are stored as metadata in the media provider database.
- the live television engine may use the genre tags to determine which television channel is included in which genre-based groups.
- the live television engine determines the genre-based groups for television channels associated with a particular set of providers.
- free ad-supported streaming television (FAST) channels are provided by one or more providers (e.g., FAST-enabled providers), and the live television engine may determine which FAST channels are associated with which genre-based groups. In some examples, only the FAST channels are included into the genre-based groups.
- the genre-based groups include other television channels (e.g., non-FAST channels) such as premium channels (e g., part of a paid subscription) and/or tuner-based television channels.
- the navigation groups may include a favorite-channel group that identifies one or more television channels marked or identified by a user as a favorite.
- the media platform may store user activity information associated with a user account, and, in response to receipt that the user has interacted with a UI element to identify or favoritize a television channel, the media platform may update the user activity information to identify the television channel indicated as a favorite (e.g., a favorite channel).
- the live television engine may query the user activity information to identify the favorite channels.
- the live television engine may receive the channel identifiers corresponding to the favorite channels for the particular user identifier, and the live television engine may include the favorite channels in the group list for the favorite-channel group.
- the navigation groups may include a recent-channel group that identifies one or more recent television channels (e.g., recently watched television televisions).
- the live television engine may identify the recent television channel(s) based on the user activity information associated with the account identifier.
- the media platform may update the user activity information with information about the activity such as the channel identifier, the date/time, and/or the watch duration of the live content, etc.
- the live television engine may query the user activity information to identify one or more television channels that were watched in a previous time interval (e.g., the last twenty-four hours, the last week, the last month, etc.).
- the live television engine may receive the channel identifiers corresponding to the recent television channels for the particular user identifier, and the live television engine may include the recent television channels in the group list for the recent-channel group.
- the navigation group may include a recommendation group that identifies a list of one or more recommended television channels.
- the live television engine identifies a subset of television channels as recommendations to the user and includes the recommended television channels in the group list for the recommendation group.
- the live television engine may determine which television channels are the most watched television channels based on the user activity information associated with the user accounts on the media platform and include the most wanted television channels in the list for the recommendation group (e.g., the top five, ten, fifteen, most watched television channels).
- the live television engine may identify a subset of television channels that the user is predicted as likely viewing (e.g., television channels that are personalized to the user account).
- the navigation group may include one or more provider-specific groups that identify television channels associated with a specific-provider.
- the configuration data may identify which providers have a provider-specific group.
- the provider-specific groups may be premium channels associated with a paid subscription.
- a separate provider-specific group is defined for providers offering free (or non-FAST) channels.
- the media platform may offer a live television subscription package, and, if the user account has subscribed to the live television subscription package, the live television engine may generate a provider-specific group for the media platform that identifies the television channels associated with the live television subscription package.
- the television device may execute one or more other streaming applications associated with other providers, some of which may offer television channels.
- the navigation groups may include one or more other provider-specific navigation groups.
- the navigation groups may include a tuner-channel group that identifies tuner-based television channels associated with the user identifier or the device identifier of the television device.
- Tuner-based television channels include television channels broadcasted over the air using radio waves.
- the television device may include an antenna and a tuner, where the tuner is configured to operate with the antenna to execute a channel scan, which scans and detects tuner-based television channels across frequencies.
- the television device’s operating system may obtain tuner channel data from the tuner, where the tuner channel data may identify which tuner-based television channels are detected and available to be displayed on the television device.
- the live television engine may include a reconciliation engine configured to receive the tuner channel data, over a network, from the television device, and reconcile the tuner-based television channels with information from the media provider database such that the tuner-based television channels are integrated into the media platform.
- the live television engine may generate a tuner-channel group that identifies the tuner-based television channels associated with the account identifier or the device identifier.
- the navigation groups include a local group of television channels (e.g., “local to you”), which may be personalized from the physical location of the television device (e.g., determined from an IP address and/or other signal(s)). For example, a user watching from Milwaukee may view Milwaukee-oriented television channels.
- the local group of television channels may include a subset of the tuner-based television channels and/or other television channels determined to be associated with a location of the television device.
- the live television engine may determine a display order for the television channels based on signals associated with the user account, device information and/or location of the television device, and/or signals associated with engagement metrics computed by the media platform. For example, using the signals, the live television engine may compute a ranking score for each television channel and may determine the display order based on the ranking score (e.g., from highest to lowest). In some examples, the display order is predetermined and updated by the administrator of the media platform.
- the live television engine may deduplicate television channels associated with multiple providers. For example, the live television engine may determine that a first television channel associated with a first provider and a second television channel associated with a second provider relate to the same television channel, and, if so, may merge the first television channel and the second television channel into a single television channel. In some examples, the live television engine may compute ranking information that ranks the multiple providers (e.g., the first provider, the second provider) according to a plurality of signals. In response to the selection of the single (e.g., merged) television channel, the EPG may display the providers according to the ranking information.
- the multiple providers e.g., the first provider, the second provider
- the EPG may display the providers according to the ranking information.
- the live television engine may retrieve, from the media provider database, program data that identifies programs broadcasted by the list of television channels.
- the live television engine may generate EPG data that includes information about the navigation groups and the programs, and transmit, over the network, the EPG data to the television device.
- the EPG data may cause the television device to display a selectable UI element for each of the navigation groups such that selection of the selectable UI element causes the television device to display programs and television channels corresponding to a respective navigation group in the EPG.
- the television device may display programs and television channels corresponding to the first navigation group in the EPG.
- the television device may display programs and television channels corresponding to the second navigation group in the EPG.
- FIGS. 1A through IF illustrate a system 100 configured to integrate television channels 118 from multiple providers 124 in a single electronic programming guide (EPG) 145 of a media platform 104.
- the EPG 145 may be an interactive television guide that uses media content 106 from multiple providers 124 to group television channels 118 into navigation groups 140, deduplicate television channels 118 from two or more providers 124, prioritize television channels 1 18 that are predicted to be likely watched by the user, and/or other features that organize television channels 118 for browsing, searching, and/or viewing.
- the techniques described herein may provide technical benefits of fast content retrieval while reducing the amount of computer resources (e.g., central processing unit (CPU), memory) for rendering an enriched EPG 145 with program data 116 of television channels 118 associated with multiple providers 124.
- the system 100 uses a caching mechanism (e.g., an intelligent retrieval and caching mechanism) that retrieves (e g., fetches, pre-fetches) portions of the EPG data 144 over time in response to the detection of user interactions with the EPG 145, which may reduce memory usage, CPU usage, and/or server calls while reducing user perceived latency.
- a caching mechanism e.g., an intelligent retrieval and caching mechanism
- the system 100 includes a television device 152 configured to execute a media application 157 and one or more server computer(s) 102 configured to execute a media platform 104 to identify and provide media content 106 (e.g., live television content, on-demand content, etc.) for display and selection in a user interface 186 of the media application 157.
- the user interface 186 may be rendered on a display 156 of the television device 152.
- the media application 157 may aggregate (e g., combine, assemble, collect, etc.) information about media content 106 available for viewing (e.g., streaming) from multiple streaming platforms 167 (including the media platform 104 itself) and present the information in a user interface 186 (e.g., a single, unified user interface) so that a user can identify and/or search media content 106 across different streaming platforms 167 (e.g., without having to search within each native application 161).
- the media application 157 may render an electronic programing guide (EPG) 145 in the user interface 186.
- the user interface 186 includes a tabbed interface, where one of the tabs (e.g., live tab) displays the EPG 145 for live television content across multiple providers 124.
- the television device 152 may be a network-enabled display device configured to connect to the network 150.
- the television device 152 includes a television (e.g., a smart television).
- the television device 152 includes a tuner 154 and an antenna 155.
- the tuner 154 includes the antenna 155 (e.g., the antenna 155 is integrated into the tuner 154).
- the antenna 155 may receive radio waves from a broadcasting station.
- the tuner 154 may process (e.g., interpret) the radio waves received by the antenna 155 to generate a digital signal capable of being displayed on the television device 152.
- the television device 152 includes one or more processors, one or more memory devices, and an operating system 151 configured to execute (or assist with executing) one or more native applications 161.
- the native applications 161 may include the media application 157 configured to communicate, over the network, 150, with the media platform 104.
- the media application 157 is a program that is part of the operating system 151.
- the media application 157 is a separate standalone application that is downloaded and installed on the operating system 151.
- the native applications 161 includes a media player (e.g., media player 259 of FIG. 2B), which, when launched, is configured to render content received via the tuner 154 and/or antenna 155.
- the media application 157 may execute operation(s) discussed with reference to the operating system 151 (and/or vice versa).
- the television device 152 is not a smart television, but is converted to a smart television when connected to a casting device, where the casting device is configured to connect to the network 150 and execute an operating system 151 configured to execute native applications 161, including the media application 157.
- the operating system 151 is a browser application.
- a browser application is a web browser configured to access information on the Internet and may launch one or more browser tabs in the context of one or more browser windows.
- the operating system 151 is a Linux -based operating system.
- the operating system 151 is a mobile operating system that is also configured to execute on smaller devices (e.g., smartphones, tablets, wearables, etc.).
- the media platform 104 is a specific provider 124 that offers a live television subscription package. If a user account 136 is associated with the live subscription package of the media platform 104, the EPG 145 may identify programs 117 across time intervals for television channels 118 included as part of the live television subscription package. Also, the television device 152 may execute other native applications 161 (e g , streaming applications), some of which may offer live television channels and have their own in-app guide (e.g., their own EPG). In some examples, the native applications 161 are client applications configured to receive streaming content from the streaming platforms 167.
- native applications 161 are client applications configured to receive streaming content from the streaming platforms 167.
- the television device 152 may have a tuner 154 and/or an antenna 155 configured to display tuner-based television channels 120 and the television device 152 may have its own guide to display programming information for the tunerbased television channels 120.
- a user may have to switch between multiple interfaces and/or in-app guides to identify television content, which may involve launching multiple native applications 161, navigating to their respective in-app television guide, and/or searching within multiple guides.
- the system 100 may enable an EPG 145 (e.g., a single EPG) that organizes television channels 118 across multiple providers 124 in a manner that can reduce the amount of computing resources for searching and identifying programs 117 to watch on live television channels 118.
- the system 100 may overcome technical problem(s) associated with integrating live television channels 118 from multiple providers 124, including integrating tuner-based television channels 120 in the platform’s EPG 145.
- the EPG 145 may render selectable user interface (UI) elements 141 corresponding to different navigation groups 140, where each navigation group 140 is a separate grouping of television channels 118.
- the navigation groups 140 may include as a favorite-channel group 140a, a recentchannel group 140b, a recommendation group 140c, provider-specific group(s) 140d, a tuner-channel group 140e, and/or genre-based group(s) 140f.
- one or more navigation groups 140 are included as part of a larger category referred to as a navigation block (e.g., your channels, free channels, free channels from applications, premium channels, built-in channels, etc.).
- the EPG 145 may render information about television channels 118 and programs 117 that correspond to a respective navigation group 140.
- the EPG 145 may be re-populated with television channels 118 and programs 117 that correspond to another navigation group 140.
- the media platform 104 includes a live television engine 130 configured to receive, over a network 150, a request 127 for electronic programming guide (EPG) data 144 from a television device 152.
- EPG electronic programming guide
- the live television engine 130 retrieves, from a media provider database 108, a list 166 of television channels 118 associated with a user account 136 (e.g., an account identifier) and/or a device identifier of the television device 152.
- the account identifier may identify a user account 136 associated with the media platform 104.
- the media provider database 108 is configured to store information about the media content 106 available for selection from the user interface 186, including the EPG 145.
- the media provider database 108 may store information about television channels 118 from multiple providers 124.
- the providers 124 may include the media platform 104 itself and one or more other streaming platforms 167.
- tuner-based television channels 120 that are available on a particular television device 152 may be considered a separate provider 124.
- the providers 124 may include a variety of different types of providers. For example, as shown in FIG.
- the providers 124 may include multichannel video programming distributor (MVPD) provider(s) 124a, video on demand (VOD) provider(s) 124b, free ad-supported streaming television (FAST) provider(s) 124c, and/or tuner source(s) 124d for tuner-based television channels 120.
- a tuner source 124d may be a particular television device 152.
- the media platform 104 may be an example of a MVPD provider 124a and/or a VOD provider 124b.
- the server-based television channels 122 include television channels streamed over a network 150 such as the Internet.
- a server-based television channel 122 may be digital data from a content provider that is streamed using an internet protocol (IP) transmission mechanism.
- IP internet protocol
- a server-based television channel 122 may represent a broadcasting order of programs (e.g., live or preprogrammed) by a content provider in which the programs are streamed over the network 150 according to the broadcasting order via the network 150.
- the programs of a server-based television channel 122 are not video-on-demand programs. Selecting or joining a server-based television channel 122 from the user interface 186 may initiate the display of a current program at a current time in the broadcasting order.
- a user may rewind a program of the server-based television channel 122 (or rewind to a previous program) or cause a program of the server-based television channel 122 to be recorded and later replayed as a video-on-demand program.
- the server-based television channels 122 may be associated with MVPD provider(s) 124a, VOD provider(s) 124b, and/or FAST provider(s) 124c.
- the server-based television channels 122 include FAST channels, which are television channels 118 provided by one or more FAST providers 124c.
- the tuner-based television channels 120 include television channels broadcasted over the air using radio waves.
- a tuner-based television channel 120 may be a terrestrial frequency over which a television station broadcasts audio and video data via radio waves to television receivers.
- a tuner-based television channel 120 may represent a broadcasting order of programs 117 (e.g., live or preprogramed) by a content provider in which the programs 1 17 are broadcasted via radio waves according to the broadcasting order. Selecting or joining a tuner-based television channel 120 from the user interface 186 may initiate the display of a current program at a current time in the broadcasting order.
- the media content 106 include channel and program data 112 for a plurality of television channels 118, including the server-based television channels 122 and the tuner-based television channels 120.
- the channel and program data 112 may represent a relatively large set of data that provides information for many television channels 118 that can be viewed by a user (e.g., across one or multiple countries and across multiple providers 124).
- the channel and program data 112 includes channel data 114 that includes information about the television channels 118 and program data 116 that includes information about programs 117 that are broadcasted by the television channels 118.
- the media platform 104 may receive (e.g., periodically receive) the channel and program data 112 from an external source and store (e.g., update) the channel and program data 112 in the media provider database 108.
- the media provider database 108 may store data relating to the television channels 118 (e.g., both the server-based television channels 122 and the tuner-based television channels 120).
- a television channel 118 may be a service that provides programming and/or video content according to a programming schedule.
- a television channel 1 18 may be a physical or virtual channel.
- the channel data 114 may include an identifier 171 that identifies a respective television channel 118 in the media provider database 108, a channel number 111, a channel name 113, a channel image 121 (e.g., a logo or image associated with the television channel 118), and/or other metadata 123 about the television channel 118 such as whether the television channel 118 is a server-based television channel 122 or a tunerbased television channel 120.
- the metadata 123 includes one or more genre tags that characterize one or more genres of a respective television channel 118.
- the media provider database 108 may include program data 116.
- the program data 116 may include information that identifies a current program 117a and one or more future programs 117b.
- the program data 1 16 may include a program name 131 , a description 133, an air date 147, a maturity rating 137, and/or a program image 139.
- the media content 106 stored in the media provider database 108 may include other media content such as media content items offered by one or more streaming platforms 167, which may include on-demand content items (e.g., nonlive content) and/or live content associated with one or more television channels 118.
- a media content item may be a program, show, or a movie, etc., which is available for selection from the user interface 186.
- the media content 106 is referred to as media content items (e.g., individual programs broadcasted or offered by television channels 118 or streaming platforms 167).
- each media content item may be a program 117 (e g., a television show, a movie, a live broadcast, etc.) from a tuner-based television channel 120, a server-based television channel 122, the media platform 104, or another streaming platform 167.
- the media application 157 may combine the media content items together in one interface (e.g., user interface 186) so that a user can search across multiple streaming platforms 167 at once.
- a media content item may correspond to a digital video file, which may be stored on the streaming platforms 167 (including the media platform 104) and/or the television device 152.
- the media platform 104 is also considered a streaming platform 167, which may store and provide digital video files for streaming or downloading.
- the digital video file may include video and/or audio data that corresponds to a particular media content item.
- the media platform 104 is configured to communicate with the streaming platforms 167 to identify which media content 106 is available on the streaming platforms 167 and may update the media provider database 108 to identify the media content items offered by the streaming platforms 167.
- the live television engine 130 may receive a request 127 for EPG data 144 from the television device 152.
- the request 127 may include an account identifier and/or a device identifier of the television device 152.
- the account identifier identifies a user account 136.
- the device identifier identifies the television device 152.
- the request 127 is generated in response to user selection on the user interface 186 (e.g., the user selects the live tab or the EPG 145).
- the live television engine 130 retrieves, from the media provider database 108, a list 166 of television channels 118 associated with the account identifier and/or the device identifier.
- a user account 136 may store entitlement data 125 that identifies which providers 124 that the user account 136 has access rights to view content.
- the access rights are determined based on the user account 136 (e.g., whether the user has subscribed to a live subscription package), which native applications 161 (e.g., streaming applications) are installed on the television device 152 and/or if the user has accessed (e.g., logged-into) a user account associated with those native applications 161.
- the live television engine 130 may identify the providers 124 associated with the user account 136 based on the entitlement data 125 and then retrieve a list 166 of television channels 118 associated with the providers 124.
- the user account 136 may include one or more profiles corresponding to users associated with the user account 136. The user account 136 may store information about the profiles.
- the live television engine 130 may transmit a channel query 160, via one or more application programming interface(s) 138, to the media provider database 108.
- the channel query 160 may identify the providers 124 associated with the user account 136.
- the live television engine 130 may receive a response 164 that includes a list 166 of television channels 118 associated with the providers 124.
- the list 166 may be quite large, e.g., identifying many television channels 118.
- the list 166 includes FAST channels provided by FAST providers 124c, and, in some examples, television channels 118 provided by MVPD provider(s) 124a and/or VOD provider(s) 124b in which the user account 136 has access rights.
- the list 166 may identify hundreds of television channels 118. In some examples, the list 166 includes identifiers 171 of the television channels 118. In some examples, the list 166 includes the identifiers 171 and one or more other portions of the channel data 114 for a respective television channel 118 such as the channel number 111, channel name 113, the channel image 121, and/or the metadata 123. [0064] Tn some examples, the list 166 also identifies tuner-based television channels 120 that can be viewed on the television device 152.
- the live television engine 130 may include a reconciliation engine 115 configured to determine and identify which tuner-based television channels 118 are available on the television device 152 and update the entitlement data 125 to indicate that the user account 136 or the television device 152 has access rights to those tuner-based television channels 120. If the television device 152 or the user account 136 is associated with reconciled tuner-based television channels 120, the list 166 may also identify the tuner-based television channels 120.
- the details of the reconciliation engine 115 are further explained with reference to FIGS. 2 A and 2B.
- the live television engine 130 includes a navigation group constructor 134 configured to construct (e.g., generate, define, etc.) a plurality of navigation groups 140, where each navigation group 140 is a separate group of television channels 118.
- a navigation group 140 includes a navigation group identifier that uniquely identifies the navigation group 140.
- one or more navigation groups 140 are included as part of a larger category referred to as a navigation block (e.g., your channels, free channels, free channels from applications, premium channels, built-in channels, etc.).
- a navigation block includes a navigation block identifier that uniquely identifies the navigation block. The navigation block may also identify one or more navigation group identifiers for the navigation groups 140 that belong to a respective navigation block.
- the navigation group constructor 134 may construct the navigation groups 140 for the user account 136 according to configuration data 135 stored at the live television engine 130.
- the configuration data 135 may include instructions that define the navigation groups 140 and/or the navigation blocks.
- the configuration data 135 defines the number and/or type of navigation group 140, and, in some examples, which navigation group 140 is assigned to which navigation block.
- the configuration data 135 may define predetermined navigation groups 140 that are the same across user accounts 136, and, in some examples, may include one or more additional navigation groups 140 depending on which provider(s) 124 are associated with the user account 136 (e.g., has access rights to).
- the navigation group constructor 134 determines which navigation groups 140 to include in the EPG 145 based on the entitlement data 125 associated with the user account 136. As such, the number of navigation groups 140 identified on the EPG 145 may be user account specific.
- the navigation group constructor 134 may determine a display order 189 for one or more navigation groups 140 that is personalized for each user (e.g., a user account 136 or a profile within a user account 136). In some examples, the navigation group constructor 134 may determine which navigation blocks to display for a particular user, which navigation groups 140 to include within a respective navigation block for a particular user, which navigation groups 140 to display for a particular user, and/or the display order 189 of a respective navigation group. The navigation groups 140 and the display order 189 may change over time based on user behavior and/or user preferences stored in the user accounts 136.
- the navigation group constructor 134 may receive the list 166 of television channels 118 (and, in some examples, the channel data 114 associated with each television channel 118), and, for at least some of the television channels 118 on the list 166 (or all of them), assign a television channel 118 to a navigation group 140 based on the channel data 114 and/or the user activity information 146.
- the navigation group constructor 134 may determine a group list 165 (e g., a navigation group list) of television channels 118 for a respective navigation group 140, where the group list 165 is a portion of the television channels 118 included on the list 166 received from the media provider database 108.
- the group list 165 may include the identifiers 171 of television channels 118 associated with a respective navigation group 140, and, some examples, the channel data 114 of a respective television channel 118.
- the navigation groups 140 may include a favoritechannel group 140a that identifies one or more television channels 118 marked or identified by a user as a favorite (e.g., favorite channels 148).
- the favorite channels 148 may include one or more of the server-based television channels 122 and/or the tunerbased television channels 120.
- the media platform 104 may store user activity information 146 associated with a user account 136, and, in response to receipt that the user has interacted with a UI element to identify or favoritize a television channel 118, the media platform 104 may update the user activity information 146 to identify the television channel 118 indicated as a favorite (e.g., a favorite channel 148).
- the user can favoritize a television channel 118 from the EPG 145 (e.g., from the channel guide).
- the user interface 186 is configured to enable the user to favoritize a television channel 118 via a UI informational object (e.g., a card, tile, etc.).
- a UI informational object may be used to display additional information about the television channel 118 and provide the user with one or more menu options.
- a user may select a program 117 or a television channel 118 from the EPG 145, which may cause the media application 157 to render a UI informational object with information about the television channel 118.
- the user may perform an action with respect to the UI object, which causes the UI informational object to display selectable menu option(s) that include an option to favoritize the television channel 118.
- the action includes a long-press directional pad (D-pad) select on the UI informational object, which causes the display of additional options including the option to favoritize the television channel 118. Once favoritized, the television channel 118 is included as part of the favorite-channel group 140b.
- the navigation group constructor 134 may query the user activity information 146 to identify the favorite channels 148. For example, the navigation group constructor 134 may receive the identifiers 171 corresponding to the favorite channels 148 for the particular user account 136, and the navigation group constructor 134 may include the favorite channels 148 in the group list 165 for the favorite-channel group 140a. In some examples, the same television channel 118 is associated with multiple providers. If a user has identified a television channel 118 associated with one provider 124 as a favorite channel 148, the navigation group constructor 134 may identify the same television channel 118 but associated with another provider 124 as also a favorite channel 148.
- the navigation group constructor 134 may operate in conjunction with a recommendation engine 191 to automatically select a set of television channels 118 that are predicted to be favorites for a user account 136 using the information from the user activity information 146.
- the navigation group constructor 134 and/or the recommendation engine 191 may identify a subset of the television channels 118 as favorites based at least in part on information representing the user's interests and activities (e.g., the user's search queries, search results, previous watch history, purchase history, application usage history, application installation history, user actions on the network-connected television device, physical activities of the user, etc.).
- the user may accept or reject the recommended favorites, which, when accepted, the live television engine 130 may add the accepted television channel 118 as a favorite channel 148.
- the navigation groups 140 may include a recent-channel group 140b that identifies one or more recent television channels 149 (e.g., recently watched television channels 118).
- the recent-channel group 140b may include any television channel 118 selected from the EPG 145 in the last time interval (e.g., last thirty days, etc.).
- the recent-channel group 140b may include a television channel 118 selected from a user interface of a native application 161.
- the recent-channel group 140b may include a television channel 118 selected from a voice command received via the television device 152 or another device (e.g., smart speaker, smart phone) (e.g., play channel A on television device A).
- the recent channels 149 may include one or more of the server-based television channels 122 and/or the tuner-based television channels 120.
- the navigation group constructor 134 may identify the recent television channel(s) 149 based on the user activity information 146 associated with the user account 136.
- the media platform 104 may update the user activity information 146 with information about the activity such as the identifier 171, the date/time, and/or the watch duration of the television channel 118, etc.
- the navigation group constructor 134 may query the user activity information 146 to identify one or more television channels that were watched in a previous time interval (e.g., the last twenty-four hours, the last week, the last month, etc.).
- the navigation group constructor 134 may receive the identifiers 171 corresponding to the recent channels 149 for the particular user account 136, and the navigation group constructor 134 may include the recent channels 149 in the group list 165 for the recent-channel group 140b.
- the navigation groups 140 may include a recommendation group 140c that identifies a list of one or more recommended channels 193.
- the recommended channels 193 may include one or more of the server-based television channels 122 and/or the tunerbased television channels 120.
- the navigation group constructor 134 includes or communicates with a recommendation engine 191 configured to a subset of television channels 118 as recommendations to the user account 136.
- the navigation group constructor 134 may include the recommended channels 193 in the group list 165 for the recommendation group 140c.
- the recommended channels 193 are not personalized to the user account 136.
- the recommendation engine 191 may determine which television channels 118 are the most watched television channels based on the user activity information 146 associated with the user accounts 136 on the media platform 104 and include the most watched television channels in the group list 165 for the recommendation group 140c (e.g., the top five, ten, fifteen, most watched television channels).
- the recommended channels 193 are personalized to the user account 136.
- the recommendation engine 191 may identify a subset of television channels 118 that the user is predicted as likely viewing (e.g., television channels 118 that are personalized to the user account 136).
- the recommendation engine 191 may identify a subset of the television channels 118 as recommendations based at least in part on information representing the user's interests and activities (e.g., the user's search queries, search results, previous watch history, purchase history, application usage history, application installation history, user actions on the network-connected television device, physical activities of the user, etc.).
- the media application 157 may be associated with a user account 136, and the user account 136 may store the information representing the user’ s interests and activities in the user activity information 146, and the recommendation engine 191 may use this information to select recommended channels 193.
- a user of the media platform 104 and/or media application 157 may be provided with controls allowing the user to make an election as to both if and when the system 100 may enable the collection of information representing the user's interests and activities.
- certain data may be treated in one or more ways before it is stored or used, so that personally identifiable information is removed.
- a user’s identity may be treated so that no personally identifiable information can be determined for the user, or a user’s geographic location may be generalized where location information is obtained (such as to a city, ZIP code, or state level), so that a particular location of a user cannot be determined.
- the user of the media application 157 may have control over what information is collected about the user, how that information is used, and what information is provided to the user and/or to the server computer 102.
- the navigation groups 140 may include one or more provider-specific groups 140d that identify television channels 118 associated with a specific provider 124.
- the configuration data 135 may identify which providers 124 have a provider-specific group 140d.
- the provider-specific groups 140d may be premium channels associated with a paid subscription.
- a separate provider-specific group 140d is defined for providers 124 offering subscription or paid content.
- the navigation group constructor 134 may determine whether the user account 136 has access to a specific provider 124, and, if so, may include a provider-specific group 140d that identifies television channels 118 provided by the specific provider 124.
- the navigation group constructor 134 may determine whether the specific provider 124 is defined in the configuration data 135 as having their own navigation group 140, and, if so, may include a provider-specific group 140d if the user account 136 has access rights to the specific provider 124.
- the specific provider 124 may be a MVPD provider 124a or a VOD provider 124b.
- the media platform 104 may offer a live television subscription package, and, if the user account 136 has subscribed to the live television subscription package, the navigation group constructor 134 may generate a provider-specific group 140d for the media platform 104 that identifies the television channels 118 associated with the live television subscription package.
- the television device 152 may execute one or more other streaming applications (e.g., native applications 161) associated with other providers 124, some of which may offer television channels 118.
- the navigation groups 140 may include one or more other provider-specific groups 140d associated with the other providers 124.
- the navigation group constructor 134 may organize the television channels 118 in a provider-specific group 140d based on categories and/or genres. For example, for a particular provider-specific group 140d, the navigation group constructor 134 may categorize the television channels 118 into further subgroups such as genre-based groups (e g., sports, news, popular, etc.) and/or other categories such as popular channels within that provider-specific group 140d and/or recommended channels within that providerspecific group 140d.
- genre-based groups e g., sports, news, popular, etc.
- the subgroups of a provider-specific group 140d may include any of the genres (e.g., categories) discussed with reference to genre-based groups 140f, and, in some examples, may include other groups such as a recent channel group (e.g., providing the recently-viewed channels within that provider-specific group 140d), and/or a recommendation group (e.g., providing recommended channels within that providerspecific group 140d), etc.
- a recent channel group e.g., providing the recently-viewed channels within that provider-specific group 140d
- a recommendation group e.g., providing recommended channels within that providerspecific group 140d
- the navigation groups 140 may include a tuner-channel group 140e that identifies tuner-based television channels 120 associated with the user account 136 or the television device 152.
- the tuner-channel group 140e is an example of a provider-specific group 140d, where the provider 124 is a television device 152.
- Tunerbased television channels 120 include television channels broadcasted over the air using radio waves.
- the tuner 154 is configured to operate with the antenna 155 to execute a channel scan, which scans and detects tuner-based television channels 120 across frequencies.
- the television device’s operating system 151 may obtain tuner channel data (e.g., tuner channel data 232 of FIG.
- the reconciliation engine 115 is configured to receive the tuner channel data, over the network 150, from the television device 152, and reconcile the tuner-based television channels 120 with information from the media provider database 108 such that the tuner-based television channels 120 are integrated into the media platform 104.
- the navigation group constructor 134 may generate a tunerchannel group 140e that identifies the tuner-based television channels 120 associated with the user account 136 or the television device 152.
- the navigation groups 140 may include a plurality of genre-based groups 140f that identifies television channels 118 by genre (e.g., news, ports, movies, entertainment, family, Spanish, and/or other).
- the list 166 of television channels 118 received from the media provider database 108 may include information (e.g., genre tag) that identifies whether a particular television channel 118 is associated with one or more genres.
- the genre information or tags are included as part of the metadata 123.
- the genre tags may be stored in the media provider database 108.
- the media platform 104 may programmatically determine the genre tags based on analysis of the channel and program data 112 associated with the television channels 118 and store the genre tags in the media provider database 108 as metadata 123.
- the genre tags are determined by an administrator of the media platform 104 and are stored as metadata 123 in the media provider database 108.
- the navigation group constructor 134 may use the genre tags to determine which television channel 118 is included in which genre-based groups 140f.
- the navigation group constructor 134 determines the genre-based groups 140f for television channels 118 associated with a particular set of providers 124.
- FAST channels are provided by one or more providers (e.g., FAST-enabled providers), and the navigation group constructor 134 may determine which FAST channels are associated with which genre-based groups 140f. In some examples, only the FAST channels are included into the genre-based groups 140f.
- the genre-based groups 140f include other television channels 118 (e.g., non- FAST channels) such as premium channels (e.g., part of a paid subscription) or tunerbased television channels 120.
- a particular genre-based group 140f may be initially limited to a predetermined number (e g., threshold number) of television channels 1 18 related to that genre.
- the EPG 145 may display the EPG data 144 for a threshold number of crime channels (e.g., five crime channels, ten crime channels, fifteen crime channels, etc.).
- the media application 157 causes the EPG 145 to display a selectable UI element (e.g., a “see more” button), which, when selected, causes the EPG 145 to expand the EPG data 144 for all of the crime channels (or include the next X number of crime channels).
- a selectable UI element e.g., a “see more” button
- the features relating to the selectable UI element may be applied to any of the navigation groups 140.
- the navigation groups include a local group of television channels 118 (e.g., “local to you”), which may be personalized from the physical location of the television device 152 (e.g., determined from an TP address and/or other signal(s)). For example, a user watching from Milwaukee may view Milwaukee-oriented television channels.
- the local group of television channels 118 may include a subset of the tunerbased television channels 122 and/or other television channels (e.g., server-based television channels 122) determined to be associated with a location of the television device.
- the navigation group constructor 134 includes a channel order engine 170.
- the channel order engine 170 may determine a display order 189 for a group list 165 for one or more navigation groups 140.
- the display order 189 identifies a sequence of television channels 118 for a particular navigation group 140.
- the channel order engine 170 may determine the display order 189 for the television channels 118 within a particular navigation group 140 based on signals associated with the user account 136 and/or signals associated with engagement metrics computed by the media platform 104.
- the navigation group constructor 134 may determine a display order 189 for one or more navigation groups 140 that is personalized for each user (e.g., a user account 136 or a profile within a user account 136). In some examples, the navigation group constructor 134 may determine which navigation blocks to display for a particular user, which navigation groups 140 to include within a respective navigation block for a particular user, which navigation groups 140 to display for a particular user, and/or the display order 189 of a respective navigation group. The navigation groups 140 and the display order 189 may change over time based on user behavior and/or user preferences stored in the user accounts 136.
- the channel order engine 170 may rank the television channels based on popularity metrics and/or watch time metrics. In some examples, the channel order engine 170 may periodically update the display order 189. For example, using the signals, the channel order engine 170 may compute a ranking score for each television channel 118 in a group list 165 and may determine the display order 189 based on the ranking score (e.g., from highest to lowest). In some examples, the display order 189 is predetermined and/or updated by the administrator of the media platform 104 and included in the configuration data 135. Tn some examples, the channel order engine 170 determines a display order 189 for the genre-based groups 140f. In some examples, the channel order engine 170 determines a display order 189 for the tuner-channel group 140e. In some examples, the channel order engine 170 determines a display order 189 for the recommendation group 140c.
- the navigation group constructor 134 includes a deduplication engine 172 configured to deduplicate television channels 118 associated with multiple providers 124.
- the deduplication engine 172 may deduplicate television channels 118 associated with multiple providers 124 for a particular navigation group 140 (or multiple navigation groups 140) and/or navigation groups 140 belonging to a particular navigation block.
- the deduplication engine 172 may deduplicate television channels 118 associated with multiple providers 124 within a particular navigation group 140.
- the deduplication engine 172 may deduplicate television channels 118 associated with multiple providers 124 from the genrebased group(s) 140f (e.g., free channels from app block).
- a particular television channel 118 related to sports may be offered by multiple providers 124, and the deduplication engine 172 may merge those television channels 118 into a single television channel 118 such that the television channel 118 does not appear multiple times in the group list 165 for the sports-genre.
- the deduplication engine 172 may deduplicate television channels 1 18 from one or more provider-specific group(s) 140d.
- a provider 124 may offer a television channel 118 that is also offered by another provider 124.
- a portion of the FAST channels from one provider may be the same as a portion of the FAST channels provided by another provider.
- the deduplication engine 172 may determine that a television channel 118a associated with a provider 124a and a television channel 118b associated with a provider 124b relate to the same television channel 118, and, if so, may merge the television channel 118a and the television channel 118b into a single television channel 118.
- the deduplication engine 172 determines that the identifiers 171 (and/or the channel names 113) associated with the television channel 118a and the television channel 118b are the same, and, if so, determines to merge the television channel 118a and the television channel 118b. In some examples, the deduplication engine 172 obtains program data 1 16 associated with the television channel 118a and the television channel 118a, and if the program data 116 for the television channel 118a substantially corresponds to the program data 116 for the television channel 118b, the deduplication engine 172 may determine that the channels are duplicates. In some examples, the merging includes selecting one of the television channels 118a and the television channel 118b and discarding the other channel.
- the navigation group constructor 134 includes a watch ranking engine 177 configured to rank providers 124 that offer the same television channel 118.
- the watch ranking engine 177 may compute ranking information 176 that ranks the multiple providers (e.g., the provider 124a, the provider 124b) according to one or more of a plurality of signals 178.
- the signals 178 may include a user-provided search signal, a user preference signal, a cost signal, and/or an installation signal.
- the user-provided search signal may represent whether the user has specifically searched for a particular provider (e.g., “television channel A on provider A” via a search query or voice command).
- the user preference signal may represent whether the user has overridden a default ranking or setting.
- the cost signal may represent a relative cost to the user, e.g., a provider that offers the television channel for free may be ranked higher than a provider that offers the television channel if the user would have to sign-up for the service or pay a subscription.
- the installation signal may represent whether a native application 161 associated with the provider has been installed, e.g., native applications 161 that are already installed on the television device 152 are ranked higher than native applications 161 that require installation.
- the signals 178 may include other signal such as whether the corresponding native application 161 has been initialed (e.g., warmed-up) (e.g., initialized native applications 161 may be ranked higher than un-initialized native applications 161 (e.g., cold applications)), and/or whether the channels are instant playback channels.
- instant playback channels include channels provided by the media platform 104.
- instant playback channels may be ranked higher than application-based channels.
- the EPG 145 may display the providers 124 according to the ranking information 176. Tn some examples, if the provider 124b is ranked higher than the provider 124a, the provider 124b may be identified first and/or as a primary watch entity on the EPG 145. In response to selection of the primary watch entity, the corresponding native application 161 may be launched to display the television channel 118.
- the live television engine 130 retrieves, from the media provider database 108, program data 116 that identifies programs 117 broadcasted by the television channels 118 included in the navigation groups 140.
- the live television engine 130 may transmit a program query 168, via the API(s) 138, to the media provider database 108.
- the program query 168 may identify the television channels 118 from the list 166 and/or the navigation groups 140.
- the program query 168 may include the identifiers 171 from the list 166 and/or the navigation groups 140.
- the program query 168 may include information that identifies a time interval.
- the time interval may define a duration such as one day, one week, one month, etc.
- the time interval is defined by a start time and an end time.
- the media platform 104 may query the media provider database 108 to retrieve program data 116 associated with each identifier 171 during the time interval.
- the live television engine 130 may receive a response 174 that includes the program data 116 for each identifier 171 associated with the television channels 118.
- the program data 116 may include information identifying a current program 117a and one or more future programs 117b during the time interval.
- the program data 116 may include a name 131, a description 133, an air date 147 (e.g., time/date of broadcast), a maturity rating 137, and/or a program image 139.
- the live television engine 130 includes an EPG data generator 142 configured to generate EPG data 144 to be transmitted, over the network 150, to the television device 152.
- the EPG data 144 includes information about the navigation groups 140, the television channels 118, and the programs 117.
- the EPG data 144 includes the group lists 165 for the navigation groups 140 and the channel and program data 112 for the television channels 118.
- the EPG data 144 may cause the television device 152 (e.g., the media application 157) to display a selectable UI element 141 for each of the navigation groups 140 such that selection of the selectable UI element 141 causes the television device 152 to display television channels 118 and programs 117 corresponding to a respective navigation group 140 in the EPG 145.
- the media application 157 may retrieve the EPG data 144 (or the information included within the live tab of the user interface 186) using a windowing and caching mechanism to achieve a balance between user perceived latency, memory usage, CPU usage, and/or several calls.
- the information for the live tab and/or the EPG 145 may include a relatively large amount of data (e.g., since the system 100 is capable of rendering EPG data 144 across hundreds of television channels 118).
- the media application 157 may retrieve a first portion of the EPG data 144 for a subset of television channels 118, e.g., corresponding to a particular navigation block or one or more navigation groups 140 over a specific time interval.
- the media application 157 may store the first portion of the EPG data 144 in a memory device on the television device 152.
- the media application 157 may retrieve a second portion of the EPG data 144 for a subset of television channels 118, e.g., corresponding to another navigation block (or portion thereof) and/or one or more other navigation groups 140 over a specific time interval.
- the media application 157 may store the second portion of the EPG data 144 in the memory device on the television device 152.
- the media application 157 may retrieve a third portion of the EPG data 144 for a subset of television channels 118, e.g., corresponding to yet another navigation block (or portion thereof) and/or one or more other navigation groups 140 over a specific time interval, and so forth.
- the media application 157 may store the third portion of the EPG data 144 in the memory device on the television device 152.
- the media application 157 may request and receive an initial set of EPG data 144, which may include the program data 116 for a subset of television channels 118 that are initially rendered in the EPG 145 (e.g., one of the navigation groups 140 or a navigation block).
- the media application 157 may request, receive, and store another portion of the EPG data 144.
- the media application 157 may fetch (e g., pre-fetch) the EPG data 144 for a time interval (e.g., the first X hours) for the television channels 118 in a navigation block (e.g., “Your Channels” section such as the favorite-channel group 140a, the recent-channel group 140b, etc.). Then, the media application 157 may fetch (e.g., pre-fetch) the EPG data 144 for a time interval (e.g., the first X hours) for the television channels 118 for the first X number of television channels in one or more provider-specific groups 140d.
- a time interval e.g., the first X hours
- the media application 157 may fetch (e.g., pre-fetch) the EPG data 144 for a time interval (e.g., the first X hours) for the television channels 118 for the first X number of television channels in one or more provider-specific groups 140d.
- the media application 157 may fetch (e.g., pre-fetch) the EPG data 144 for a time interval (e.g., the first X hours) for the television channels 118 in the first X number of genre-based groups 140f
- the media application 157 may fetch the images for currently live programming, and/or fetch the EPG data 144 for the next X number of television channels 118, etc.
- the television device 152 may render UI elements 141 corresponds to the navigation groups 140 in a first portion 199-1 of the EPG 145.
- a UI element 141-1 corresponds to a navigation group 140-1
- a UI element 141-2 corresponding to a navigation group 140-2
- a UI element 141-3 corresponds to a navigation group 140-3.
- the navigation groups 140 of FIG. 1C may include any of the types of navigation groups 140 discussed with reference to FIG. IB.
- the EPG 145 may display any number of navigation groups 140. Tn the example of FIG.
- the user has selected the UI element 141-2, which caused the television device 152 to identify the programs 117 and the television channels 118 from the group list 165 of the navigation group 140-2 in a second portion 199-2 of the EPG 145.
- the second portion 199-2 of the EPG 145 may be updated to identify the programs 117 and the television channels 118 from the group list 165 of the navigation group 140-1.
- the second portion 199-2 of the EPG 145 may be updated to identify the programs 117 and the television channels 118 from the group list 165 of the navigation group 140-3.
- Identifying a program 117 and a television channel 118 in the EPG 145 may include displaying information and/or UI element(s) in the user interface 186 that identifies a television channel (e.g., channel name 113, channel number 111, channel image 121 (e g., logo), etc.) and/or information about one or more programs 117 broadcasted by the tuner-based television channel 120 (e.g., program name 131, description 133, air date 147, maturity rating 137, and/or program image 139).
- a television channel e.g., channel name 113, channel number 111, channel image 121 (e g., logo), etc.
- information about one or more programs 117 broadcasted by the tuner-based television channel 120 e.g., program name 131, description 133, air date 147, maturity rating 137, and/or program image 139.
- the EPG 145 may include a trending indicator (e.g., a “trending now” category) associated with one or more television channels 118 identified in the EPG 145.
- the trending indicator may indicate a number of users that initiated watching a television channel 118.
- the trending indicator may be a label or other UI element that indicates a television channel 118 is trending (e.g., popular, viral buzzing, or other similar terms, etc.).
- the trending indicator indicates that the television channel 118 is trending, and may also indicate the number of users that initiated viewing of the television channel in a given period of time (or an approximation of the number of users).
- the trending indicator may be populated (e.g., rendered on the user interface 186) with respect to a particular television channel 118 when the television channel 118 is determined as trending by the media platform 104.
- a television channel 118 may be considered trending by the media platform 104 in response to the media platform 104 determining that a number of viewing sessions associated with the television channel 118 is over a threshold amount in a given time period.
- the threshold amount may be a predetermined level and/or set based on the number of viewing sessions associated with other television channels 118.
- a trending television channel is a television channel that is viewed by a number of users in a given time period at a rate that is higher than other television channels.
- a viewing session is initiated when a particular user has initiated a viewing of the television channel 118 on their television device 152.
- the EPG 145 may enable a user to select a television channel 118 (e.g., a tuner-based television channel 120 or a server-based television channel 122), where selection of the tuner-based television channel 120 displays the current content of the tuner-based television channel 120 on the television device 152 from radio waves received by an antenna 155 of the television device 152 and selection of the server-based television channel 122 displays the current content of the server-based television channel 122 from digital data received over the network 150.
- the media application 157 may cause a media player to be launched to receive and display the content received via the tuner 154 and antenna 155 on the television device 152.
- the media application 157 e.g., native application 161 may receive content over the network (e.g., internet) from a streaming platform 167.
- selection of a server-based television channel 122 from the EPG 145 may cause the media application 157 to launch a native application 161 (e.g., using a content deep link) associated with the server-based television channel 122.
- the server-based television channel 122 may be associated with a specific provider 124 in which the server-based television channel 122 is streamed from a streaming platform 167 (e.g., the media platform 104 itself or another streaming platform 167).
- the user can control the playback of the server-based television channel 122 from the corresponding native application 161.
- a content deep link corresponding to a server-based television channel 122 (and/or media content item), may be an identifier that identifies the location of the serverbased television channel 122 in the native application 161.
- the media application 157 may transfer the content deep link to the corresponding native application 161.
- the content deep link identifies a specific landing page (e.g., an interface) within the native application 161 that corresponds to the server-based television channel 122 or media content item.
- the content deep link is an operating system intent.
- the content deep link is a uniform resource locator (URL).
- the content deep link includes a URL format.
- a program 117 is rendered on the user interface 186.
- the media application 157 may implement a browse-while-watching feature to enable the user to continue to view the program 117 while browsing through the user interface 186 (e.g., other section (e.g., tabs) of the media application 157) and/or while browsing other user interfaces associated with other applications (e.g., other native applications 161).
- a display of the program 117 may remain in the foreground while the user uses other portions of the user interface 186 and/or other native applications 161.
- the media application 157 is configured to render the content of a selected television channel 118 in a video window, where the video window displays the contents of the program 117.
- the media application 157 renders the video window in response to receipt of a user command to navigate to a different portion (e.g., tab) of the user interface 186 or a different native application 161.
- the video window may be a pop-out window that displays the video content.
- the video window includes a picture-in-picture (PIP) window.
- PIP picture-in-picture
- the video window remains in the foreground while the user navigates to other portions of the user interface 186 or other native applications 161.
- the video window is positioned in a portion of the display 156 (e g., top right corner, top left corner, etc.).
- a user may move the video window to a different portion of the display 156.
- the video window is automatically moved to a different portion of the display 156 based on which information is displayed by the television device 152 and/or the user’s browsing activity (e g., a user navigates to a control element or a portion of the display 156 that includes the video window, which causes the video window to move to another portion of the display 156).
- the television device 152 may cause the media application 157 to display the program 117 in the user interface 186 (e.g., the live tab) along with the relevant EPG data 144).
- the television device 152 may re-display the user interface 186 such that the program 117 is displayed in a larger format, and, in some examples, along with the EPG data 144 having the navigation groups 140.
- the media application 157 is configured to enable the user to search and/or filter the EPG data 114.
- the media application 157 renders a search filter interface (e.g., a search filter chip component) on the user interface 186 to enable the user to search and/or filter the television channels 118 from the EPG 145.
- the media application 157 may render a search field interface on the EPG 145, which enables the user to enter text as search criteria.
- the media application 157 may receive search criteria from a voice command received via the television device 152 or another device (e.g., a user device, smart speaker, wearable device, etc.) associated with and/or connected to the television device 152.
- the media platform 104 may update the EPG 145 to identify one or more television channels 118 that correspond to the search results (e g., if the search criteria is “movies”, the EPG 145 may display television channels 118 that are broadcasting movies).
- the media platform 104 may remove any television channel 118 from the EPG 145 that does not have a matching program currently playing. In some examples, the media platform 104 may remove any television channels 118 from the EPG 145 that does have a match in a given timeframe threshold from the current point in time (e.g. within next 1 hour, next 2 hours, next 4 hours, etc.). In some examples, instead of removing a television channel 118, the media platform 104 may highlight the television channels 118 that correspond to the filters and/or search criteria.
- the media platform 104 may highlight specific television channels 118 and/or programs 117 that are a match (e.g., best match) (e.g., by color, size, font, or order etc.) or by deemphasizing television channels 118 and/or programs 117 that are not a match (e g. gray- out or dim non-matching television channels or programs).
- a match e.g., best match
- the media application 157 is configured to provide the search filter interface on the live tab (e.g., the EPG 145) of the user interface 186.
- the media application 157 may render the search filter interface on the user interface 186 (e.g., overlaid or rendered on top of the EPG 145 or rendered as a separate portion within the EPG 145 itself).
- the search filter interface may include search filter components (e.g., filter chips) arranged in a horizontal and/or vertical list.
- the search filter components may be UI elements representing filters and may include buttons, icons, dropdown menu items, sliders, etc.
- the search filter components may be configurable by the user.
- the search filter components are selected by the media platform 104 based on the user activity information 146 associated with a user account 136 (e.g., personalized to the user’s interests and behavior).
- the search filter components may also allow for subfiltering, where, for example, the user selects a search filter component “movies” and the EPG 145 is filtered to only television channels 118 currently showing movies.
- the media application 157 may render (or change) sub-filter components to recite filtering options across genres, e.g., changing sub-filter components to “action”, “comedy”, “romcoms”, etc. to enable the user to further filter down among the movies.
- the television channels 118 are filtered down further to only romcom movies. Still further, the sub-filter components may change again for “romcoms” across decades, e.g., changing the sub-filter components to “from the 80s & 90s” and “'00s”, etc.
- the sub-filtering may assist the user to narrow the television channels 118 from a relatively large amount of channels (e.g., hundreds, thousands, etc.) to television channels 118 that match their interests.
- the selected search filter components may remain active, and, in some examples, can be reselected by the user.
- the user can clear (e.g., deactivate) one or more selected search filter components, thereby re-populating the television channels 118 that still meet the remaining filters. For example, suppose a user had selected “from the 80s and 90s”, and then cleared the “romcoms” component, they still have two search filter components that are active, e.g., “movies” and “from the 80s and 90s”, which causes the television channels 118 in the EPG 145 to expand out to match those filters.
- the search filter interface may be rendered in response to receipt of a user selection of an icon (e.g., filtering/search icon) on the EPG 145.
- the search filter interface is an extendable and retractable section of the user interface 186.
- the search filter interface may be a UI element (e.g., a UI window or box) which allows the user to set search and filtering settings.
- the search filter interface may define filter categories, toggle buttons, selectable predefined settings, and/or a search field.
- the user interface 186 may include one or more other sections (e.g., tabs) that display media content 106 (e.g., a plurality of media content items), which may be selected by the media platform 104.
- the media content 106 may include programs 117 from the television channels 118 and/or non-live content (e.g., on- demand content).
- the media content items may be organized as a plurality of clusters based on one or more categories, such as content type (e.g., “Action Movies”), viewing history (e.g., “Because You watched Movie ABC”), release time (e.g., “Trending”), and the like.
- the media content items provided by different streaming platforms 167 can be recommended in the same cluster.
- one of the tabbed interfaces includes personalized media content that is organized as a plurality of clusters based on one or more categories, such as release time (e.g., “This Week,” “Next week,” “Next Month,” etc.), user action and user application interaction, native app usage (e.g., items that are “From App ABC”), etc.
- the clusters may include video-on-demand programs, programs 117 from the tuner-based television channels 120, and/or programs 117 from the server-based television channels 122.
- the server computer 102 may be computing devices that take the form of a number of different devices, for example a standard server, a group of such servers, or a rack server system. In some examples, the server computer 102 may be a single system sharing components such as processors and memories.
- the network 150 may include the Internet and/or other types of data networks, such as a local area network (LAN), a wide area network (WAN), a cellular network, satellite network, or other types of data networks.
- the network 150 may also include any number of computing devices (e.g., computer, servers, routers, network switches, etc.) that are configured to receive and/or transmit data within network 150.
- Network 150 may further include any number of hardwired and/or wireless connections.
- the server computer 102 may include one or more processors formed in a substrate, an operating system (not shown) and one or more memory devices.
- the memory devices may represent any kind of (or multiple kinds of) memory (e.g., RAM, flash, cache, disk, tape, etc.).
- the memory devices may include external storage, e.g., memory physically remote from but accessible by the server computer 102.
- the server computer 102 may include one or more modules or engines representing specially programmed software.
- FIGS. 2A and 2B illustrate a system 200 for incorporating tuner-based content into a media platform 204.
- the system 200 may be an example of the system 100 of FIGS 1 A through IF and may include any of the details discussed herein with respect to these figures.
- the television device 252 includes a tuner 254 configured to operate with an antenna 255 to execute a channel scan 253, which scans and detects tuner-based television channels 220 across frequencies.
- a channel scan 253 an operating system 251 of the television device 252 may obtain tuner channel data 232 from the tuner 254 and store the tuner channel data 232 in a memory device of the television device 252.
- the tuner 254 executes the channel scan 253 in a background process of the television device 252.
- the tuner 254 is configured to automatically execute the channel scan 253 when the television device 252 is powered-on.
- the tuner channel data 232 may identify which tuner-based television channels 220 are detected by the tuner 254 on the television device 252. For each tunerbased television channel 220 detected by the tuner 254, the tuner channel data 232 may include a channel number 280 and a channel name 282.
- the channel number 280 may be a numerical identifier (e.g., 11, 11.2, 12, 25.2, etc.) associated with a particular tuner-based television channel 220.
- the channel name 282 may be the title/name associated with a particular tuner-based television channel 220.
- the tuner channel data 232 includes one or more identifiers that identifies the type of tuner 254 and/or the television device 252.
- the tuner channel data 232 may not include other types of metadata associated with the tuner-based television channel 220 such as an image or logo, type(s) of the channel entity, etc.
- the tuner channel data 232 may not include programming data, e.g., information that identifies current programs and/or future programs to be broadcasted by a tuner-based television channel 220.
- the tuner channel data 232 includes information that identifies a current program broadcasted by a respective tuner-based television channel 220 but not future programs to be broadcasted by a respective tuner-based television channel 220.
- the media platform 204 may receive, over the network, the tuner channel data 232 from the television device 152.
- the media platform 204 may include a media provider database 208 that stores information about media content that can be presented and selected from a user interface 286.
- the user interface 286 is rendered on a display 256 of the television device 252.
- the media content may include channel and program data 212 for a plurality of broadcast channels, including the tuner-based television channels 220 and the server-based television channels.
- the channel and program data 212 may represent a relatively large set of data that provides information for many broadcast channels that can be viewed by a user (e.g., across one or multiple countries).
- the channel and program data 212 may include channel data 214 that includes information about the television channels and program data 216 that includes information about programs that are broadcasted by the television channels.
- the media platform 204 may receive (e.g., periodically receive) the channel and program data 212 from an external source and store (e.g., update) the channel and program data 212 in the media provider database 208.
- the media content may include other media content such as media content offered by one or more multiple video streaming platforms.
- the media platform 204 includes a reconciliation engine 215 configured to receive the tuner channel data 232 and generate channel and program data 212 for one or more of the tuner-based television channel(s) 220 detected by the tuner 254.
- the channel and program data 212 may represent enriched information about a tuner-based television channel 220 and about programs broadcasted by a tuner-based television channel 220.
- the reconciliation engine 215 may reconcile and enhance the tuner channel data 232 with channel and program data 212 stored in the media provider database 208 to generate enriched data for the tuner-based television channel(s) 220 detected by the tuner 254.
- the information obtained by the tuner 254 e.g., the tuner channel data 232
- the tuner channel data 232 may be insufficient to enable the tuner-based television channels 220 to be presented in a user interface 286 that also identifies and displays information from server-based television channels or other server-side media content.
- the reconciliation engine 215 may reconcile the tuner-based television channels 220 detected by the tuner 254 with known information stored in the media provider database 208 and enrich the limited tuner channel data 232 with additional information stored in the media provider database 208.
- the reconciliation engine 215 may obtain a location 262 of the television device 252.
- the location 262 may represent a geographic area of the location in which the television device 252 is located.
- the reconciliation engine 215 obtains the location 262 from a user account 236 stored on the media platform 204. Tn some examples, the location 262 is included in the tuner channel data 232.
- the user account 236 may include information that identifies one or more television devices 252 associated with the user account 236.
- the location 262 includes a zip code of the area in which the television device 252 is located.
- the location 262 includes a geolocation location or geolocation coordinates of the television device 252.
- the reconciliation engine 215 may generate and transmit a channel query 260 to the media provider database 208.
- the channel query 260 includes the location 262 of the television device 252.
- the channel query 260 may be a request to retrieve a list 266 of tuner-based television channels 220 that are available in the location 262.
- the media platform 204 may retrieve list 266 of tuner-based television channels 220 that are broadcasted in the location 262 of the television device 252. If the location 262 is a zip code, the list 266 includes information that identifies the tuner-based television channels 220 that are broadcasted in the zip code specified by the channel query 260.
- the reconciliation engine 215 may receive a channel response 264 that includes the list 266.
- the list 266 may include an identifier 271 that identifies a respective tunerbased television channel 220 on the media platform 204, a channel number, and a channel name.
- the reconciliation engine 215 may include a channel matcher 235 configured to reconcile the tuner-based television channels 220 identified by the tuner channel data 232 with the tuner-based television channels 220 identified in the list 266.
- the channel matcher 235 may identify a tuner-based television channel 220 from the list 266 of tuner-based television channels 220 that corresponds to a tuner-based television channel 220 identified in the tuner channel data 232.
- the channel matcher 235 may determine whether the channel number 280 and/or the channel name 282 identified in the tuner channel data 232 corresponds to (e g., matches) the channel number and/or the channel name from the list 266. In some examples, if they match, the channel matcher 235 may identify the corresponding tuner-based television channel 220 as eligible to be used in the system 200. Tn some examples, if a tuner-based television channel 220 identified in the tuner channel data 232 is not identified (e.g., does not match) a tuner-based television channel 220 on the list 266, the tuner-based television channel 220 is not used in the system 200.
- a tuner-based television channel 220 identified in the tuner channel data 232 is not identified (e.g., does not match) a tuner-based television channel 220 on the list 266, the tuner-based television channel 120 is still used in the system 200 but may be presented in the user interface 286 with limited information.
- the reconciliation engine 215 may retrieve channel data 214 associated with the tuner-based television channel 220 such as a channel image (e.g., logo) and/or other metadata associated with the tuner-based television channel 220 from the media provider database 208.
- channel data 214 associated with the tuner-based television channel 220
- a channel image e.g., logo
- other metadata associated with the tuner-based television channel 220 from the media provider database 208.
- the reconciliation engine 215 may include a program identifier 288 configured to retrieve, from the media provider database 208, program data 216 that identifies program(s) broadcasted by the tuner-based television channel(s) 220 during a time interval 292.
- the program identifier 288 may generate and transmit a program query 268 to the media provider database 208.
- the program query 268 may be a request to retrieve program data 216 about the programs broadcasted by tuner-based television channels 220 (e.g., that have been identified or reconciled, or, in other words, have an identifier 271).
- the program query 268 may include the identifier(s) 271 of the tuner-based television channel(s) 220, which have been previously reconciled.
- the program query 268 may include information that identifies a time interval 292.
- the time interval 292 may define a duration such as one day, one week, one month, etc.
- the time interval 292 is defined by a start time and an end time.
- the media platform 204 may query the media provider database 208 to retrieve program data 216 associated with each identifier 271 during the time interval 292.
- the program identifier 288 may receive a program response 274 that includes the program data 216 for each identifier 271 associated with the tuner-based television channels 220.
- the program data 216 may include information identifying a current program and one or more future programs during the time interval 292.
- the program data 116 may include a name, a description, an air date (e.g., time/date of broadcast), a maturity rating, and/or a program image.
- the reconciliation engine 215 may generate channel and program data 212a for the tuner-based television channels 220 that are reconciled by the channel matcher 235.
- the channel and program data 212a may include enriched data about the tuner-based television channel 220 and the programs broadcasted by the tuner-based television channel 220.
- the channel and program data 212a may include a combination of the tuner channel data 232, the channel data 214, and/or the program data 216.
- the channel and program data 212a may include the channel name (e.g., from the media provider database 208) as the display name.
- media platform 204 may store entitlement data 225 in a user account 236 of the media application 257.
- the entitlement data 225 may identify which providers (e.g., the providers 124 of FIGS. 1A through IF) the user account 236 has access to, which may include media providers associated with one or more native applications 261.
- the entitlement data 225 may associate the user account 236 with the reconciled tuner-based television channels 220.
- the entitlement data 225 may include a list of tuner-based television channels 220 and the list is associated with a tuner 254 or television device 252 (e.g., the tuner 254 or the television device 252 is the provider).
- the media platform 104 may determine which providers are associated with the user account 236 using the entitlement data 225
- the media platform 204 may receive new tuner channel data 232 from the television device 152. In some examples, the media platform 204 may receive new tuner channel data 232 in response to a new channel scan 253 by the tuner 254. In some examples, the media platform 204 may receive new tuner channel data 232 if the new channel scan 253 results in a list of tuner-based broadcast channels 220 that are different from the list of tuner-based broadcast channels 220 from a previous channel scan 153. In response to the new tuner channel data 232, the media platform 204 may generate updated channel and program data 212a and may update the entitlement data 225 with the updated channel and program data 212a.
- the reconciliation engine 215 may perform the same operations discussed above to generate the updated channel and program data 212a.
- the media platform 204 may transmit the channel and program data 212a associated with the tuner-based television channels 220.
- a list of reconciled tuner-based television channels 220 are stored in a memory device of the television device 252.
- the program data 216 for the reconciled tunerbased television channels 220 in the memory device of the television device 252.
- the media platform 104 may generate electronic programming guide data (e.g., the EPG data 144 of FIGS. 1A through IF).
- the electronic programming guide data may include the channel and program data 212a associated with the tuner-based television channel 220 and channel and program data 212 for a serverbased television channel.
- the electronic programming guide data is configured to be rendered in an electronic programming guide (EPG) 245 in the user interface 286 of the media application 157.
- the EPG 245 identifies the tuner-based television channel 220 and any server-based television channels.
- the tuner-based television channels 220 are included in a navigation group (e.g., the navigation group 140 of FIGS. 1A through IF).
- the electronic media guide 245 may display a programming schedule of media content, e.g., programs from the tuner-based television channels 220 and programs from the server-based television channels. From the electronic media guide 245, a user may view the programs in a current time slot (and a future time slot) available for viewing from the tuner-based television channels 220 and the server-based television channels.
- the media application 257 may cause a media player 259 to be launched to receive and display the content received via the tuner 254 and antenna 255 on the television device 252.
- a native application 261 e.g., the media application 257 may receive content over the network (e.g., internet) from a streaming platform.
- the media application 257 may provide television recommendations 296 (e.g., personalized to the user account 236) in the user interface 286 for selection by the user.
- the television recommendations 296 may include programs from the server-based television channels and programs from the tuner-based television channels 220.
- the media application 257 may identify un-finished items 298 (e g., un-finished programs or programs that have been started but not finished) in the user interface 286 for selection by the user.
- the un-finished items 294 may include programs from the server-based television channels and programs from the tunerbased television channels 220.
- the media platform 204 may receive a search query from the television device 252.
- the search query may be a request to search media content in the media provider database 208.
- the search query may include one or more terms submitted by a user of the television device 252.
- the media platform 204 may transmit search results 299 for display on the user interface 286 associated with the television device 252.
- the search results 299 may identify the program broadcasted by the tuner-based television channel 220, one or more programs broadcasted by a server-based television channel, and/or one or more media content items associated with one or more streaming platforms.
- the television device 252 may receive a voice command 284 to play a tuner-based television channel 220 or a program on a tuner-based television channel 220.
- the voice command 284 is a command to display a particular television channel on the television device 252.
- the voice command 284 is a command to display a particular program broadcasted by a television channel on the television device 252.
- the operating system 251 may cause a media player 259 to launch to play the tuner-based television channel 220.
- the television device 252 may include a microphone 295, which, when activated, is configured to receive a voice command 284 (e.g., “play channel six”).
- the television device 252 may receive the voice command 284 from another device such as a smart speaker, smartphone, wearable device, etc. (e.g., “play channel six on home TV”).
- FIG. 3 illustrates an example of a user interface 386 depicting an EPG 345 with navigation groups 340.
- the user interface 386 may be an example of the user interface 186 of FIGS. 1A through IF and may include any of the details discussed with reference to those figures.
- the EPG 345 may display a selectable UI element 341 associated with each navigation group 340. Also, for each navigation group 340, the EPG 345 may identify the title of the navigation group 340 (e.g., favorite, recent, news, sports, movies, entertainment) and the number of channels within a respective navigation group 340. As shown in FIG.
- the navigation groups 340 include a favorite-channel group 340a, a recent-channel group 340b, and a plurality of genre-based groups 340f. However, the navigation groups 340 may include any of the navigation groups discussed with reference to FIGS. 1 A through IF.
- the user has selected the UI element 341 corresponding to the recent-channel group 340b, which caused the EPG 345 to identify the group list 365 of television channels that correspond to the recent-channel group 340b.
- the EPG 345 displays program data 316 about the programs broadcasted by the television channels in the recent-channel group 340b.
- the user can select a UI element 341 corresponding to a different navigation group 340, which causes the EPG 345 to display the group list 365 and program data 316 for the selected navigation group 340.
- FIG. 4 illustrates an example of a user interface 486 depicting an EPG 445 with navigation groups 440.
- the user interface 486 may be an example of the user interface 186 of FIGS. 1A through IF and may include any of the details discussed with reference to those figures.
- the EPG 445 may display a selectable UI element 441 associated with each navigation group 440. Also, for each navigation group 440, the EPG 445 may identify the title of the navigation group 440 and the number of channels within a respective navigation group 440.
- the navigation groups 440 include a favorite-channel group 440a and a recent-channel group 440b. However, the navigation groups 440 may include any of the navigation groups discussed with reference to FIGS. 1 A through IF.
- the user has selected the UI element 441 corresponding to the favoritechannel group 440a, which caused the EPG 445 to identify the group list 465 of television channels that correspond to the favorite-channel group 440a. Also, the EPG 445 displays program data 416 about the programs broadcasted by the television channels in the favorite-channel group 440a. The user can select a UI element 441 corresponding to a different navigation group 440, which causes the EPG 445 to display the group list 465 and program data 416 for the selected navigation group 440.
- the EPG 445 includes a recommendation section 447 that identifies television programs from multiple providers.
- the recommendation section 447 includes a horizontal carousel with media content items that correspond to the different programs broadcasted by the television channels.
- the recommendation section 447 includes live television programs selected by a recommendation engine (e g., the recommendation engine 191 of FIG. ID).
- FIG. 5 illustrates an example of a user interface 586 depicting an EPG 545 with navigation groups 540.
- the user interface 586 may be an example of the user interface 186 of FIGS. 1A through IF and may include any of the details discussed with reference to those figures.
- the EPG 545 may display a selectable UI element 541 associated with each navigation group 540. Also, for each navigation group 540, the EPG 545 may identify the title of the navigation group 540 and the number of channels within a respective navigation group 540. As shown in FIG.
- the navigation groups 540 include a favorite-channel group 540a, a recent-channel group 540b, a recommendation group 540c, and a plurality of genre-based groups 540f
- the navigation groups 540 may include any of the navigation groups discussed with reference to FIGS. 1 A through IF.
- the user has selected the UI element 541 corresponding to the favorite-channel group 540a, which caused the EPG 545 to identify the group list 565 of television channels that correspond to the favorite-channel group 540a.
- the EPG 545 displays program data 516 about the programs broadcasted by the television channels in the favorite-channel group 540a.
- the user can select a UI element 541 corresponding to a different navigation group 540, which causes the EPG 545 to display the group list 565 and program data 516 for the selected navigation group 540.
- FIG 6 illustrates an example of a user interface 686 depicting an EPG 645 with navigation groups 640.
- the user interface 686 may be an example of the user interface 186 of FIGS. 1A through IF and may include any of the details discussed with reference to those figures.
- the EPG 645 may display a selectable UI element 641 associated with each navigation group 640. Also, for each navigation group 640, the EPG 645 may identify the title of the navigation group 640 and the number of channels within a respective navigation group 640.
- the navigation groups 640 include a recent-channel group 640b, a recommendation group 640c, and a plurality of genre-based groups 640f.
- the navigation groups 640 may include any of the navigation groups discussed with reference to FIGS. 1A through IF.
- the user has selected the UI element 641 corresponding to the genre-based group 640f (e.g., news), which caused the EPG 645 to identify the group list 665 of television channels that correspond to the genre- based group 640f relating to news.
- the EPG 645 displays program data 616 about the programs broadcasted by the television channels in the genre-based group 640f relating to news.
- the user can select a UI element 641 corresponding to a different navigation group 640, which causes the EPG 645 to display the group list 665 and program data 616 for the selected navigation group 640.
- FIG. 7 illustrates an example of a user interface 786 depicting an EPG 745 with navigation groups 740.
- the user interface 786 may be an example of the user interface 186 of FIGS. 1A through IF and may include any of the details discussed with reference to those figures.
- the EPG 745 may display a selectable UI element 641 associated with each navigation group 740.
- a user operated a portion of the EPG 745 that displays the program data 716 and/ has selected a program 717, which causes the EPG 745 to change a format of the section of the EPG 745 that displays the navigation groups 740.
- the EPG 745 may display the selectable UI icons 741, but not the title and/or number of channels associated with a respective navigation group 740.
- FIG. 8 illustrates an example of a user interface 886 depicting an EPG 845 with navigation groups 840.
- the user interface 886 may be an example of the user interface 186 of FIGS. 1A through IF and may include any of the details discussed with reference to those figures.
- the EPG 845 may display a selectable UI element 841 associated with each navigation group 840.
- a user has selected a program 817 from the EPG 845, which caused the EPG 845 to change a format of the section of the EPG 845 that displays the navigation groups 840.
- the EPG 845 may display the selectable UI elements 841, but not the title and/or number of channels associated with a respective navigation group 840.
- the EPG 845 may display information 897 about the selected program 817 such as the title of the program 817, the airing date/time, episode information, and/or a short description of the program 817. Further, the EPG 845 may display a primary watch action 861 and available watch action 863.
- the program 817 may be broadcasted by multiple televisions associated with multiple providers. However, as explained in FIGS. 1 A through IF, a watch ranking engine 177 may rank the plurality of providers and select the highest-ranking provider as the primary watch action 861.
- the media application causes playback of the program 817 from the television channel associated with the primary provider (e.g., Provider A) on the television device.
- the user interface 886 may display the plurality of providers to watch the program 817, which have been ranked according to the watch ranking engine 177.
- FIGS. 9A through 9D illustrate example navigation group sections that are rendered in an EPG of a media platform.
- FIG. 9A illustrates a navigation group section 995-1 identifying a plurality of navigation groups such as a favorite-channel group 940a, a recent-channel group 940b, a recommendation group 940c, and a plurality of genre-based groups 940f.
- the navigation group section 995-1 may be rendered for a user account that does not include premium or tuner channels.
- the genre-based groups 940f include FAST channels that are organized by genre.
- FIG. 9B illustrates a navigation group section 995-2 identifying a plurality of navigation groups such as a favorite-channel group 940a, a recent-channel group 940b, a recommendation group 940c, a providerspecific group 940d associated with provider A, and a plurality of genre-based groups 940f.
- the navigation group section 995-2 may be rendered for a user account that includes premium channels from provider A, but not tuner channels.
- FIG. 9C illustrates a navigation group section 995-3 identifying a plurality of navigation groups such as a favorite-channel group 940a, a recent-channel group 940b, a recommendation group 940c, a provider-specific group 940d associated with provider A, a tuner-channel group 940e, and a plurality of genre-based groups 940f.
- the navigation group section 995-3 may be rendered for a user account that includes premium channels from provider A and tuner channels that have been reconciled according to the techniques described in FIGS. 1 A through IF and FIGS. 2A through 2B.
- FIG. 9C illustrates a navigation group section 995-3 identifying a plurality of navigation groups such as a favorite-channel group 940a, a recent-channel group 940b, a recommendation group 940c, a provider-specific group 940d associated with provider A, a tuner-channel group 940e, and a plurality of genre-based groups 940f.
- the navigation group section 995-3 may
- FIGD illustrates a navigation group section 995-4 identifying a plurality of navigation groups such as a favorite-channel group 940a, a recent-channel group 940b, a recommendation group 940c, a provider-specific group 940d associated with provider A, a provider-specific group 940d associated with provider B, a tuner-channel group 940e, and a plurality of genre-based groups 940f.
- the navigation group section 995-4 may be rendered for a user account that includes premium channels from provider A, premium channels from provider B, and tuner channels that have been reconciled according to the techniques described in FIGS. 1 A through IF and FIGS. 2A through 2B.
- Each navigation group is identified by the title of the navigation group and the number of channels included within a respective navigation group.
- FIG. 10 illustrates an example of a user interface 1086 depicting an EPG 1045 with a plurality of navigation groups 1040.
- the user interface 1086 may be an example of the user interface 186 of FIGS. 1A through IF and may include any of the details discussed with reference to those figures.
- the EPG 1045 may display a selectable UI element associated with each navigation group 1040, which, when selected, causes identification of television channels and program data 1016 in the EPG 1045. Also, for each navigation group 1040, the EPG 1045 may identify the title of the navigation group 1040 and the number of television channels within a respective navigation group 1040. [00149] As shown in FIG.
- the EPG 1045 may include a navigation block 1039-1 (e.g., built-in channels, free built-in channels) with a provider-specific group 1040d, and, in some examples, a tuner-channel group 1040e.
- a navigation block may represent a category of navigation groups 1040 and may include one or more navigation groups 1040. If the television device does not include a tuner and/or an antenna, in some examples, the navigation block 1039-1 may include the provider-specific group 1040d. In some examples, the provider-specific group 1040d in the navigation block 1039-1 may include television channels that are offered for free by the media platform.
- the tuner-channel group 1040d may include television channels available to be broadcasted by the television device.
- the EPG 1045 may include a navigation block 1039-2 (e.g., free channels from apps) with a plurality of genre-based groups 1040f.
- the user has selected a UI element corresponding to the provider-specific group 1040d, which caused the EPG 1045 to identify the group list 1065 of television channels that correspond to the provider-specific group 1040d. Also, the EPG 1045 displays program data 1016 about the programs broadcasted by the television channels in the provider-specific group 1040d. The user can select a UI element corresponding to a different navigation group 1040, which causes the EPG 1045 to display the group list 1065 and program data 1016 for the selected navigation group 1040.
- FIG. 11 illustrates an example of a user interface 1186 depicting an EPG 1145 with a plurality of navigation groups 1140.
- the user interface 1186 may be an example of the user interface 186 of FIGS. 1 A through IF and may include any of the details discussed with reference to those figures.
- the EPG 1145 may display a selectable UI element associated with each navigation group 1140, which, when selected, causes identification of television channels and program data 1116 in the EPG 1145. Also, for each navigation group 1140, the EPG 1145 may identify the title of the navigation group 1140 and the number of television channels within a respective navigation group 1140. [00152] As shown in FIG.
- the EPG 1145 may include a navigation block 1139-1 (e.g., your channels) with a favorite-channel group 1140a and a provider-specific group 1140d- 1.
- the EPG 1145 may display the favorite-channel group 1140a in the navigation block 1139-1.
- the provider-specific group 1140d- 1 includes television channels associated with a specific media provider, and, in some examples, are included as part of a paid live television subscription.
- the EPG 1145 may include a navigation block 1139-2 (e.g., built-in channels, free built-in channels) with a provider-specific group 1140d-2 and a tunerchannel group 1140e.
- a navigation block may represent a category of navigation groups 1140 and may include one or more navigation groups 1140. If the television device does not include a tuner and/or an antenna, in some examples, the navigation block 1139-2 may include the provider-specific group 1140d-2. In some examples, the provider-specific group 1140d-2 in the navigation block 1139-2 may include television channels that are offered for free by the media platform.
- the tuner-channel group 1140e may include television channels available to be broadcasted by the television device.
- the EPG 1145 may include a navigation block 1139-3 (e.g., free channels from apps) with a plurality of genre-based groups 1140f.
- the genre-based groups 1140f may include a recommendation group (e.g., popular) that identifies popular television channels.
- the user has selected a UI element corresponding to the provider-specific group 1140d-2, which caused the EPG 1145 to identify a group list 1165 of television channels that correspond to the provider-specific group 1140d-2. Also, the EPG 1145 displays program data 1116 about the programs broadcasted by the television channels in the provider-specific group 1140d-2. The user can select a UT element corresponding to a different navigation group 1140, which causes the EPG 1145 to display a group list 1165 and program data 1116 for the selected navigation group 1140.
- FIG. 12 illustrates an example of a user interface 1286 depicting an EPG 1245 with a plurality of navigation groups 1240.
- the user interface 1286 may be an example of the user interface 186 of FIGS. 1A through IF and may include any of the details discussed with reference to those figures.
- the EPG 1245 may display a selectable UI element associated with each navigation group 1240, which, when selected, causes identification of television channels and program data 1216 in the EPG 1245. Also, for each navigation group 1240, the EPG 1245 may identify the title of the navigation group 1240 and the number of television channels within a respective navigation group 1240.
- the EPG 1245 may include a navigation block 1239-1 (e.g., your channels) with a recent-channel group 1240b and a favorite-channel group 1240a.
- the EPG 1245 may display the favorite-channel group 1240a in the navigation block 1239-1.
- the EPG 1245 may not display the favorite-channel group 1240a in the navigation block 1239-1.
- the EPG 1245 may display the recent-channel group 1240b
- the EPG 1245 may include a navigation block 1239-2 (e.g., built-in channels, free built-in channels) with a provider-specific group 1240d.
- the television device does not include a tuner and/or an antenna.
- the provider-specific group 1240d in the navigation block 1239-2 may include television channels that are offered for free by the media platform.
- the EPG 1245 may include a navigation block 1239-3 (e.g., free channels from apps) with a plurality of genrebased groups 1240f.
- the user selected the recent-channel group 1240b, which caused the EPG 1145 to identify a group list 1265 of television channels that correspond to the recent-channel group 1240b. Also, the EPG 1245 displays program data 1216 about the programs broadcasted by the television channels in the recent-channel group 1240b. The user can select a different navigation group 1240, which causes the EPG 1245 to display a group list 1265 and program data 1216 for the selected navigation group 1240.
- FIG. 13 illustrates a flowchart 1300 depicting example operations for integrating television channels from multiple providers in a single electronic programming guide (EPG) of a media platform.
- EPG electronic programming guide
- FIG. 13 illustrates the operations in sequential order, it will be appreciated that this is merely an example, and that additional or alternative operations may be included. Further, operations of FIG. 13 and related operations may be executed in a different order than that shown, or in a parallel or overlapping fashion. The operations may define a computer-implemented method.
- the flowchart 1300 is described with reference to the system 100 of FIGS. 1A through IF, the flowchart 1300 may be executed according to any of the figures discussed herein. In some examples, the operations of the flowchart 1300 are executed by a media platform 104 executable by one or more server computers 102.
- Operation 1302 includes receiving, by a media platform 104, a request 127 for electronic programming guide data 144 from a television device 152.
- Operation 1304 includes retrieving, from a media provider database 108, a list 166 of television channels 118 associated with an account identifier or a device identifier of the television device 152, the list 166 of television channels 118 being associated with a plurality of providers 124.
- Operation 1306 includes constructing, using configuration data 135, a plurality of navigation groups 140, each of the plurality of navigation groups 140 being a separate group of television channels 118.
- Operation 1308 includes retrieving, from the media provider database 108, program data 116 that identifies programs 117 broadcasted by the list of television channels 118.
- Operation 1310 includes transmitting, by the media platform 104, the electronic programming guide data 144 to the television device 152, the electronic programming guide data 144 configured to cause the television device 152 to display a selectable user interface (UI) element 141 corresponding to each of the plurality of navigation groups 140 in a first portion 199-1 of an electronic programming guide 145 such that selection of the selectable UI element 141 is configured to cause the television device 152 to display programs 117 and television channels 118 corresponding to a respective navigation group 140 in a second portion 199-2 of the electronic programming guide 145.
- UI user interface
- the list of television channels includes a first television channel provided by a first provider and a second television channel provided by a second provider.
- the operations may include determining that the first television channel and the second television channel relate to the same television channel and merging the first television channel and the second television channel into a single television channel.
- the operations include computing ranking information that ranks the first provider and the second provider according to a plurality of signals, where the ranking information is included as part of the electronic programming guide data.
- the ranking information is configured to cause the television device to display the first provider and the second provider for user selection according to the ranking information.
- the plurality of signals include a user-provided search signal, a user preference signal, a cost signal, and/or an installation signal.
- the plurality of navigation groups may include genre-based groups that identify television channels by genre.
- the operations may include identifying at least one recent television channel based on user activity associated with the account identifier, where the plurality of navigation groups includes a recent-channel group that identifies the at least one recent television channel.
- the operations include receiving, by the media platform, tuner channel data identifying a tuner-based television channel scanned by a television tuner of the television device, retrieving, from the media provider database, a list of tunerbased television channels associated with a location of the television device, identifying the tuner-based television channel from the list of tuner-based television channels using the tuner channel data, and including a tuner-channel group in the plurality of navigation groups, the tuner-channel group identifying the tuner-based television channel.
- the operations include determining that the account identifier has access to a specific provider, and including a provider-specific group in the plurality of navigation groups, the provider-specific group identifying television channels provided by the specific provider.
- the operations include identifying a plurality of recommended television channels, where the plurality of navigation groups include a recommendation group that identifies the plurality of recommended television channels.
- the techniques described herein relate to a non-transitory computer-readable medium storing executable instructions that when executed by at least one processor cause the at least one processor to execute operations, the operations including: receiving, by a media platform, a request for electronic programming guide data from a television device; retrieving, from a media provider database, a list of television channels associated with an account identifier or a device identifier of the television device, the list of television channels being associated with a plurality of providers; determining a plurality of navigation groups based on entitlement data associated with the account identifier, each of the plurality of navigation groups being a separate group of television channels; retrieving, from the media provider database, program data that identifies programs broadcasted by the list of television channels; and transmitting, by the media platform, the electronic programming guide data to the television device, the electronic programming guide data configured to cause the television device to display a selectable user interface (UI) element corresponding to each of the plurality of navigation groups in a first portion of an electronic programming guide such that
- UI selectable user
- the techniques described herein relate to a non-transitory computer-readable medium, wherein the list of television channels includes a first television channel provided by a first provider and a second television channel provided by a second provider; the operations further including: determining that the first television channel and the second television channel relate to a same television channel; and merging the first television channel and the second television channel into a single television channel.
- the techniques described herein relate to a non-transitory computer-readable medium, wherein the operations further include: computing ranking information that ranks the second provider higher than the first provider according to a plurality of signals, the ranking information being included as part of the electronic programming guide data, wherein, in response to selection of the single television channel from the electronic programming guide, the ranking information configured to cause the television device to identify the second provider as a primary watch entity.
- the techniques described herein relate to a non-transitory computer-readable medium, wherein the plurality of signals include at least one of a user- provided search signal, a user preference signal, a cost signal, or an installation signal.
- the techniques described herein relate to a non-transitory computer-readable medium, wherein the operations further include: identifying at least one recent television channel based on user activity associated with the account identifier, wherein the plurality of navigation groups include a recent-channel group that identifies the at least one recent television channel.
- the techniques described herein relate to a non- transitory computer-readable medium, wherein the operations further include: receiving, by the media platform, tuner channel data identifying a tuner-based television channel scanned by a television tuner of the television device; retrieving, from the media provider database, a list of tuner-based television channels associated with a location of the television device; identifying the tuner-based television channel from the list of tunerbased television channels using the tuner channel data; and including a tuner-channel group in the plurality of navigation groups, the tuner-channel group identifying the tunerbased television channel.
- the techniques described herein relate to a non- transitory computer-readable medium, wherein the operations further include: determining that the account identifier has access to a specific provider; and including a providerspecific group in the plurality of navigation groups, the provider-specific group identifying television channels provided by the specific provider.
- FIG. 14 illustrates a flowchart 1400 depicting example operations for integrating television channels from multiple providers in a single electronic programming guide (EPG) of a media platform.
- EPG electronic programming guide
- FIG. 14 illustrates the operations in sequential order, it will be appreciated that this is merely an example, and that additional or alternative operations may be included. Further, operations of FIG. 14 and related operations may be executed in a different order than that shown, or in a parallel or overlapping fashion. The operations may define a computer-implemented method.
- the flowchart 1400 is described with reference to the system 100 of FIGS. 1 A through IF, the flowchart 1400 may be executed according to any of the figures discussed herein Tn some examples, the operations of the flowchart 1400 are executed by a network- enabled television device.
- Operation 1402 includes transmitting a request 127 for electronic programming guide data 144 to a media platform 104.
- Operation 1404 includes receiving electronic programming guide data 144 from the media platform 104, the electronic programming guide data 144 configured to cause the television device 152 to identify a plurality of navigation groups 140 in a first portion 199-1 of an electronic programming guide 145.
- Operation 1406 includes, in response to selection of a first user interface (UI) element 141 corresponding to a first navigation group 140 of the plurality of navigation groups 140, displaying programs 117 and television channels 118 corresponding to the first navigation group 140 in a second portion 199-2 of the electronic programming guide 145.
- Operation 1408 includes, in response to selection of a second UI element 141 corresponding to a second navigation group 140 of the plurality of navigation groups 140, displaying programs 117 and television channels 118 corresponding to the second navigation group 140 in the second portion 199-2 of the electronic programming guide 145.
- UI user interface
- the first navigation group includes a provider-specific group that identifies television channels associated with a specific provider
- the second navigation group includes a genre-based group that identifies television channels within a particular genre.
- the first navigation group includes a recent-channel group that identifies one or more recent televisions based on user activity associated with an account identifier
- the second navigation group includes a tuner-channel group that identifies a plurality of tuner-based television channels.
- the operations include receiving a selection to a program on the second portion of the electronic programming guide, the program being available to watch on a television channel associated with a first provider and a television channel associated with a second provider and displaying information that identifies the second provider as a primary watch entity.
- Various implementations of the systems and techniques described here can be realized in digital electronic circuitry, integrated circuitry, specially designed ASICs (application specific integrated circuits), computer hardware, firmware, software, and/or combinations thereof.
- ASICs application specific integrated circuits
- These various implementations can include implementation in one or more computer programs that are executable and/or interpretable on a programmable system including at least one programmable processor, which may be special or general purpose, coupled to receive data and instructions from, and to transmit data and instructions to, a storage system, at least one input device, and at least one output device.
- the systems and techniques described here can be implemented on a computer having a display device (e.g., a CRT (cathode ray tube) or LCD (liquid crystal display) monitor) for displaying information to the user and a keyboard and a pointing device (e.g., a mouse or a trackball) by which the user can provide input to the computer.
- a display device e.g., a CRT (cathode ray tube) or LCD (liquid crystal display) monitor
- a keyboard and a pointing device e.g., a mouse or a trackball
- Other kinds of devices can be used to provide for interaction with a user as well; for example, feedback provided to the user can be any form of sensory feedback (e.g., visual feedback, auditory feedback, or tactile feedback); and input from the user can be received in any form, including acoustic, speech, or tactile input.
- the systems and techniques described here can be implemented in a computing system that includes a back end component (e.g., as a data server), or that includes a middleware component (e.g., an application server), or that includes a front end component (e.g., a client computer having a graphical user interface or a Web browser through which a user can interact with an implementation of the systems and techniques described here), or any combination of such back end, middleware, or front end components.
- the components of the system can be interconnected by any form or non- transitory medium of digital data communication (e g., a communication network). Examples of communication networks include a local area network (“LAN”), a wide area network (“WAN”), and the Internet.
- LAN local area network
- WAN wide area network
- the Internet the global information network
- the computing system can include clients and servers.
- a client and server are generally remote from each other and typically interact through a communication network.
- the relationship of client and server arises by virtue of computer programs running on the respective computers and having a client-server relationship to each other.
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Signal Processing (AREA)
- Multimedia (AREA)
- Computer Graphics (AREA)
- Human Computer Interaction (AREA)
- Business, Economics & Management (AREA)
- Biodiversity & Conservation Biology (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- Life Sciences & Earth Sciences (AREA)
- Astronomy & Astrophysics (AREA)
- Ecology (AREA)
- Emergency Management (AREA)
- Environmental & Geological Engineering (AREA)
- Environmental Sciences (AREA)
- Remote Sensing (AREA)
- Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
Abstract
According to an aspect, a method includes receiving a request for electronic programming guide data from a television device, retrieving a list of television channels associated with a plurality of providers, constructing, using configuration data, a plurality of navigation groups, each of the plurality of navigation groups being a separate group of television channels, retrieving program data that identifies programs broadcasted by the list of television channels, and transmitting electronic programming guide data to the television device. The electronic programming guide data is configured to cause the television device to display a selectable user interface (UI) element corresponding to each of the plurality of navigation groups in a portion of an electronic programming guide.
Description
INTEGRATING LIVE TELEVISION CONTENT FROM MULTIPLE SOURCES IN AN ELECTRONIC PROGRAM GUIDE OF A MEDIA PLATFORM
BACKGROUND
[0001] A display device (e.g., a television) may display an electronic programming guide (EPG) for live television (e.g., linear programming). In some conventional examples, the EPG displays a list of channels from a single provider, e.g., a cable or satellite communication company. Also, a number of streaming applications (e.g., internet protocol (IP)-based providers), executable by the display device, may offer live television channels or offer a subscription package that includes. In some conventional examples, a user may have to switch between multiple EPGs to locate which television channel to watch on the display device.
SUMMARY
[0002] In some aspects, the techniques described herein relate to a method including: receiving, by a media platform, a request for electronic programming guide data from a television device; retrieving, from a media provider database, a list of television channels associated with an account identifier or a device identifier of the television device, the list of television channels being associated with a plurality of providers; constructing, using configuration data, a plurality of navigation groups, each of the plurality of navigation groups being a separate group of television channels; retrieving, from the media provider database, program data that identifies programs broadcasted by the list of television channels; and transmitting, by the media platform, the electronic programming guide data to the television device, the electronic programming guide data configured to cause the television device to display a selectable user interface (UI) element corresponding to each of the plurality of navigation groups in a first portion of an electronic programming guide such that selection of the selectable UI element is configured to cause the television device to display programs and television channels corresponding to a respective navigation group in a second portion of the electronic programming guide.
[0003] Tn some aspects, the techniques described herein relate to a non-transitory computer-readable medium storing executable instructions that when executed by at least one processor cause the at least one processor to execute operations, the operations including: receiving, by a media platform, a request for electronic programming guide data from a television device; retrieving, from a media provider database, a list of television channels associated with an account identifier or a device identifier of the television device, the list of television channels being associated with a plurality of providers; determining a plurality of navigation groups based on entitlement data associated with the account identifier, each of the plurality of navigation groups being a separate group of television channels; retrieving, from the media provider database, program data that identifies programs broadcasted by the list of television channels; and transmitting, by the media platform, the electronic programming guide data to the television device, the electronic programming guide data configured to cause the television device to display a selectable user interface (UI) element corresponding to each of the plurality of navigation groups in a first portion of an electronic programming guide such that selection of the selectable UI element is configured to cause the television device to display programs and television channels corresponding to a respective navigation group in a second portion of the electronic programming guide.
[0004] In some aspects, the techniques described herein relate to a television device including: at least one processor; and a non-transitory computer-readable medium storing executable instructions that cause the at least one processor to: transmit a request for electronic programming guide data to a media platform; receive electronic programming guide data from the media platform, the electronic programming guide data configured to cause the television device to identify a plurality of navigation groups in a first portion of an electronic programming guide; in response to selection of a first user interface (UI) element corresponding to a first navigation group of the plurality of navigation groups, display programs and television channels corresponding to the first navigation group in a second portion of the electronic programming guide; and in response to selection of a second UI element corresponding to a second navigation group of the plurality of navigation groups, display programs and television channels corresponding to the second navigation group in the second portion of the electronic programming guide.
[0005] The details of one or more implementations are set forth in the accompanying drawings and the description below. Other features will be apparent from the description and drawings, and from the claims.
BRIEF DESCRIPTION OF THE DRAWINGS
[0006] FIG. 1A illustrates a system configured to integrate television channels from multiple providers in a single electronic programming guide of a media platform according to an aspect.
[0007] FIG. IB illustrates an example of navigation groups according to an aspect.
[0008] FIG. 1C illustrates an electronic programming guide with navigation groups according to an aspect.
[0009] FIG. ID illustrates an example of a navigation group constructor according to an aspect.
[0010] FIG. IE illustrates examples of providers according to an aspect.
[0011] FIG. IF illustrates an example of channel and program data according to an aspect.
[0012] FIG. 2A illustrates a system for incorporating tuner-based content into a media platform according to an aspect.
[0013] FIG. 2B illustrates an example of a television device according to an aspect.
[0014] FIG. 3 illustrates an example of a user interface depicting an electronic programming guide with navigation groups according to an aspect.
[0015] FIG. 4 illustrates an example of a user interface depicting an electronic programming guide with navigation groups according to another aspect.
[0016] FIG. 5 illustrates an example of a user interface depicting an electronic programming guide with navigation groups according to another aspect.
[0017] FIG. 6 illustrates an example of a user interface depicting an electronic programming guide with navigation groups according to another aspect.
[0018] FIG 7 illustrates an example of a user interface depicting an electronic programming guide with navigation groups according to another aspect.
[0019] FIG. 8 illustrates an example of a user interface depicting an electronic programming guide with navigation groups according to another aspect.
[0020] FIGS. 9A through 9D illustrate examples of a navigation group section according to various aspects.
[0021] FIG. 10 illustrates an example of a user interface depicting an electronic programming guide with navigation groups according to another aspect.
[0022] FIG. 11 illustrates an example of a user interface depicting an electronic programming guide with navigation groups according to another aspect.
[0023] FIG. 12 illustrates an example of a user interface depicting an electronic programming guide with navigation groups according to another aspect.
[0024] FIG. 13 illustrates a flowchart depicting example operations for integrating television channels from multiple providers in a single electronic programming guide according to an aspect.
[0025] FIG. 14 illustrates a flowchart depicting example operations for integrating television channels from multiple providers in a single electronic programming guide according to another aspect.
DETAILED DESCRIPTION
[0026] This disclosure relates to a system configured to integrate live television content (e.g., linear programming) from multiple providers in a single electronic programming guide (EPG) of a media platform. The EPG may be an interactive television guide that uses media content from various databases (e.g., various providers) to bundle channels into navigation groups (e.g., based on type such as sports, news, etc.), deduplicate live television content from multiple sources, prioritize live television content predicted to be likely viewed by the user, and/or other features that organize live television content for browsing, searching, and/or viewing. The techniques described herein may provide technical benefits of fast content retrieval while reducing the amount of computer resources (e.g., central processing unit (CPU), memory) for providing an enriched EPG with live television content across a relatively large number of television channels associated with multiple providers. In some examples, the system uses an intelligent caching mechanism that retrieves (e.g., fetches, pre-fetches) portions of the EPG data over time in response to the detection of user interactions with the EPG, which may reduce memory usage, CPU usage, and/or server calls while reducing user perceived latency.
[0027] The multiple providers may include the media platform itself, multichannel video programming distributor( MVPD) provider(s), video on demand (VOD) provider(s), free ad-supported streaming television (FAST) provider(s), and/or tuner content. In order to manage the relatively large amount of television channels that can be delivered to the television device, the EPG may render selectable user interface (UI) elements corresponding to different navigation groups, where each navigation group is a separate grouping of television channels (e.g., a favorite-channel group, a recent-channel group, recommendation group(s), provider-specific group(s), a tuner-channel group, and/or genrebased group(s), etc.). In some examples, one or more navigation groups are included as part of a larger category referred to as a navigation block (e.g., your channels, free channels, free channels from applications, premium channels, built-in channels, etc.). In response to the selection of a particular UI element, the EPG may render information about television channels and programs that correspond to a respective navigation group. In response to the selection of another UI element, the EPG may be re-populated with television channels and programs that correspond to another navigation group.
[0028] In further detail, a television device may execute a media application configured to display a user interface (e.g., a single unified user interface) that identifies media content (e.g., live content and/or on-demand content, etc.) across multiple providers, and the user interface may include a live section (e.g., a live tab) configured to display an EPG for live television content. Tn some examples, the media platform is a specific provider that offers a live television subscription package. If a user account is associated with the live subscription package, the EPG may display the programs across time intervals for the television channels included as part of the live television subscription package. The television device may execute other streaming applications, some of which may offer live television channels and have their own in-app guide (e.g., their own EPG). In addition, the television device may have a tuner and/or antenna configured to display tuner-based television channels and the television device may have its own EPG to display the programming information for the tuner-based television channels. In some conventional approaches, a user may have to switch between multiple interfaces and/or in- app guides (e.g., multiple EPGs) to identify live television content, which may involve
launching multiple applications, navigating to their respective EPGs, and/or searching within multiple EPGs.
[0029] However, according to the techniques discussed herein, the system may enable an EPG (e.g., a single EPG) to manage live television content across multiple providers in a manner that can reduce the amount of computing resources for searching and identifying programs to watch on live television channels. In addition, the system may overcome technical problem(s) associated with integrating live television channels from multiple providers, including integrating tuner-based television channels in the platform’s EPG.
[0030] The media platform includes a live television engine configured to receive, over a network, a request for electronic programming guide data from a television device. In response to the request, the live television engine may retrieve, from a media provider database, a list of television channels associated with an account identifier or a device identifier of the television device. The account identifier may identify a user account associated with the media platform, and the user account may store entitlement data that identifies which providers the user account has access rights to. The live television engine may transmit a channel query to the media provider database, where the channel query may identify the providers associated with the user account, and the live television engine may receive a response that includes a list of television channels associated with the multiple providers.
[0031] The live television engine may construct (e.g., generate, define, etc.) a plurality of navigation groups, where each navigation group is a separate group of television channels. In some examples, constructing a plurality of navigation groups may include determining which navigation groups to include in the EPG based on entitlement data associated with the user account and/or identifying a list of television channels for a respective navigation group. In some examples, constructing a plurality of navigation groups includes determining a channel order (e.g., display order) for one or more of the navigation groups. In some examples, constructing a plurality of navigation groups includes determining a channel order for one or more navigation groups that is personalized for each user (e.g., a user account or a profile within a user account), which may include determining which navigation groups to display for a particular user and/or
the channel order of a respective navigation group. The navigation groups and the channel order may change over time based on user behavior and/or user preferences.
[0032] In some examples, the live television engine may rank the television channels within a particular navigation group using signals associated with the user account, signals representing device information and/or location of the television device, and/or signals associated with engagement metrics computed by the media platform. In some examples, constructing a plurality of navigation groups may include deduplicating television channels offered by multiple providers and ranking the providers such that a particular provider is identified as a primary watch entity. In some examples, the live television engine may generate the navigation groups based on configuration data stored at the live television engine and the configuration data may include the instructions that define the navigation groups. In some examples, an administrator may update the configuration data at the live television engine to implement a change to the navigation groups.
[0033] The navigation groups may include a plurality of genre-based groups that identify television channels by genre (e.g., news, ports, movies, entertainment, family, Spanish, and/or other, etc.). The list of television channels received from the media provider database may include information (e.g., genre tag) that identifies whether a particular television channel is associated with one or more genres. The genre tags may be stored in the media provider database. In some examples, the media platform may programmatically determine the genre tags based on analysis of channel and/or program data associated with the television channels and store the genre tags in the media provider database. In some examples, the genre tags are determined by an administrator of the media platform and are stored as metadata in the media provider database. The live television engine may use the genre tags to determine which television channel is included in which genre-based groups.
[0034] In some examples, the live television engine determines the genre-based groups for television channels associated with a particular set of providers. In some examples, free ad-supported streaming television (FAST) channels are provided by one or more providers (e.g., FAST-enabled providers), and the live television engine may determine which FAST channels are associated with which genre-based groups. In some
examples, only the FAST channels are included into the genre-based groups. Tn some examples, the genre-based groups include other television channels (e.g., non-FAST channels) such as premium channels (e g., part of a paid subscription) and/or tuner-based television channels.
[0035] The navigation groups may include a favorite-channel group that identifies one or more television channels marked or identified by a user as a favorite. For example, the media platform may store user activity information associated with a user account, and, in response to receipt that the user has interacted with a UI element to identify or favoritize a television channel, the media platform may update the user activity information to identify the television channel indicated as a favorite (e.g., a favorite channel). The live television engine may query the user activity information to identify the favorite channels. For example, the live television engine may receive the channel identifiers corresponding to the favorite channels for the particular user identifier, and the live television engine may include the favorite channels in the group list for the favorite-channel group.
[0036] The navigation groups may include a recent-channel group that identifies one or more recent television channels (e.g., recently watched television televisions). For example, the live television engine may identify the recent television channel(s) based on the user activity information associated with the account identifier. In response to certain user activity regarding live television content, the media platform may update the user activity information with information about the activity such as the channel identifier, the date/time, and/or the watch duration of the live content, etc. The live television engine may query the user activity information to identify one or more television channels that were watched in a previous time interval (e.g., the last twenty-four hours, the last week, the last month, etc.). The live television engine may receive the channel identifiers corresponding to the recent television channels for the particular user identifier, and the live television engine may include the recent television channels in the group list for the recent-channel group.
[0037] The navigation group may include a recommendation group that identifies a list of one or more recommended television channels. In some examples, the live television engine identifies a subset of television channels as recommendations to the user and includes the recommended television channels in the group list for the
recommendation group. Tn some examples, the live television engine may determine which television channels are the most watched television channels based on the user activity information associated with the user accounts on the media platform and include the most wanted television channels in the list for the recommendation group (e.g., the top five, ten, fifteen, most watched television channels). In some examples, the live television engine may identify a subset of television channels that the user is predicted as likely viewing (e.g., television channels that are personalized to the user account).
[0038] The navigation group may include one or more provider-specific groups that identify television channels associated with a specific-provider. In some examples, the configuration data may identify which providers have a provider-specific group. In some examples, the provider-specific groups may be premium channels associated with a paid subscription. In some examples, a separate provider-specific group is defined for providers offering free (or non-FAST) channels. In an example, the media platform may offer a live television subscription package, and, if the user account has subscribed to the live television subscription package, the live television engine may generate a provider-specific group for the media platform that identifies the television channels associated with the live television subscription package. Also, the television device may execute one or more other streaming applications associated with other providers, some of which may offer television channels. As such, the navigation groups may include one or more other provider-specific navigation groups.
[0039] The navigation groups may include a tuner-channel group that identifies tuner-based television channels associated with the user identifier or the device identifier of the television device. Tuner-based television channels include television channels broadcasted over the air using radio waves. The television device may include an antenna and a tuner, where the tuner is configured to operate with the antenna to execute a channel scan, which scans and detects tuner-based television channels across frequencies. The television device’s operating system may obtain tuner channel data from the tuner, where the tuner channel data may identify which tuner-based television channels are detected and available to be displayed on the television device. The live television engine may include a reconciliation engine configured to receive the tuner channel data, over a network, from the television device, and reconcile the tuner-based television channels with information
from the media provider database such that the tuner-based television channels are integrated into the media platform. When tuner-based television channels are reconciled by the reconciliation engine, the live television engine may generate a tuner-channel group that identifies the tuner-based television channels associated with the account identifier or the device identifier.
[0040] In some examples, the navigation groups include a local group of television channels (e.g., “local to you”), which may be personalized from the physical location of the television device (e.g., determined from an IP address and/or other signal(s)). For example, a user watching from Milwaukee may view Milwaukee-oriented television channels. The local group of television channels may include a subset of the tuner-based television channels and/or other television channels determined to be associated with a location of the television device.
[0041] In some examples, within one or more navigation groups, the live television engine may determine a display order for the television channels based on signals associated with the user account, device information and/or location of the television device, and/or signals associated with engagement metrics computed by the media platform. For example, using the signals, the live television engine may compute a ranking score for each television channel and may determine the display order based on the ranking score (e.g., from highest to lowest). In some examples, the display order is predetermined and updated by the administrator of the media platform.
[0042] In some examples, the live television engine may deduplicate television channels associated with multiple providers. For example, the live television engine may determine that a first television channel associated with a first provider and a second television channel associated with a second provider relate to the same television channel, and, if so, may merge the first television channel and the second television channel into a single television channel. In some examples, the live television engine may compute ranking information that ranks the multiple providers (e.g., the first provider, the second provider) according to a plurality of signals. In response to the selection of the single (e.g., merged) television channel, the EPG may display the providers according to the ranking information. In some examples, if the second provider is ranked higher than the first provider, the second provider may be identified as a primary watch entity on the EPG.
[0043] Tn response to the navigation groups being constructed, the live television engine may retrieve, from the media provider database, program data that identifies programs broadcasted by the list of television channels. The live television engine may generate EPG data that includes information about the navigation groups and the programs, and transmit, over the network, the EPG data to the television device. The EPG data may cause the television device to display a selectable UI element for each of the navigation groups such that selection of the selectable UI element causes the television device to display programs and television channels corresponding to a respective navigation group in the EPG. For example, in response to selection of a first UI element corresponding to a first navigation group, the television device may display programs and television channels corresponding to the first navigation group in the EPG. In response to selection of a second UI element corresponding to a second navigation group, the television device may display programs and television channels corresponding to the second navigation group in the EPG. These and other features are further explained with reference to the figures.
[0044] FIGS. 1A through IF illustrate a system 100 configured to integrate television channels 118 from multiple providers 124 in a single electronic programming guide (EPG) 145 of a media platform 104. The EPG 145 may be an interactive television guide that uses media content 106 from multiple providers 124 to group television channels 118 into navigation groups 140, deduplicate television channels 118 from two or more providers 124, prioritize television channels 1 18 that are predicted to be likely watched by the user, and/or other features that organize television channels 118 for browsing, searching, and/or viewing. The techniques described herein may provide technical benefits of fast content retrieval while reducing the amount of computer resources (e.g., central processing unit (CPU), memory) for rendering an enriched EPG 145 with program data 116 of television channels 118 associated with multiple providers 124. In some examples, the system 100 uses a caching mechanism (e.g., an intelligent retrieval and caching mechanism) that retrieves (e g., fetches, pre-fetches) portions of the EPG data 144 over time in response to the detection of user interactions with the EPG 145, which may reduce memory usage, CPU usage, and/or server calls while reducing user perceived latency.
[0045] The system 100 includes a television device 152 configured to execute a media application 157 and one or more server computer(s) 102 configured to execute a media platform 104 to identify and provide media content 106 (e.g., live television content, on-demand content, etc.) for display and selection in a user interface 186 of the media application 157. The user interface 186 may be rendered on a display 156 of the television device 152. The media application 157 (e.g., in conjunction with the media platform 104 may aggregate (e g., combine, assemble, collect, etc.) information about media content 106 available for viewing (e.g., streaming) from multiple streaming platforms 167 (including the media platform 104 itself) and present the information in a user interface 186 (e.g., a single, unified user interface) so that a user can identify and/or search media content 106 across different streaming platforms 167 (e.g., without having to search within each native application 161). The media application 157 may render an electronic programing guide (EPG) 145 in the user interface 186. In some examples, the user interface 186 includes a tabbed interface, where one of the tabs (e.g., live tab) displays the EPG 145 for live television content across multiple providers 124.
[0046] The television device 152 may be a network-enabled display device configured to connect to the network 150. In some examples, the television device 152 includes a television (e.g., a smart television). The television device 152 includes a tuner 154 and an antenna 155. In some examples, the tuner 154 includes the antenna 155 (e.g., the antenna 155 is integrated into the tuner 154). The antenna 155 may receive radio waves from a broadcasting station. The tuner 154 may process (e.g., interpret) the radio waves received by the antenna 155 to generate a digital signal capable of being displayed on the television device 152.
[0047] The television device 152 includes one or more processors, one or more memory devices, and an operating system 151 configured to execute (or assist with executing) one or more native applications 161. The native applications 161 may include the media application 157 configured to communicate, over the network, 150, with the media platform 104. In some examples, the media application 157 is a program that is part of the operating system 151. In some examples, the media application 157 is a separate standalone application that is downloaded and installed on the operating system 151. In some examples, the native applications 161 includes a media player (e.g., media player 259
of FIG. 2B), which, when launched, is configured to render content received via the tuner 154 and/or antenna 155.
[0048] In some examples, the media application 157 may execute operation(s) discussed with reference to the operating system 151 (and/or vice versa). In some examples, the television device 152 is not a smart television, but is converted to a smart television when connected to a casting device, where the casting device is configured to connect to the network 150 and execute an operating system 151 configured to execute native applications 161, including the media application 157. In some examples, the operating system 151 is a browser application. A browser application is a web browser configured to access information on the Internet and may launch one or more browser tabs in the context of one or more browser windows. In some examples, the operating system 151 is a Linux -based operating system. In some examples, the operating system 151 is a mobile operating system that is also configured to execute on smaller devices (e.g., smartphones, tablets, wearables, etc.).
[0049] In some examples, the media platform 104 is a specific provider 124 that offers a live television subscription package. If a user account 136 is associated with the live subscription package of the media platform 104, the EPG 145 may identify programs 117 across time intervals for television channels 118 included as part of the live television subscription package. Also, the television device 152 may execute other native applications 161 (e g , streaming applications), some of which may offer live television channels and have their own in-app guide (e.g., their own EPG). In some examples, the native applications 161 are client applications configured to receive streaming content from the streaming platforms 167.
[0050] In addition, the television device 152 may have a tuner 154 and/or an antenna 155 configured to display tuner-based television channels 120 and the television device 152 may have its own guide to display programming information for the tunerbased television channels 120. In some conventional approaches, a user may have to switch between multiple interfaces and/or in-app guides to identify television content, which may involve launching multiple native applications 161, navigating to their respective in-app television guide, and/or searching within multiple guides.
[0051] However, according to the techniques discussed herein, the system 100 may enable an EPG 145 (e.g., a single EPG) that organizes television channels 118 across multiple providers 124 in a manner that can reduce the amount of computing resources for searching and identifying programs 117 to watch on live television channels 118. In addition, the system 100 may overcome technical problem(s) associated with integrating live television channels 118 from multiple providers 124, including integrating tuner-based television channels 120 in the platform’s EPG 145.
[0052] In order to manage the relatively large amount of television channels 118 that can be delivered to the television device 152, the EPG 145 may render selectable user interface (UI) elements 141 corresponding to different navigation groups 140, where each navigation group 140 is a separate grouping of television channels 118. As shown in FIG. IB, the navigation groups 140 may include as a favorite-channel group 140a, a recentchannel group 140b, a recommendation group 140c, provider-specific group(s) 140d, a tuner-channel group 140e, and/or genre-based group(s) 140f. In some examples, one or more navigation groups 140 are included as part of a larger category referred to as a navigation block (e.g., your channels, free channels, free channels from applications, premium channels, built-in channels, etc.). In response to the selection of a particular UI element 141, the EPG 145 may render information about television channels 118 and programs 117 that correspond to a respective navigation group 140. In response to the selection of another UI element 141, the EPG 145 may be re-populated with television channels 118 and programs 117 that correspond to another navigation group 140.
[0053] In further detail, the media platform 104 includes a live television engine 130 configured to receive, over a network 150, a request 127 for electronic programming guide (EPG) data 144 from a television device 152. In response to the request 127, the live television engine 130 retrieves, from a media provider database 108, a list 166 of television channels 118 associated with a user account 136 (e.g., an account identifier) and/or a device identifier of the television device 152. The account identifier may identify a user account 136 associated with the media platform 104.
[0054] The media provider database 108 is configured to store information about the media content 106 available for selection from the user interface 186, including the EPG 145. The media provider database 108 may store information about television
channels 118 from multiple providers 124. The providers 124 may include the media platform 104 itself and one or more other streaming platforms 167. Also, tuner-based television channels 120 that are available on a particular television device 152 may be considered a separate provider 124. The providers 124 may include a variety of different types of providers. For example, as shown in FIG. IE, the providers 124 may include multichannel video programming distributor (MVPD) provider(s) 124a, video on demand (VOD) provider(s) 124b, free ad-supported streaming television (FAST) provider(s) 124c, and/or tuner source(s) 124d for tuner-based television channels 120. A tuner source 124d may be a particular television device 152. The media platform 104 may be an example of a MVPD provider 124a and/or a VOD provider 124b.
[0055] The server-based television channels 122 include television channels streamed over a network 150 such as the Internet. A server-based television channel 122 may be digital data from a content provider that is streamed using an internet protocol (IP) transmission mechanism. A server-based television channel 122 may represent a broadcasting order of programs (e.g., live or preprogrammed) by a content provider in which the programs are streamed over the network 150 according to the broadcasting order via the network 150. In some examples, the programs of a server-based television channel 122 are not video-on-demand programs. Selecting or joining a server-based television channel 122 from the user interface 186 may initiate the display of a current program at a current time in the broadcasting order. Tn some examples, a user may rewind a program of the server-based television channel 122 (or rewind to a previous program) or cause a program of the server-based television channel 122 to be recorded and later replayed as a video-on-demand program. The server-based television channels 122 may be associated with MVPD provider(s) 124a, VOD provider(s) 124b, and/or FAST provider(s) 124c. In some examples, the server-based television channels 122 include FAST channels, which are television channels 118 provided by one or more FAST providers 124c.
[0056] The tuner-based television channels 120 include television channels broadcasted over the air using radio waves. A tuner-based television channel 120 may be a terrestrial frequency over which a television station broadcasts audio and video data via radio waves to television receivers. A tuner-based television channel 120 may represent a broadcasting order of programs 117 (e.g., live or preprogramed) by a content provider in
which the programs 1 17 are broadcasted via radio waves according to the broadcasting order. Selecting or joining a tuner-based television channel 120 from the user interface 186 may initiate the display of a current program at a current time in the broadcasting order.
[0057] The media content 106 include channel and program data 112 for a plurality of television channels 118, including the server-based television channels 122 and the tuner-based television channels 120. The channel and program data 112 may represent a relatively large set of data that provides information for many television channels 118 that can be viewed by a user (e.g., across one or multiple countries and across multiple providers 124). The channel and program data 112 includes channel data 114 that includes information about the television channels 118 and program data 116 that includes information about programs 117 that are broadcasted by the television channels 118. In some examples, the media platform 104 may receive (e.g., periodically receive) the channel and program data 112 from an external source and store (e.g., update) the channel and program data 112 in the media provider database 108.
[0058] As shown in FIG. IF, the media provider database 108 may store data relating to the television channels 118 (e.g., both the server-based television channels 122 and the tuner-based television channels 120). A television channel 118 may be a service that provides programming and/or video content according to a programming schedule. A television channel 1 18 may be a physical or virtual channel. For example, for each television channel 118, the channel data 114 may include an identifier 171 that identifies a respective television channel 118 in the media provider database 108, a channel number 111, a channel name 113, a channel image 121 (e.g., a logo or image associated with the television channel 118), and/or other metadata 123 about the television channel 118 such as whether the television channel 118 is a server-based television channel 122 or a tunerbased television channel 120. In some examples, the metadata 123 includes one or more genre tags that characterize one or more genres of a respective television channel 118. Also, for each television channel 118, the media provider database 108 may include program data 116. The program data 116 may include information that identifies a current program 117a and one or more future programs 117b. For each program 117, the program
data 1 16 may include a program name 131 , a description 133, an air date 147, a maturity rating 137, and/or a program image 139.
[0059] In some examples, the media content 106 stored in the media provider database 108 may include other media content such as media content items offered by one or more streaming platforms 167, which may include on-demand content items (e.g., nonlive content) and/or live content associated with one or more television channels 118. A media content item may be a program, show, or a movie, etc., which is available for selection from the user interface 186. In some examples, the media content 106 is referred to as media content items (e.g., individual programs broadcasted or offered by television channels 118 or streaming platforms 167). For example, each media content item may be a program 117 (e g., a television show, a movie, a live broadcast, etc.) from a tuner-based television channel 120, a server-based television channel 122, the media platform 104, or another streaming platform 167. Instead of searching for media content items on a first native application and media content items on a second native application, the media application 157 may combine the media content items together in one interface (e.g., user interface 186) so that a user can search across multiple streaming platforms 167 at once.
[0060] In some examples, a media content item may correspond to a digital video file, which may be stored on the streaming platforms 167 (including the media platform 104) and/or the television device 152. In some examples, the media platform 104 is also considered a streaming platform 167, which may store and provide digital video files for streaming or downloading. The digital video file may include video and/or audio data that corresponds to a particular media content item. In some examples, the media platform 104 is configured to communicate with the streaming platforms 167 to identify which media content 106 is available on the streaming platforms 167 and may update the media provider database 108 to identify the media content items offered by the streaming platforms 167.
[0061] As indicated above, the live television engine 130 may receive a request 127 for EPG data 144 from the television device 152. In some examples, the request 127 may include an account identifier and/or a device identifier of the television device 152. The account identifier identifies a user account 136. The device identifier identifies the television device 152. In some examples, the request 127 is generated in response to user
selection on the user interface 186 (e.g., the user selects the live tab or the EPG 145). Tn response to the request 127, the live television engine 130 retrieves, from the media provider database 108, a list 166 of television channels 118 associated with the account identifier and/or the device identifier.
[0062] A user account 136 may store entitlement data 125 that identifies which providers 124 that the user account 136 has access rights to view content. In some examples, the access rights are determined based on the user account 136 (e.g., whether the user has subscribed to a live subscription package), which native applications 161 (e.g., streaming applications) are installed on the television device 152 and/or if the user has accessed (e.g., logged-into) a user account associated with those native applications 161. The live television engine 130 may identify the providers 124 associated with the user account 136 based on the entitlement data 125 and then retrieve a list 166 of television channels 118 associated with the providers 124. In some examples, the user account 136 may include one or more profiles corresponding to users associated with the user account 136. The user account 136 may store information about the profiles.
[0063] In further detail, the live television engine 130 may transmit a channel query 160, via one or more application programming interface(s) 138, to the media provider database 108. In some examples, the channel query 160 may identify the providers 124 associated with the user account 136. The live television engine 130 may receive a response 164 that includes a list 166 of television channels 118 associated with the providers 124. In some examples, the list 166 may be quite large, e.g., identifying many television channels 118. In some examples, the list 166 includes FAST channels provided by FAST providers 124c, and, in some examples, television channels 118 provided by MVPD provider(s) 124a and/or VOD provider(s) 124b in which the user account 136 has access rights. In some examples, the list 166 may identify hundreds of television channels 118. In some examples, the list 166 includes identifiers 171 of the television channels 118. In some examples, the list 166 includes the identifiers 171 and one or more other portions of the channel data 114 for a respective television channel 118 such as the channel number 111, channel name 113, the channel image 121, and/or the metadata 123.
[0064] Tn some examples, the list 166 also identifies tuner-based television channels 120 that can be viewed on the television device 152. For example, the live television engine 130 may include a reconciliation engine 115 configured to determine and identify which tuner-based television channels 118 are available on the television device 152 and update the entitlement data 125 to indicate that the user account 136 or the television device 152 has access rights to those tuner-based television channels 120. If the television device 152 or the user account 136 is associated with reconciled tuner-based television channels 120, the list 166 may also identify the tuner-based television channels 120. The details of the reconciliation engine 115 are further explained with reference to FIGS. 2 A and 2B.
[0065] The live television engine 130 includes a navigation group constructor 134 configured to construct (e.g., generate, define, etc.) a plurality of navigation groups 140, where each navigation group 140 is a separate group of television channels 118. In some examples, a navigation group 140 includes a navigation group identifier that uniquely identifies the navigation group 140. In some examples, one or more navigation groups 140 are included as part of a larger category referred to as a navigation block (e.g., your channels, free channels, free channels from applications, premium channels, built-in channels, etc.). In some examples, a navigation block includes a navigation block identifier that uniquely identifies the navigation block. The navigation block may also identify one or more navigation group identifiers for the navigation groups 140 that belong to a respective navigation block.
[0066] The navigation group constructor 134 may construct the navigation groups 140 for the user account 136 according to configuration data 135 stored at the live television engine 130. The configuration data 135 may include instructions that define the navigation groups 140 and/or the navigation blocks. In some examples, the configuration data 135 defines the number and/or type of navigation group 140, and, in some examples, which navigation group 140 is assigned to which navigation block. In some examples, the configuration data 135 may define predetermined navigation groups 140 that are the same across user accounts 136, and, in some examples, may include one or more additional navigation groups 140 depending on which provider(s) 124 are associated with the user account 136 (e.g., has access rights to). In some examples, the navigation group
constructor 134 determines which navigation groups 140 to include in the EPG 145 based on the entitlement data 125 associated with the user account 136. As such, the number of navigation groups 140 identified on the EPG 145 may be user account specific.
[0067] In some examples, the navigation group constructor 134 may determine a display order 189 for one or more navigation groups 140 that is personalized for each user (e.g., a user account 136 or a profile within a user account 136). In some examples, the navigation group constructor 134 may determine which navigation blocks to display for a particular user, which navigation groups 140 to include within a respective navigation block for a particular user, which navigation groups 140 to display for a particular user, and/or the display order 189 of a respective navigation group. The navigation groups 140 and the display order 189 may change over time based on user behavior and/or user preferences stored in the user accounts 136.
[0068] The navigation group constructor 134 may receive the list 166 of television channels 118 (and, in some examples, the channel data 114 associated with each television channel 118), and, for at least some of the television channels 118 on the list 166 (or all of them), assign a television channel 118 to a navigation group 140 based on the channel data 114 and/or the user activity information 146. In other words, the navigation group constructor 134 may determine a group list 165 (e g., a navigation group list) of television channels 118 for a respective navigation group 140, where the group list 165 is a portion of the television channels 118 included on the list 166 received from the media provider database 108. The group list 165 may include the identifiers 171 of television channels 118 associated with a respective navigation group 140, and, some examples, the channel data 114 of a respective television channel 118.
[0069] As shown in FIG. IB, the navigation groups 140 may include a favoritechannel group 140a that identifies one or more television channels 118 marked or identified by a user as a favorite (e.g., favorite channels 148). The favorite channels 148 may include one or more of the server-based television channels 122 and/or the tunerbased television channels 120. The media platform 104 may store user activity information 146 associated with a user account 136, and, in response to receipt that the user has interacted with a UI element to identify or favoritize a television channel 118, the
media platform 104 may update the user activity information 146 to identify the television channel 118 indicated as a favorite (e.g., a favorite channel 148).
[0070] In some examples, the user can favoritize a television channel 118 from the EPG 145 (e.g., from the channel guide). In some examples, the user interface 186 is configured to enable the user to favoritize a television channel 118 via a UI informational object (e.g., a card, tile, etc.). A UI informational object may be used to display additional information about the television channel 118 and provide the user with one or more menu options. In some examples, a user may select a program 117 or a television channel 118 from the EPG 145, which may cause the media application 157 to render a UI informational object with information about the television channel 118. In some examples, the user may perform an action with respect to the UI object, which causes the UI informational object to display selectable menu option(s) that include an option to favoritize the television channel 118. In some examples, the action includes a long-press directional pad (D-pad) select on the UI informational object, which causes the display of additional options including the option to favoritize the television channel 118. Once favoritized, the television channel 118 is included as part of the favorite-channel group 140b.
[0071] The navigation group constructor 134 may query the user activity information 146 to identify the favorite channels 148. For example, the navigation group constructor 134 may receive the identifiers 171 corresponding to the favorite channels 148 for the particular user account 136, and the navigation group constructor 134 may include the favorite channels 148 in the group list 165 for the favorite-channel group 140a. In some examples, the same television channel 118 is associated with multiple providers. If a user has identified a television channel 118 associated with one provider 124 as a favorite channel 148, the navigation group constructor 134 may identify the same television channel 118 but associated with another provider 124 as also a favorite channel 148.
[0072] In some examples, the navigation group constructor 134 may operate in conjunction with a recommendation engine 191 to automatically select a set of television channels 118 that are predicted to be favorites for a user account 136 using the information from the user activity information 146. For example, the navigation group constructor 134 and/or the recommendation engine 191 may identify a subset of the television channels
118 as favorites based at least in part on information representing the user's interests and activities (e.g., the user's search queries, search results, previous watch history, purchase history, application usage history, application installation history, user actions on the network-connected television device, physical activities of the user, etc.). In some examples, the user may accept or reject the recommended favorites, which, when accepted, the live television engine 130 may add the accepted television channel 118 as a favorite channel 148.
[0073] The navigation groups 140 may include a recent-channel group 140b that identifies one or more recent television channels 149 (e.g., recently watched television channels 118). In some examples, the recent-channel group 140b may include any television channel 118 selected from the EPG 145 in the last time interval (e.g., last thirty days, etc.). In some examples, the recent-channel group 140b may include a television channel 118 selected from a user interface of a native application 161. In some examples, the recent-channel group 140b may include a television channel 118 selected from a voice command received via the television device 152 or another device (e.g., smart speaker, smart phone) (e.g., play channel A on television device A). The recent channels 149 may include one or more of the server-based television channels 122 and/or the tuner-based television channels 120.
[0074] The navigation group constructor 134 may identify the recent television channel(s) 149 based on the user activity information 146 associated with the user account 136. In response to certain user activity regarding live content, the media platform 104 may update the user activity information 146 with information about the activity such as the identifier 171, the date/time, and/or the watch duration of the television channel 118, etc. The navigation group constructor 134 may query the user activity information 146 to identify one or more television channels that were watched in a previous time interval (e.g., the last twenty-four hours, the last week, the last month, etc.). The navigation group constructor 134 may receive the identifiers 171 corresponding to the recent channels 149 for the particular user account 136, and the navigation group constructor 134 may include the recent channels 149 in the group list 165 for the recent-channel group 140b.
[0075] The navigation groups 140 may include a recommendation group 140c that identifies a list of one or more recommended channels 193. The recommended channels
193 may include one or more of the server-based television channels 122 and/or the tunerbased television channels 120. In some examples, the navigation group constructor 134 includes or communicates with a recommendation engine 191 configured to a subset of television channels 118 as recommendations to the user account 136. The navigation group constructor 134 may include the recommended channels 193 in the group list 165 for the recommendation group 140c. In some examples, the recommended channels 193 are not personalized to the user account 136. For example, the recommendation engine 191 may determine which television channels 118 are the most watched television channels based on the user activity information 146 associated with the user accounts 136 on the media platform 104 and include the most watched television channels in the group list 165 for the recommendation group 140c (e.g., the top five, ten, fifteen, most watched television channels).
[0076] In some examples, the recommended channels 193 are personalized to the user account 136. For example, the recommendation engine 191 may identify a subset of television channels 118 that the user is predicted as likely viewing (e.g., television channels 118 that are personalized to the user account 136). For example, the recommendation engine 191 may identify a subset of the television channels 118 as recommendations based at least in part on information representing the user's interests and activities (e.g., the user's search queries, search results, previous watch history, purchase history, application usage history, application installation history, user actions on the network-connected television device, physical activities of the user, etc.). In some examples, the media application 157 may be associated with a user account 136, and the user account 136 may store the information representing the user’ s interests and activities in the user activity information 146, and the recommendation engine 191 may use this information to select recommended channels 193.
[0077] It is noted that a user of the media platform 104 and/or media application 157 may be provided with controls allowing the user to make an election as to both if and when the system 100 may enable the collection of information representing the user's interests and activities. In addition, certain data may be treated in one or more ways before it is stored or used, so that personally identifiable information is removed. For example, a user’s identity may be treated so that no personally identifiable information can be
determined for the user, or a user’s geographic location may be generalized where location information is obtained (such as to a city, ZIP code, or state level), so that a particular location of a user cannot be determined. Thus, the user of the media application 157 may have control over what information is collected about the user, how that information is used, and what information is provided to the user and/or to the server computer 102.
[0078] The navigation groups 140 may include one or more provider-specific groups 140d that identify television channels 118 associated with a specific provider 124. In some examples, the configuration data 135 may identify which providers 124 have a provider-specific group 140d. In some examples, the provider-specific groups 140d may be premium channels associated with a paid subscription. In some examples, a separate provider-specific group 140d is defined for providers 124 offering subscription or paid content. The navigation group constructor 134 may determine whether the user account 136 has access to a specific provider 124, and, if so, may include a provider-specific group 140d that identifies television channels 118 provided by the specific provider 124.
[0079] In other words, the navigation group constructor 134 may determine whether the specific provider 124 is defined in the configuration data 135 as having their own navigation group 140, and, if so, may include a provider-specific group 140d if the user account 136 has access rights to the specific provider 124. The specific provider 124 may be a MVPD provider 124a or a VOD provider 124b. In an example, the media platform 104 may offer a live television subscription package, and, if the user account 136 has subscribed to the live television subscription package, the navigation group constructor 134 may generate a provider-specific group 140d for the media platform 104 that identifies the television channels 118 associated with the live television subscription package. Also, the television device 152 may execute one or more other streaming applications (e.g., native applications 161) associated with other providers 124, some of which may offer television channels 118. As such, the navigation groups 140 may include one or more other provider-specific groups 140d associated with the other providers 124. In some examples, the navigation group constructor 134 may organize the television channels 118 in a provider-specific group 140d based on categories and/or genres. For example, for a particular provider-specific group 140d, the navigation group constructor 134 may categorize the television channels 118 into further subgroups such as genre-based groups
(e g., sports, news, popular, etc.) and/or other categories such as popular channels within that provider-specific group 140d and/or recommended channels within that providerspecific group 140d. The subgroups of a provider-specific group 140d may include any of the genres (e.g., categories) discussed with reference to genre-based groups 140f, and, in some examples, may include other groups such as a recent channel group (e.g., providing the recently-viewed channels within that provider-specific group 140d), and/or a recommendation group (e.g., providing recommended channels within that providerspecific group 140d), etc.
[0080] The navigation groups 140 may include a tuner-channel group 140e that identifies tuner-based television channels 120 associated with the user account 136 or the television device 152. In some examples, the tuner-channel group 140e is an example of a provider-specific group 140d, where the provider 124 is a television device 152. Tunerbased television channels 120 include television channels broadcasted over the air using radio waves. The tuner 154 is configured to operate with the antenna 155 to execute a channel scan, which scans and detects tuner-based television channels 120 across frequencies. The television device’s operating system 151 may obtain tuner channel data (e.g., tuner channel data 232 of FIG. 2A) from the tuner 154, where the tuner channel data may identify which tuner-based television channels are detected and available to be displayed on the television device 152. The reconciliation engine 115 is configured to receive the tuner channel data, over the network 150, from the television device 152, and reconcile the tuner-based television channels 120 with information from the media provider database 108 such that the tuner-based television channels 120 are integrated into the media platform 104. When tuner-based television channels 120 are reconciled by the reconciliation engine 115, the navigation group constructor 134 may generate a tunerchannel group 140e that identifies the tuner-based television channels 120 associated with the user account 136 or the television device 152.
[0081] The navigation groups 140 may include a plurality of genre-based groups 140f that identifies television channels 118 by genre (e.g., news, ports, movies, entertainment, family, Spanish, and/or other). The list 166 of television channels 118 received from the media provider database 108 may include information (e.g., genre tag) that identifies whether a particular television channel 118 is associated with one or more
genres. Tn some examples, the genre information or tags are included as part of the metadata 123. The genre tags may be stored in the media provider database 108. In some examples, the media platform 104 may programmatically determine the genre tags based on analysis of the channel and program data 112 associated with the television channels 118 and store the genre tags in the media provider database 108 as metadata 123. In some examples, the genre tags are determined by an administrator of the media platform 104 and are stored as metadata 123 in the media provider database 108. The navigation group constructor 134 may use the genre tags to determine which television channel 118 is included in which genre-based groups 140f.
[0082] In some examples, the navigation group constructor 134 determines the genre-based groups 140f for television channels 118 associated with a particular set of providers 124. In some examples, FAST channels are provided by one or more providers (e.g., FAST-enabled providers), and the navigation group constructor 134 may determine which FAST channels are associated with which genre-based groups 140f. In some examples, only the FAST channels are included into the genre-based groups 140f. In some examples, the genre-based groups 140f include other television channels 118 (e.g., non- FAST channels) such as premium channels (e.g., part of a paid subscription) or tunerbased television channels 120.
[0083] In some examples, a particular genre-based group 140f may be initially limited to a predetermined number (e g., threshold number) of television channels 1 18 related to that genre. For example, in response to the user selecting a genre-based group 140f relating to crime channels, the EPG 145 may display the EPG data 144 for a threshold number of crime channels (e.g., five crime channels, ten crime channels, fifteen crime channels, etc.). In some examples, the media application 157 causes the EPG 145 to display a selectable UI element (e.g., a “see more” button), which, when selected, causes the EPG 145 to expand the EPG data 144 for all of the crime channels (or include the next X number of crime channels). Although the above example uses a particular genre-based group 140f, the features relating to the selectable UI element (e.g., a “see more” button) may be applied to any of the navigation groups 140.
[0084] In some examples, the navigation groups include a local group of television channels 118 (e.g., “local to you”), which may be personalized from the physical location
of the television device 152 (e.g., determined from an TP address and/or other signal(s)). For example, a user watching from Milwaukee may view Milwaukee-oriented television channels. The local group of television channels 118 may include a subset of the tunerbased television channels 122 and/or other television channels (e.g., server-based television channels 122) determined to be associated with a location of the television device.
[0085] In some examples, as shown in FIG. ID, the navigation group constructor 134 includes a channel order engine 170. The channel order engine 170 may determine a display order 189 for a group list 165 for one or more navigation groups 140. The display order 189 identifies a sequence of television channels 118 for a particular navigation group 140. The channel order engine 170 may determine the display order 189 for the television channels 118 within a particular navigation group 140 based on signals associated with the user account 136 and/or signals associated with engagement metrics computed by the media platform 104.
[0086] In some examples, the navigation group constructor 134 may determine a display order 189 for one or more navigation groups 140 that is personalized for each user (e.g., a user account 136 or a profile within a user account 136). In some examples, the navigation group constructor 134 may determine which navigation blocks to display for a particular user, which navigation groups 140 to include within a respective navigation block for a particular user, which navigation groups 140 to display for a particular user, and/or the display order 189 of a respective navigation group. The navigation groups 140 and the display order 189 may change over time based on user behavior and/or user preferences stored in the user accounts 136.
[0087] In some examples, for one or more of the genre-based groups 140f, the channel order engine 170 may rank the television channels based on popularity metrics and/or watch time metrics. In some examples, the channel order engine 170 may periodically update the display order 189. For example, using the signals, the channel order engine 170 may compute a ranking score for each television channel 118 in a group list 165 and may determine the display order 189 based on the ranking score (e.g., from highest to lowest). In some examples, the display order 189 is predetermined and/or updated by the administrator of the media platform 104 and included in the configuration
data 135. Tn some examples, the channel order engine 170 determines a display order 189 for the genre-based groups 140f. In some examples, the channel order engine 170 determines a display order 189 for the tuner-channel group 140e. In some examples, the channel order engine 170 determines a display order 189 for the recommendation group 140c.
[0088] In some examples, the navigation group constructor 134 includes a deduplication engine 172 configured to deduplicate television channels 118 associated with multiple providers 124. In some examples, the deduplication engine 172 may deduplicate television channels 118 associated with multiple providers 124 for a particular navigation group 140 (or multiple navigation groups 140) and/or navigation groups 140 belonging to a particular navigation block. In some examples, the deduplication engine 172 may deduplicate television channels 118 associated with multiple providers 124 within a particular navigation group 140. In some examples, the deduplication engine 172 may deduplicate television channels 118 associated with multiple providers 124 from the genrebased group(s) 140f (e.g., free channels from app block). For example, a particular television channel 118 related to sports may be offered by multiple providers 124, and the deduplication engine 172 may merge those television channels 118 into a single television channel 118 such that the television channel 118 does not appear multiple times in the group list 165 for the sports-genre. In some examples, the deduplication engine 172 may deduplicate television channels 1 18 from one or more provider-specific group(s) 140d.
[0089] For example, a provider 124 may offer a television channel 118 that is also offered by another provider 124. In some examples, a portion of the FAST channels from one provider may be the same as a portion of the FAST channels provided by another provider. The deduplication engine 172 may determine that a television channel 118a associated with a provider 124a and a television channel 118b associated with a provider 124b relate to the same television channel 118, and, if so, may merge the television channel 118a and the television channel 118b into a single television channel 118.
[0090] In some examples, the deduplication engine 172 determines that the identifiers 171 (and/or the channel names 113) associated with the television channel 118a and the television channel 118b are the same, and, if so, determines to merge the television channel 118a and the television channel 118b. In some examples, the deduplication engine
172 obtains program data 1 16 associated with the television channel 118a and the television channel 118a, and if the program data 116 for the television channel 118a substantially corresponds to the program data 116 for the television channel 118b, the deduplication engine 172 may determine that the channels are duplicates. In some examples, the merging includes selecting one of the television channels 118a and the television channel 118b and discarding the other channel.
[0091] In some examples, the navigation group constructor 134 includes a watch ranking engine 177 configured to rank providers 124 that offer the same television channel 118. For example, the watch ranking engine 177 may compute ranking information 176 that ranks the multiple providers (e.g., the provider 124a, the provider 124b) according to one or more of a plurality of signals 178.
[0092] The signals 178 may include a user-provided search signal, a user preference signal, a cost signal, and/or an installation signal. The user-provided search signal may represent whether the user has specifically searched for a particular provider (e.g., “television channel A on provider A” via a search query or voice command). The user preference signal may represent whether the user has overridden a default ranking or setting. The cost signal may represent a relative cost to the user, e.g., a provider that offers the television channel for free may be ranked higher than a provider that offers the television channel if the user would have to sign-up for the service or pay a subscription. The installation signal may represent whether a native application 161 associated with the provider has been installed, e.g., native applications 161 that are already installed on the television device 152 are ranked higher than native applications 161 that require installation. The signals 178 may include other signal such as whether the corresponding native application 161 has been initialed (e.g., warmed-up) (e.g., initialized native applications 161 may be ranked higher than un-initialized native applications 161 (e.g., cold applications)), and/or whether the channels are instant playback channels. In some examples, instant playback channels include channels provided by the media platform 104. In some examples, instant playback channels may be ranked higher than application-based channels.
[0093] In response to the selection of the single (e.g., merged) television channel 118, the EPG 145 may display the providers 124 according to the ranking information 176.
Tn some examples, if the provider 124b is ranked higher than the provider 124a, the provider 124b may be identified first and/or as a primary watch entity on the EPG 145. In response to selection of the primary watch entity, the corresponding native application 161 may be launched to display the television channel 118.
[0094] In response to the navigation groups 140 being constructed, the live television engine 130 retrieves, from the media provider database 108, program data 116 that identifies programs 117 broadcasted by the television channels 118 included in the navigation groups 140. For example, the live television engine 130 may transmit a program query 168, via the API(s) 138, to the media provider database 108. The program query 168 may identify the television channels 118 from the list 166 and/or the navigation groups 140. The program query 168 may include the identifiers 171 from the list 166 and/or the navigation groups 140. In some examples, the program query 168 may include information that identifies a time interval. The time interval may define a duration such as one day, one week, one month, etc. In some examples, the time interval is defined by a start time and an end time.
[0095] In response to the program query 168, the media platform 104 may query the media provider database 108 to retrieve program data 116 associated with each identifier 171 during the time interval. The live television engine 130 may receive a response 174 that includes the program data 116 for each identifier 171 associated with the television channels 118. The program data 116 may include information identifying a current program 117a and one or more future programs 117b during the time interval. For each program 117, the program data 116 may include a name 131, a description 133, an air date 147 (e.g., time/date of broadcast), a maturity rating 137, and/or a program image 139.
[0096] The live television engine 130 includes an EPG data generator 142 configured to generate EPG data 144 to be transmitted, over the network 150, to the television device 152. The EPG data 144 includes information about the navigation groups 140, the television channels 118, and the programs 117. In some examples, the EPG data 144 includes the group lists 165 for the navigation groups 140 and the channel and program data 112 for the television channels 118. The EPG data 144 may cause the television device 152 (e.g., the media application 157) to display a selectable UI element 141 for each of the navigation groups 140 such that selection of the selectable UI element
141 causes the television device 152 to display television channels 118 and programs 117 corresponding to a respective navigation group 140 in the EPG 145.
[0097] In some examples, the media application 157 may retrieve the EPG data 144 (or the information included within the live tab of the user interface 186) using a windowing and caching mechanism to achieve a balance between user perceived latency, memory usage, CPU usage, and/or several calls. For example, the information for the live tab and/or the EPG 145 may include a relatively large amount of data (e.g., since the system 100 is capable of rendering EPG data 144 across hundreds of television channels 118). In some examples, in response to a user selection to view the live tab or the EPG 145, the media application 157 may retrieve a first portion of the EPG data 144 for a subset of television channels 118, e.g., corresponding to a particular navigation block or one or more navigation groups 140 over a specific time interval. The media application 157 may store the first portion of the EPG data 144 in a memory device on the television device 152. Then, in response to detection of an interaction with the live tab or the EPG 145, the media application 157 may retrieve a second portion of the EPG data 144 for a subset of television channels 118, e.g., corresponding to another navigation block (or portion thereof) and/or one or more other navigation groups 140 over a specific time interval. The media application 157 may store the second portion of the EPG data 144 in the memory device on the television device 152. Then, in response to detection of another interaction with the live tab or the EPG 145, the media application 157 may retrieve a third portion of the EPG data 144 for a subset of television channels 118, e.g., corresponding to yet another navigation block (or portion thereof) and/or one or more other navigation groups 140 over a specific time interval, and so forth. The media application 157 may store the third portion of the EPG data 144 in the memory device on the television device 152.
[0098] In further detail, in response to receipt of a user selection to view the live tab and/or the EPG 145, the media application 157 may request and receive an initial set of EPG data 144, which may include the program data 116 for a subset of television channels 118 that are initially rendered in the EPG 145 (e.g., one of the navigation groups 140 or a navigation block). In some examples, in response to a user command that browsers through the live tab or EPG 145, the media application 157 may request, receive, and store another portion of the EPG data 144. For example, the media application 157 may fetch
(e g., pre-fetch) the EPG data 144 for a time interval (e.g., the first X hours) for the television channels 118 in a navigation block (e.g., “Your Channels” section such as the favorite-channel group 140a, the recent-channel group 140b, etc.). Then, the media application 157 may fetch (e.g., pre-fetch) the EPG data 144 for a time interval (e.g., the first X hours) for the television channels 118 for the first X number of television channels in one or more provider-specific groups 140d. Then, the media application 157 may fetch (e.g., pre-fetch) the EPG data 144 for a time interval (e.g., the first X hours) for the television channels 118 in the first X number of genre-based groups 140f In some examples, in response to the user navigating from the first portion 199-1 to the second portion 199-2 of the EPG 145, the media application 157 may fetch the images for currently live programming, and/or fetch the EPG data 144 for the next X number of television channels 118, etc.
[0099] In some examples, as shown in FIG. 1C, the television device 152 may render UI elements 141 corresponds to the navigation groups 140 in a first portion 199-1 of the EPG 145. For example, a UI element 141-1 corresponds to a navigation group 140-1, a UI element 141-2 corresponding to a navigation group 140-2, and a UI element 141-3 corresponds to a navigation group 140-3. The navigation groups 140 of FIG. 1C may include any of the types of navigation groups 140 discussed with reference to FIG. IB. Although three navigation groups 140 are depicted in FIG. 1C, the EPG 145 may display any number of navigation groups 140. Tn the example of FIG. 1 C, the user has selected the UI element 141-2, which caused the television device 152 to identify the programs 117 and the television channels 118 from the group list 165 of the navigation group 140-2 in a second portion 199-2 of the EPG 145. In response to receipt of a selection to the UI element 141-1, the second portion 199-2 of the EPG 145 may be updated to identify the programs 117 and the television channels 118 from the group list 165 of the navigation group 140-1. In response to receipt of a selection to the UI element 141-3, the second portion 199-2 of the EPG 145 may be updated to identify the programs 117 and the television channels 118 from the group list 165 of the navigation group 140-3.
[00100] Identifying a program 117 and a television channel 118 in the EPG 145 may include displaying information and/or UI element(s) in the user interface 186 that identifies a television channel (e.g., channel name 113, channel number 111, channel image 121
(e g., logo), etc.) and/or information about one or more programs 117 broadcasted by the tuner-based television channel 120 (e.g., program name 131, description 133, air date 147, maturity rating 137, and/or program image 139).
[00101] In some examples, the EPG 145 may include a trending indicator (e.g., a “trending now” category) associated with one or more television channels 118 identified in the EPG 145. In some examples, the trending indicator may indicate a number of users that initiated watching a television channel 118. The trending indicator may be a label or other UI element that indicates a television channel 118 is trending (e.g., popular, viral buzzing, or other similar terms, etc.). In some examples, the trending indicator indicates that the television channel 118 is trending, and may also indicate the number of users that initiated viewing of the television channel in a given period of time (or an approximation of the number of users). In some examples, the trending indicator may be populated (e.g., rendered on the user interface 186) with respect to a particular television channel 118 when the television channel 118 is determined as trending by the media platform 104. A television channel 118 may be considered trending by the media platform 104 in response to the media platform 104 determining that a number of viewing sessions associated with the television channel 118 is over a threshold amount in a given time period. The threshold amount may be a predetermined level and/or set based on the number of viewing sessions associated with other television channels 118. In some examples, a trending television channel is a television channel that is viewed by a number of users in a given time period at a rate that is higher than other television channels. A viewing session is initiated when a particular user has initiated a viewing of the television channel 118 on their television device 152.
[00102] The EPG 145 may enable a user to select a television channel 118 (e.g., a tuner-based television channel 120 or a server-based television channel 122), where selection of the tuner-based television channel 120 displays the current content of the tuner-based television channel 120 on the television device 152 from radio waves received by an antenna 155 of the television device 152 and selection of the server-based television channel 122 displays the current content of the server-based television channel 122 from digital data received over the network 150.
[00103] Tn response to a selection to watch a tuner-based television channel 120, the media application 157 may cause a media player to be launched to receive and display the content received via the tuner 154 and antenna 155 on the television device 152. In response to a selection to watch a server-based television channel 122, the media application 157 (e.g., native application 161) may receive content over the network (e.g., internet) from a streaming platform 167.
[00104] In some examples, selection of a server-based television channel 122 from the EPG 145 may cause the media application 157 to launch a native application 161 (e.g., using a content deep link) associated with the server-based television channel 122. For example, the server-based television channel 122 may be associated with a specific provider 124 in which the server-based television channel 122 is streamed from a streaming platform 167 (e.g., the media platform 104 itself or another streaming platform 167). In some examples, the user can control the playback of the server-based television channel 122 from the corresponding native application 161.
[00105] A content deep link, corresponding to a server-based television channel 122 (and/or media content item), may be an identifier that identifies the location of the serverbased television channel 122 in the native application 161. The media application 157 may transfer the content deep link to the corresponding native application 161. In some examples, the content deep link identifies a specific landing page (e.g., an interface) within the native application 161 that corresponds to the server-based television channel 122 or media content item. In some examples, the content deep link is an operating system intent. In some examples, the content deep link is a uniform resource locator (URL). In some examples, the content deep link includes a URL format.
[00106] When a television channel 118 is selected, a program 117, currently broadcasted by the selected television channel 118, is rendered on the user interface 186. In some examples, the media application 157 may implement a browse-while-watching feature to enable the user to continue to view the program 117 while browsing through the user interface 186 (e.g., other section (e.g., tabs) of the media application 157) and/or while browsing other user interfaces associated with other applications (e.g., other native applications 161). For example, a display of the program 117 may remain in the
foreground while the user uses other portions of the user interface 186 and/or other native applications 161.
[00107] In some examples, the media application 157 is configured to render the content of a selected television channel 118 in a video window, where the video window displays the contents of the program 117. In some examples, the media application 157 renders the video window in response to receipt of a user command to navigate to a different portion (e.g., tab) of the user interface 186 or a different native application 161. The video window may be a pop-out window that displays the video content. In some examples, the video window includes a picture-in-picture (PIP) window. In some examples, the video window remains in the foreground while the user navigates to other portions of the user interface 186 or other native applications 161. In some examples, the video window is positioned in a portion of the display 156 (e g., top right corner, top left corner, etc.). In some examples, a user may move the video window to a different portion of the display 156. In some examples, the video window is automatically moved to a different portion of the display 156 based on which information is displayed by the television device 152 and/or the user’s browsing activity (e g., a user navigates to a control element or a portion of the display 156 that includes the video window, which causes the video window to move to another portion of the display 156).
[00108] In some examples, when the user has navigated to (and is currently viewing) a user interface associated with a different native application 161 and the user selects the video window (or a control on the video window), the television device 152 may cause the media application 157 to display the program 117 in the user interface 186 (e.g., the live tab) along with the relevant EPG data 144). For example, the television device 152 may re-display the user interface 186 such that the program 117 is displayed in a larger format, and, in some examples, along with the EPG data 144 having the navigation groups 140.
[00109] In some examples, the media application 157 is configured to enable the user to search and/or filter the EPG data 114. In some examples, the media application 157 renders a search filter interface (e.g., a search filter chip component) on the user interface 186 to enable the user to search and/or filter the television channels 118 from the EPG 145. In some examples, the media application 157 may render a search field interface
on the EPG 145, which enables the user to enter text as search criteria. Tn some examples, the media application 157 may receive search criteria from a voice command received via the television device 152 or another device (e.g., a user device, smart speaker, wearable device, etc.) associated with and/or connected to the television device 152. In response to the search criteria, the media platform 104 may update the EPG 145 to identify one or more television channels 118 that correspond to the search results (e g., if the search criteria is “movies”, the EPG 145 may display television channels 118 that are broadcasting movies).
[00110] In some examples, the media platform 104 may remove any television channel 118 from the EPG 145 that does not have a matching program currently playing. In some examples, the media platform 104 may remove any television channels 118 from the EPG 145 that does have a match in a given timeframe threshold from the current point in time (e.g. within next 1 hour, next 2 hours, next 4 hours, etc.). In some examples, instead of removing a television channel 118, the media platform 104 may highlight the television channels 118 that correspond to the filters and/or search criteria. For example, the media platform 104 may highlight specific television channels 118 and/or programs 117 that are a match (e.g., best match) (e.g., by color, size, font, or order etc.) or by deemphasizing television channels 118 and/or programs 117 that are not a match (e g. gray- out or dim non-matching television channels or programs).
[00111] In some examples, the media application 157 is configured to provide the search filter interface on the live tab (e.g., the EPG 145) of the user interface 186. The media application 157 may render the search filter interface on the user interface 186 (e.g., overlaid or rendered on top of the EPG 145 or rendered as a separate portion within the EPG 145 itself). In some examples, the search filter interface may include search filter components (e.g., filter chips) arranged in a horizontal and/or vertical list. The search filter components may be UI elements representing filters and may include buttons, icons, dropdown menu items, sliders, etc. In some examples, the search filter components may be configurable by the user. In some examples, the search filter components are selected by the media platform 104 based on the user activity information 146 associated with a user account 136 (e.g., personalized to the user’s interests and behavior).
[00112] Tn some examples, the search filter components may also allow for subfiltering, where, for example, the user selects a search filter component “movies” and the EPG 145 is filtered to only television channels 118 currently showing movies. Then, the media application 157 may render (or change) sub-filter components to recite filtering options across genres, e.g., changing sub-filter components to “action”, “comedy”, “romcoms”, etc. to enable the user to further filter down among the movies. Upon selecting the “romcoms” sub-filter component, the television channels 118 are filtered down further to only romcom movies. Still further, the sub-filter components may change again for “romcoms” across decades, e.g., changing the sub-filter components to “from the 80s & 90s” and “'00s”, etc. The sub-filtering may assist the user to narrow the television channels 118 from a relatively large amount of channels (e.g., hundreds, thousands, etc.) to television channels 118 that match their interests.
[00113] In some examples, the selected search filter components (including subfilter components) may remain active, and, in some examples, can be reselected by the user. In some examples, the user can clear (e.g., deactivate) one or more selected search filter components, thereby re-populating the television channels 118 that still meet the remaining filters. For example, suppose a user had selected “from the 80s and 90s”, and then cleared the “romcoms” component, they still have two search filter components that are active, e.g., “movies” and “from the 80s and 90s”, which causes the television channels 118 in the EPG 145 to expand out to match those filters.
[00114] In some examples, the search filter interface may be rendered in response to receipt of a user selection of an icon (e.g., filtering/search icon) on the EPG 145. In some examples, the search filter interface is an extendable and retractable section of the user interface 186. The search filter interface may be a UI element (e.g., a UI window or box) which allows the user to set search and filtering settings. The search filter interface may define filter categories, toggle buttons, selectable predefined settings, and/or a search field.
[00115] In some examples, the user interface 186 may include one or more other sections (e.g., tabs) that display media content 106 (e.g., a plurality of media content items), which may be selected by the media platform 104. The media content 106 may include programs 117 from the television channels 118 and/or non-live content (e.g., on- demand content). In some examples, the media content items may be organized as a
plurality of clusters based on one or more categories, such as content type (e.g., “Action Movies”), viewing history (e.g., “Because You watched Movie ABC”), release time (e.g., “Trending”), and the like. In some examples, the media content items provided by different streaming platforms 167 (e.g., action movies from two different streaming services and a broadcast television channel) can be recommended in the same cluster. In some examples, one of the tabbed interfaces includes personalized media content that is organized as a plurality of clusters based on one or more categories, such as release time (e.g., “This Week,” “Next week,” “Next Month,” etc.), user action and user application interaction, native app usage (e.g., items that are “From App ABC”), etc. The clusters may include video-on-demand programs, programs 117 from the tuner-based television channels 120, and/or programs 117 from the server-based television channels 122.
[00116] The server computer 102 may be computing devices that take the form of a number of different devices, for example a standard server, a group of such servers, or a rack server system. In some examples, the server computer 102 may be a single system sharing components such as processors and memories. The network 150 may include the Internet and/or other types of data networks, such as a local area network (LAN), a wide area network (WAN), a cellular network, satellite network, or other types of data networks. The network 150 may also include any number of computing devices (e.g., computer, servers, routers, network switches, etc.) that are configured to receive and/or transmit data within network 150. Network 150 may further include any number of hardwired and/or wireless connections.
[00117] The server computer 102 may include one or more processors formed in a substrate, an operating system (not shown) and one or more memory devices. The memory devices may represent any kind of (or multiple kinds of) memory (e.g., RAM, flash, cache, disk, tape, etc.). In some examples (not shown), the memory devices may include external storage, e.g., memory physically remote from but accessible by the server computer 102. The server computer 102 may include one or more modules or engines representing specially programmed software.
[00118] FIGS. 2A and 2B illustrate a system 200 for incorporating tuner-based content into a media platform 204. The system 200 may be an example of the system 100
of FIGS 1 A through IF and may include any of the details discussed herein with respect to these figures.
[00119] As shown in FIG. 2A, the television device 252 includes a tuner 254 configured to operate with an antenna 255 to execute a channel scan 253, which scans and detects tuner-based television channels 220 across frequencies. In response to a channel scan 253, an operating system 251 of the television device 252 may obtain tuner channel data 232 from the tuner 254 and store the tuner channel data 232 in a memory device of the television device 252. In some examples, the tuner 254 executes the channel scan 253 in a background process of the television device 252. In some examples, the tuner 254 is configured to automatically execute the channel scan 253 when the television device 252 is powered-on.
[00120] The tuner channel data 232 may identify which tuner-based television channels 220 are detected by the tuner 254 on the television device 252. For each tunerbased television channel 220 detected by the tuner 254, the tuner channel data 232 may include a channel number 280 and a channel name 282. The channel number 280 may be a numerical identifier (e.g., 11, 11.2, 12, 25.2, etc.) associated with a particular tuner-based television channel 220. The channel name 282 may be the title/name associated with a particular tuner-based television channel 220. In some examples, the tuner channel data 232 includes one or more identifiers that identifies the type of tuner 254 and/or the television device 252. Tn some examples, the tuner channel data 232 may not include other types of metadata associated with the tuner-based television channel 220 such as an image or logo, type(s) of the channel entity, etc. In some examples, the tuner channel data 232 may not include programming data, e.g., information that identifies current programs and/or future programs to be broadcasted by a tuner-based television channel 220. In some examples, the tuner channel data 232 includes information that identifies a current program broadcasted by a respective tuner-based television channel 220 but not future programs to be broadcasted by a respective tuner-based television channel 220.
[00121] The media platform 204 may receive, over the network, the tuner channel data 232 from the television device 152. The media platform 204 may include a media provider database 208 that stores information about media content that can be presented and selected from a user interface 286. The user interface 286 is rendered on a display 256
of the television device 252. The media content may include channel and program data 212 for a plurality of broadcast channels, including the tuner-based television channels 220 and the server-based television channels. The channel and program data 212 may represent a relatively large set of data that provides information for many broadcast channels that can be viewed by a user (e.g., across one or multiple countries). The channel and program data 212 may include channel data 214 that includes information about the television channels and program data 216 that includes information about programs that are broadcasted by the television channels. In some examples, the media platform 204 may receive (e.g., periodically receive) the channel and program data 212 from an external source and store (e.g., update) the channel and program data 212 in the media provider database 208. In some examples, the media content may include other media content such as media content offered by one or more multiple video streaming platforms.
[00122] The media platform 204 includes a reconciliation engine 215 configured to receive the tuner channel data 232 and generate channel and program data 212 for one or more of the tuner-based television channel(s) 220 detected by the tuner 254. The channel and program data 212 may represent enriched information about a tuner-based television channel 220 and about programs broadcasted by a tuner-based television channel 220.
[00123] In other words, the reconciliation engine 215 may reconcile and enhance the tuner channel data 232 with channel and program data 212 stored in the media provider database 208 to generate enriched data for the tuner-based television channel(s) 220 detected by the tuner 254. For example, the information obtained by the tuner 254 (e.g., the tuner channel data 232) may be insufficient to enable the tuner-based television channels 220 to be presented in a user interface 286 that also identifies and displays information from server-based television channels or other server-side media content. However, the reconciliation engine 215 may reconcile the tuner-based television channels 220 detected by the tuner 254 with known information stored in the media provider database 208 and enrich the limited tuner channel data 232 with additional information stored in the media provider database 208.
[00124] The reconciliation engine 215 may obtain a location 262 of the television device 252. The location 262 may represent a geographic area of the location in which the television device 252 is located. In some examples, the reconciliation engine 215 obtains
the location 262 from a user account 236 stored on the media platform 204. Tn some examples, the location 262 is included in the tuner channel data 232. The user account 236 may include information that identifies one or more television devices 252 associated with the user account 236. In some examples, the location 262 includes a zip code of the area in which the television device 252 is located. In some examples, the location 262 includes a geolocation location or geolocation coordinates of the television device 252.
[00125] In response to receiving the tuner channel data 232, the reconciliation engine 215 may generate and transmit a channel query 260 to the media provider database 208. In some examples, the channel query 260 includes the location 262 of the television device 252. The channel query 260 may be a request to retrieve a list 266 of tuner-based television channels 220 that are available in the location 262. In response to the channel query 260, the media platform 204 may retrieve list 266 of tuner-based television channels 220 that are broadcasted in the location 262 of the television device 252. If the location 262 is a zip code, the list 266 includes information that identifies the tuner-based television channels 220 that are broadcasted in the zip code specified by the channel query 260. The reconciliation engine 215 may receive a channel response 264 that includes the list 266. In some examples, for each channel-based television channel 220 that is broadcasted in the location 262, the list 266 may include an identifier 271 that identifies a respective tunerbased television channel 220 on the media platform 204, a channel number, and a channel name.
[00126] The reconciliation engine 215 may include a channel matcher 235 configured to reconcile the tuner-based television channels 220 identified by the tuner channel data 232 with the tuner-based television channels 220 identified in the list 266. For example, the channel matcher 235 may identify a tuner-based television channel 220 from the list 266 of tuner-based television channels 220 that corresponds to a tuner-based television channel 220 identified in the tuner channel data 232.
[00127] In some examples, the channel matcher 235 may determine whether the channel number 280 and/or the channel name 282 identified in the tuner channel data 232 corresponds to (e g., matches) the channel number and/or the channel name from the list 266. In some examples, if they match, the channel matcher 235 may identify the corresponding tuner-based television channel 220 as eligible to be used in the system 200.
Tn some examples, if a tuner-based television channel 220 identified in the tuner channel data 232 is not identified (e.g., does not match) a tuner-based television channel 220 on the list 266, the tuner-based television channel 220 is not used in the system 200. In some examples, if a tuner-based television channel 220 identified in the tuner channel data 232 is not identified (e.g., does not match) a tuner-based television channel 220 on the list 266, the tuner-based television channel 120 is still used in the system 200 but may be presented in the user interface 286 with limited information.
[00128] In response to a match, the reconciliation engine 215 may retrieve channel data 214 associated with the tuner-based television channel 220 such as a channel image (e.g., logo) and/or other metadata associated with the tuner-based television channel 220 from the media provider database 208.
[00129] The reconciliation engine 215 may include a program identifier 288 configured to retrieve, from the media provider database 208, program data 216 that identifies program(s) broadcasted by the tuner-based television channel(s) 220 during a time interval 292. For example, the program identifier 288 may generate and transmit a program query 268 to the media provider database 208. The program query 268 may be a request to retrieve program data 216 about the programs broadcasted by tuner-based television channels 220 (e.g., that have been identified or reconciled, or, in other words, have an identifier 271). The program query 268 may include the identifier(s) 271 of the tuner-based television channel(s) 220, which have been previously reconciled. Tn some examples, the program query 268 may include information that identifies a time interval 292. The time interval 292 may define a duration such as one day, one week, one month, etc. In some examples, the time interval 292 is defined by a start time and an end time.
[00130] In response to the program query 268, the media platform 204 may query the media provider database 208 to retrieve program data 216 associated with each identifier 271 during the time interval 292. The program identifier 288 may receive a program response 274 that includes the program data 216 for each identifier 271 associated with the tuner-based television channels 220. The program data 216 may include information identifying a current program and one or more future programs during the time interval 292. For each program, the program data 116 may include a name, a description, an air date (e.g., time/date of broadcast), a maturity rating, and/or a program image.
[00131] The reconciliation engine 215 may generate channel and program data 212a for the tuner-based television channels 220 that are reconciled by the channel matcher 235. The channel and program data 212a may include enriched data about the tuner-based television channel 220 and the programs broadcasted by the tuner-based television channel 220. The channel and program data 212a may include a combination of the tuner channel data 232, the channel data 214, and/or the program data 216. In some examples, if the channel name 282 is different from the channel name in the channel data 214, the channel and program data 212a may include the channel name (e.g., from the media provider database 208) as the display name.
[00132] In some examples, media platform 204 may store entitlement data 225 in a user account 236 of the media application 257. The entitlement data 225 may identify which providers (e.g., the providers 124 of FIGS. 1A through IF) the user account 236 has access to, which may include media providers associated with one or more native applications 261. Also, the entitlement data 225 may associate the user account 236 with the reconciled tuner-based television channels 220. For example, the entitlement data 225 may include a list of tuner-based television channels 220 and the list is associated with a tuner 254 or television device 252 (e.g., the tuner 254 or the television device 252 is the provider). When the media platform 204 determines which media content to select or recommend for the user account 236, the media platform 104 may determine which providers are associated with the user account 236 using the entitlement data 225
[00133] In some examples, the media platform 204 may receive new tuner channel data 232 from the television device 152. In some examples, the media platform 204 may receive new tuner channel data 232 in response to a new channel scan 253 by the tuner 254. In some examples, the media platform 204 may receive new tuner channel data 232 if the new channel scan 253 results in a list of tuner-based broadcast channels 220 that are different from the list of tuner-based broadcast channels 220 from a previous channel scan 153. In response to the new tuner channel data 232, the media platform 204 may generate updated channel and program data 212a and may update the entitlement data 225 with the updated channel and program data 212a. For example, the reconciliation engine 215 may perform the same operations discussed above to generate the updated channel and program data 212a.
[00134] The media platform 204 may transmit the channel and program data 212a associated with the tuner-based television channels 220. In some examples, a list of reconciled tuner-based television channels 220 are stored in a memory device of the television device 252. In some examples, the program data 216 for the reconciled tunerbased television channels 220 in the memory device of the television device 252.
[00135] In some examples, the media platform 104 may generate electronic programming guide data (e.g., the EPG data 144 of FIGS. 1A through IF). The electronic programming guide data may include the channel and program data 212a associated with the tuner-based television channel 220 and channel and program data 212 for a serverbased television channel. The electronic programming guide data is configured to be rendered in an electronic programming guide (EPG) 245 in the user interface 286 of the media application 157. The EPG 245 identifies the tuner-based television channel 220 and any server-based television channels. In some examples, the tuner-based television channels 220 are included in a navigation group (e.g., the navigation group 140 of FIGS. 1A through IF).
[00136] For example, the electronic media guide 245 may display a programming schedule of media content, e.g., programs from the tuner-based television channels 220 and programs from the server-based television channels. From the electronic media guide 245, a user may view the programs in a current time slot (and a future time slot) available for viewing from the tuner-based television channels 220 and the server-based television channels. In response to a selection to watch a tuner-based television channel 220, the media application 257 may cause a media player 259 to be launched to receive and display the content received via the tuner 254 and antenna 255 on the television device 252. In response to a selection to watch a server-based television channel, a native application 261 (e.g., the media application 257) may receive content over the network (e.g., internet) from a streaming platform.
[00137] In some examples, the media application 257 may provide television recommendations 296 (e.g., personalized to the user account 236) in the user interface 286 for selection by the user. The television recommendations 296 may include programs from the server-based television channels and programs from the tuner-based television channels 220. In some examples, the media application 257 may identify un-finished items 298
(e g., un-finished programs or programs that have been started but not finished) in the user interface 286 for selection by the user. In some examples, the un-finished items 294 may include programs from the server-based television channels and programs from the tunerbased television channels 220.
[00138] In some examples, the media platform 204 may receive a search query from the television device 252. The search query may be a request to search media content in the media provider database 208. The search query may include one or more terms submitted by a user of the television device 252. In response to the search query, the media platform 204 may transmit search results 299 for display on the user interface 286 associated with the television device 252. The search results 299 may identify the program broadcasted by the tuner-based television channel 220, one or more programs broadcasted by a server-based television channel, and/or one or more media content items associated with one or more streaming platforms.
[00139] In some examples, the television device 252 may receive a voice command 284 to play a tuner-based television channel 220 or a program on a tuner-based television channel 220. In some examples, the voice command 284 is a command to display a particular television channel on the television device 252. In some examples, the voice command 284 is a command to display a particular program broadcasted by a television channel on the television device 252. In response to the voice command 284, the operating system 251 may cause a media player 259 to launch to play the tuner-based television channel 220. In some examples, the television device 252 may include a microphone 295, which, when activated, is configured to receive a voice command 284 (e.g., “play channel six”). In some examples, the television device 252 may receive the voice command 284 from another device such as a smart speaker, smartphone, wearable device, etc. (e.g., “play channel six on home TV”).
[00140] FIG. 3 illustrates an example of a user interface 386 depicting an EPG 345 with navigation groups 340. The user interface 386 may be an example of the user interface 186 of FIGS. 1A through IF and may include any of the details discussed with reference to those figures. The EPG 345 may display a selectable UI element 341 associated with each navigation group 340. Also, for each navigation group 340, the EPG 345 may identify the title of the navigation group 340 (e.g., favorite, recent, news, sports,
movies, entertainment) and the number of channels within a respective navigation group 340. As shown in FIG. 3, the navigation groups 340 include a favorite-channel group 340a, a recent-channel group 340b, and a plurality of genre-based groups 340f. However, the navigation groups 340 may include any of the navigation groups discussed with reference to FIGS. 1 A through IF. The user has selected the UI element 341 corresponding to the recent-channel group 340b, which caused the EPG 345 to identify the group list 365 of television channels that correspond to the recent-channel group 340b. Also, the EPG 345 displays program data 316 about the programs broadcasted by the television channels in the recent-channel group 340b. The user can select a UI element 341 corresponding to a different navigation group 340, which causes the EPG 345 to display the group list 365 and program data 316 for the selected navigation group 340.
[00141] FIG. 4 illustrates an example of a user interface 486 depicting an EPG 445 with navigation groups 440. The user interface 486 may be an example of the user interface 186 of FIGS. 1A through IF and may include any of the details discussed with reference to those figures. The EPG 445 may display a selectable UI element 441 associated with each navigation group 440. Also, for each navigation group 440, the EPG 445 may identify the title of the navigation group 440 and the number of channels within a respective navigation group 440. As shown in FIG. 4, the navigation groups 440 include a favorite-channel group 440a and a recent-channel group 440b. However, the navigation groups 440 may include any of the navigation groups discussed with reference to FIGS. 1 A through IF. The user has selected the UI element 441 corresponding to the favoritechannel group 440a, which caused the EPG 445 to identify the group list 465 of television channels that correspond to the favorite-channel group 440a. Also, the EPG 445 displays program data 416 about the programs broadcasted by the television channels in the favorite-channel group 440a. The user can select a UI element 441 corresponding to a different navigation group 440, which causes the EPG 445 to display the group list 465 and program data 416 for the selected navigation group 440. In some examples, the EPG 445 includes a recommendation section 447 that identifies television programs from multiple providers. In some examples, the recommendation section 447 includes a horizontal carousel with media content items that correspond to the different programs broadcasted by the television channels. In some examples, the recommendation section 447 includes live
television programs selected by a recommendation engine (e g., the recommendation engine 191 of FIG. ID).
[00142] FIG. 5 illustrates an example of a user interface 586 depicting an EPG 545 with navigation groups 540. The user interface 586 may be an example of the user interface 186 of FIGS. 1A through IF and may include any of the details discussed with reference to those figures. The EPG 545 may display a selectable UI element 541 associated with each navigation group 540. Also, for each navigation group 540, the EPG 545 may identify the title of the navigation group 540 and the number of channels within a respective navigation group 540. As shown in FIG. 5, the navigation groups 540 include a favorite-channel group 540a, a recent-channel group 540b, a recommendation group 540c, and a plurality of genre-based groups 540f However, the navigation groups 540 may include any of the navigation groups discussed with reference to FIGS. 1 A through IF. The user has selected the UI element 541 corresponding to the favorite-channel group 540a, which caused the EPG 545 to identify the group list 565 of television channels that correspond to the favorite-channel group 540a. Also, the EPG 545 displays program data 516 about the programs broadcasted by the television channels in the favorite-channel group 540a. The user can select a UI element 541 corresponding to a different navigation group 540, which causes the EPG 545 to display the group list 565 and program data 516 for the selected navigation group 540.
[00143] FIG 6 illustrates an example of a user interface 686 depicting an EPG 645 with navigation groups 640. The user interface 686 may be an example of the user interface 186 of FIGS. 1A through IF and may include any of the details discussed with reference to those figures. The EPG 645 may display a selectable UI element 641 associated with each navigation group 640. Also, for each navigation group 640, the EPG 645 may identify the title of the navigation group 640 and the number of channels within a respective navigation group 640. As shown in FIG. 6, the navigation groups 640 include a recent-channel group 640b, a recommendation group 640c, and a plurality of genre-based groups 640f. However, the navigation groups 640 may include any of the navigation groups discussed with reference to FIGS. 1A through IF. The user has selected the UI element 641 corresponding to the genre-based group 640f (e.g., news), which caused the EPG 645 to identify the group list 665 of television channels that correspond to the genre-
based group 640f relating to news. Also, the EPG 645 displays program data 616 about the programs broadcasted by the television channels in the genre-based group 640f relating to news. The user can select a UI element 641 corresponding to a different navigation group 640, which causes the EPG 645 to display the group list 665 and program data 616 for the selected navigation group 640.
[00144] FIG. 7 illustrates an example of a user interface 786 depicting an EPG 745 with navigation groups 740. The user interface 786 may be an example of the user interface 186 of FIGS. 1A through IF and may include any of the details discussed with reference to those figures. The EPG 745 may display a selectable UI element 641 associated with each navigation group 740. In the example of FIG. 7, a user operated a portion of the EPG 745 that displays the program data 716 and/ has selected a program 717, which causes the EPG 745 to change a format of the section of the EPG 745 that displays the navigation groups 740. For example, the EPG 745 may display the selectable UI icons 741, but not the title and/or number of channels associated with a respective navigation group 740.
[00145] FIG. 8 illustrates an example of a user interface 886 depicting an EPG 845 with navigation groups 840. The user interface 886 may be an example of the user interface 186 of FIGS. 1A through IF and may include any of the details discussed with reference to those figures. The EPG 845 may display a selectable UI element 841 associated with each navigation group 840. In FIG. 8, a user has selected a program 817 from the EPG 845, which caused the EPG 845 to change a format of the section of the EPG 845 that displays the navigation groups 840. For example, the EPG 845 may display the selectable UI elements 841, but not the title and/or number of channels associated with a respective navigation group 840. Also, the EPG 845 may display information 897 about the selected program 817 such as the title of the program 817, the airing date/time, episode information, and/or a short description of the program 817. Further, the EPG 845 may display a primary watch action 861 and available watch action 863. For example, the program 817 may be broadcasted by multiple televisions associated with multiple providers. However, as explained in FIGS. 1 A through IF, a watch ranking engine 177 may rank the plurality of providers and select the highest-ranking provider as the primary watch action 861. In response to selection of the primary watch action 861, the media
application causes playback of the program 817 from the television channel associated with the primary provider (e.g., Provider A) on the television device. In response to selection of the available watch action 863, the user interface 886 may display the plurality of providers to watch the program 817, which have been ranked according to the watch ranking engine 177.
[00146] FIGS. 9A through 9D illustrate example navigation group sections that are rendered in an EPG of a media platform. FIG. 9A illustrates a navigation group section 995-1 identifying a plurality of navigation groups such as a favorite-channel group 940a, a recent-channel group 940b, a recommendation group 940c, and a plurality of genre-based groups 940f. The navigation group section 995-1 may be rendered for a user account that does not include premium or tuner channels. In some examples, the genre-based groups 940f include FAST channels that are organized by genre. FIG. 9B illustrates a navigation group section 995-2 identifying a plurality of navigation groups such as a favorite-channel group 940a, a recent-channel group 940b, a recommendation group 940c, a providerspecific group 940d associated with provider A, and a plurality of genre-based groups 940f. The navigation group section 995-2 may be rendered for a user account that includes premium channels from provider A, but not tuner channels.
[00147] FIG. 9C illustrates a navigation group section 995-3 identifying a plurality of navigation groups such as a favorite-channel group 940a, a recent-channel group 940b, a recommendation group 940c, a provider-specific group 940d associated with provider A, a tuner-channel group 940e, and a plurality of genre-based groups 940f. The navigation group section 995-3 may be rendered for a user account that includes premium channels from provider A and tuner channels that have been reconciled according to the techniques described in FIGS. 1 A through IF and FIGS. 2A through 2B. FIG. 9D illustrates a navigation group section 995-4 identifying a plurality of navigation groups such as a favorite-channel group 940a, a recent-channel group 940b, a recommendation group 940c, a provider-specific group 940d associated with provider A, a provider-specific group 940d associated with provider B, a tuner-channel group 940e, and a plurality of genre-based groups 940f. The navigation group section 995-4 may be rendered for a user account that includes premium channels from provider A, premium channels from provider B, and tuner channels that have been reconciled according to the techniques described in FIGS.
1 A through IF and FIGS. 2A through 2B. Each navigation group is identified by the title of the navigation group and the number of channels included within a respective navigation group.
[00148] FIG. 10 illustrates an example of a user interface 1086 depicting an EPG 1045 with a plurality of navigation groups 1040. The user interface 1086 may be an example of the user interface 186 of FIGS. 1A through IF and may include any of the details discussed with reference to those figures. The EPG 1045 may display a selectable UI element associated with each navigation group 1040, which, when selected, causes identification of television channels and program data 1016 in the EPG 1045. Also, for each navigation group 1040, the EPG 1045 may identify the title of the navigation group 1040 and the number of television channels within a respective navigation group 1040. [00149] As shown in FIG. 10, the EPG 1045 may include a navigation block 1039-1 (e.g., built-in channels, free built-in channels) with a provider-specific group 1040d, and, in some examples, a tuner-channel group 1040e. A navigation block may represent a category of navigation groups 1040 and may include one or more navigation groups 1040. If the television device does not include a tuner and/or an antenna, in some examples, the navigation block 1039-1 may include the provider-specific group 1040d. In some examples, the provider-specific group 1040d in the navigation block 1039-1 may include television channels that are offered for free by the media platform. The tuner-channel group 1040d may include television channels available to be broadcasted by the television device. The EPG 1045 may include a navigation block 1039-2 (e.g., free channels from apps) with a plurality of genre-based groups 1040f.
[00150] In FIG. 10, the user has selected a UI element corresponding to the provider-specific group 1040d, which caused the EPG 1045 to identify the group list 1065 of television channels that correspond to the provider-specific group 1040d. Also, the EPG 1045 displays program data 1016 about the programs broadcasted by the television channels in the provider-specific group 1040d. The user can select a UI element corresponding to a different navigation group 1040, which causes the EPG 1045 to display the group list 1065 and program data 1016 for the selected navigation group 1040.
[00151] FIG. 11 illustrates an example of a user interface 1186 depicting an EPG 1145 with a plurality of navigation groups 1140. The user interface 1186 may be an
example of the user interface 186 of FIGS. 1 A through IF and may include any of the details discussed with reference to those figures. The EPG 1145 may display a selectable UI element associated with each navigation group 1140, which, when selected, causes identification of television channels and program data 1116 in the EPG 1145. Also, for each navigation group 1140, the EPG 1145 may identify the title of the navigation group 1140 and the number of television channels within a respective navigation group 1140. [00152] As shown in FIG. 11, the EPG 1145 may include a navigation block 1139-1 (e.g., your channels) with a favorite-channel group 1140a and a provider-specific group 1140d- 1. In some examples, in response to the user identifying at least one television channel as a favorite channel, the EPG 1145 may display the favorite-channel group 1140a in the navigation block 1139-1. In some examples, if the user has not identified any favorite channels, the EPG 1145 may not display the favorite-channel group 1140a in the navigation block 1139-1. In some examples, the provider-specific group 1140d- 1 includes television channels associated with a specific media provider, and, in some examples, are included as part of a paid live television subscription.
[00153] The EPG 1145 may include a navigation block 1139-2 (e.g., built-in channels, free built-in channels) with a provider-specific group 1140d-2 and a tunerchannel group 1140e. A navigation block may represent a category of navigation groups 1140 and may include one or more navigation groups 1140. If the television device does not include a tuner and/or an antenna, in some examples, the navigation block 1139-2 may include the provider-specific group 1140d-2. In some examples, the provider-specific group 1140d-2 in the navigation block 1139-2 may include television channels that are offered for free by the media platform. The tuner-channel group 1140e may include television channels available to be broadcasted by the television device. The EPG 1145 may include a navigation block 1139-3 (e.g., free channels from apps) with a plurality of genre-based groups 1140f. In some examples, the genre-based groups 1140f may include a recommendation group (e.g., popular) that identifies popular television channels.
[00154] In FIG. 11, the user has selected a UI element corresponding to the provider-specific group 1140d-2, which caused the EPG 1145 to identify a group list 1165 of television channels that correspond to the provider-specific group 1140d-2. Also, the EPG 1145 displays program data 1116 about the programs broadcasted by the television
channels in the provider-specific group 1140d-2. The user can select a UT element corresponding to a different navigation group 1140, which causes the EPG 1145 to display a group list 1165 and program data 1116 for the selected navigation group 1140.
[00155] FIG. 12 illustrates an example of a user interface 1286 depicting an EPG 1245 with a plurality of navigation groups 1240. The user interface 1286 may be an example of the user interface 186 of FIGS. 1A through IF and may include any of the details discussed with reference to those figures. The EPG 1245 may display a selectable UI element associated with each navigation group 1240, which, when selected, causes identification of television channels and program data 1216 in the EPG 1245. Also, for each navigation group 1240, the EPG 1245 may identify the title of the navigation group 1240 and the number of television channels within a respective navigation group 1240.
[00156] As shown in FIG. 12, the EPG 1245 may include a navigation block 1239-1 (e.g., your channels) with a recent-channel group 1240b and a favorite-channel group 1240a. In some examples, in response to the user identifying at least one television channel as a favorite channel, the EPG 1245 may display the favorite-channel group 1240a in the navigation block 1239-1. In some examples, if the user has not identified any favorite channels, the EPG 1245 may not display the favorite-channel group 1240a in the navigation block 1239-1. In some examples, in response to the user watching a threshold number of television channels (e.g., one, two, three, four, or any number greater than four), the EPG 1245 may display the recent-channel group 1240b
[00157] The EPG 1245 may include a navigation block 1239-2 (e.g., built-in channels, free built-in channels) with a provider-specific group 1240d. In the example of FIG. 12, the television device does not include a tuner and/or an antenna. In some examples, the provider-specific group 1240d in the navigation block 1239-2 may include television channels that are offered for free by the media platform. The EPG 1245 may include a navigation block 1239-3 (e.g., free channels from apps) with a plurality of genrebased groups 1240f.
[00158] In FIG. 12, the user selected the recent-channel group 1240b, which caused the EPG 1145 to identify a group list 1265 of television channels that correspond to the recent-channel group 1240b. Also, the EPG 1245 displays program data 1216 about the programs broadcasted by the television channels in the recent-channel group 1240b. The
user can select a different navigation group 1240, which causes the EPG 1245 to display a group list 1265 and program data 1216 for the selected navigation group 1240.
[00159] FIG. 13 illustrates a flowchart 1300 depicting example operations for integrating television channels from multiple providers in a single electronic programming guide (EPG) of a media platform. Although the flowchart 1300 of FIG. 13 illustrates the operations in sequential order, it will be appreciated that this is merely an example, and that additional or alternative operations may be included. Further, operations of FIG. 13 and related operations may be executed in a different order than that shown, or in a parallel or overlapping fashion. The operations may define a computer-implemented method. Although the flowchart 1300 is described with reference to the system 100 of FIGS. 1A through IF, the flowchart 1300 may be executed according to any of the figures discussed herein. In some examples, the operations of the flowchart 1300 are executed by a media platform 104 executable by one or more server computers 102.
[00160] Operation 1302 includes receiving, by a media platform 104, a request 127 for electronic programming guide data 144 from a television device 152. Operation 1304 includes retrieving, from a media provider database 108, a list 166 of television channels 118 associated with an account identifier or a device identifier of the television device 152, the list 166 of television channels 118 being associated with a plurality of providers 124.
[00161] Operation 1306 includes constructing, using configuration data 135, a plurality of navigation groups 140, each of the plurality of navigation groups 140 being a separate group of television channels 118. Operation 1308 includes retrieving, from the media provider database 108, program data 116 that identifies programs 117 broadcasted by the list of television channels 118.
[00162] Operation 1310 includes transmitting, by the media platform 104, the electronic programming guide data 144 to the television device 152, the electronic programming guide data 144 configured to cause the television device 152 to display a selectable user interface (UI) element 141 corresponding to each of the plurality of navigation groups 140 in a first portion 199-1 of an electronic programming guide 145 such that selection of the selectable UI element 141 is configured to cause the television device 152 to display programs 117 and television channels 118 corresponding to a
respective navigation group 140 in a second portion 199-2 of the electronic programming guide 145.
[00163] In some aspects, the list of television channels includes a first television channel provided by a first provider and a second television channel provided by a second provider. The operations may include determining that the first television channel and the second television channel relate to the same television channel and merging the first television channel and the second television channel into a single television channel. In some examples, the operations include computing ranking information that ranks the first provider and the second provider according to a plurality of signals, where the ranking information is included as part of the electronic programming guide data. In response to selection of the single television channel from the electronic programming guide, the ranking information is configured to cause the television device to display the first provider and the second provider for user selection according to the ranking information. In some examples, the plurality of signals include a user-provided search signal, a user preference signal, a cost signal, and/or an installation signal. The plurality of navigation groups may include genre-based groups that identify television channels by genre. The operations may include identifying at least one recent television channel based on user activity associated with the account identifier, where the plurality of navigation groups includes a recent-channel group that identifies the at least one recent television channel.
[00164] In some examples, the operations include receiving, by the media platform, tuner channel data identifying a tuner-based television channel scanned by a television tuner of the television device, retrieving, from the media provider database, a list of tunerbased television channels associated with a location of the television device, identifying the tuner-based television channel from the list of tuner-based television channels using the tuner channel data, and including a tuner-channel group in the plurality of navigation groups, the tuner-channel group identifying the tuner-based television channel. In some examples, the operations include determining that the account identifier has access to a specific provider, and including a provider-specific group in the plurality of navigation groups, the provider-specific group identifying television channels provided by the specific provider. In some examples, the operations include identifying a plurality of
recommended television channels, where the plurality of navigation groups include a recommendation group that identifies the plurality of recommended television channels.
[00165] In some aspects, the techniques described herein relate to a non-transitory computer-readable medium storing executable instructions that when executed by at least one processor cause the at least one processor to execute operations, the operations including: receiving, by a media platform, a request for electronic programming guide data from a television device; retrieving, from a media provider database, a list of television channels associated with an account identifier or a device identifier of the television device, the list of television channels being associated with a plurality of providers; determining a plurality of navigation groups based on entitlement data associated with the account identifier, each of the plurality of navigation groups being a separate group of television channels; retrieving, from the media provider database, program data that identifies programs broadcasted by the list of television channels; and transmitting, by the media platform, the electronic programming guide data to the television device, the electronic programming guide data configured to cause the television device to display a selectable user interface (UI) element corresponding to each of the plurality of navigation groups in a first portion of an electronic programming guide such that selection of the selectable UI element is configured to cause the television device to display programs and television channels corresponding to a respective navigation group in a second portion of the electronic programming guide.
[00166] In some aspects, the techniques described herein relate to a non-transitory computer-readable medium, wherein the list of television channels includes a first television channel provided by a first provider and a second television channel provided by a second provider; the operations further including: determining that the first television channel and the second television channel relate to a same television channel; and merging the first television channel and the second television channel into a single television channel. In some aspects, the techniques described herein relate to a non-transitory computer-readable medium, wherein the operations further include: computing ranking information that ranks the second provider higher than the first provider according to a plurality of signals, the ranking information being included as part of the electronic programming guide data, wherein, in response to selection of the single television channel
from the electronic programming guide, the ranking information configured to cause the television device to identify the second provider as a primary watch entity.
[00167] In some aspects, the techniques described herein relate to a non-transitory computer-readable medium, wherein the plurality of signals include at least one of a user- provided search signal, a user preference signal, a cost signal, or an installation signal. In some aspects, the techniques described herein relate to a non-transitory computer-readable medium, wherein the operations further include: identifying at least one recent television channel based on user activity associated with the account identifier, wherein the plurality of navigation groups include a recent-channel group that identifies the at least one recent television channel. In some aspects, the techniques described herein relate to a non- transitory computer-readable medium, wherein the operations further include: receiving, by the media platform, tuner channel data identifying a tuner-based television channel scanned by a television tuner of the television device; retrieving, from the media provider database, a list of tuner-based television channels associated with a location of the television device; identifying the tuner-based television channel from the list of tunerbased television channels using the tuner channel data; and including a tuner-channel group in the plurality of navigation groups, the tuner-channel group identifying the tunerbased television channel. In some aspects, the techniques described herein relate to a non- transitory computer-readable medium, wherein the operations further include: determining that the account identifier has access to a specific provider; and including a providerspecific group in the plurality of navigation groups, the provider-specific group identifying television channels provided by the specific provider.
[00168] FIG. 14 illustrates a flowchart 1400 depicting example operations for integrating television channels from multiple providers in a single electronic programming guide (EPG) of a media platform. Although the flowchart 1400 of FIG. 14 illustrates the operations in sequential order, it will be appreciated that this is merely an example, and that additional or alternative operations may be included. Further, operations of FIG. 14 and related operations may be executed in a different order than that shown, or in a parallel or overlapping fashion. The operations may define a computer-implemented method. Although the flowchart 1400 is described with reference to the system 100 of FIGS. 1 A through IF, the flowchart 1400 may be executed according to any of the figures discussed
herein Tn some examples, the operations of the flowchart 1400 are executed by a network- enabled television device.
[00169] Operation 1402 includes transmitting a request 127 for electronic programming guide data 144 to a media platform 104. Operation 1404 includes receiving electronic programming guide data 144 from the media platform 104, the electronic programming guide data 144 configured to cause the television device 152 to identify a plurality of navigation groups 140 in a first portion 199-1 of an electronic programming guide 145.
[00170] Operation 1406 includes, in response to selection of a first user interface (UI) element 141 corresponding to a first navigation group 140 of the plurality of navigation groups 140, displaying programs 117 and television channels 118 corresponding to the first navigation group 140 in a second portion 199-2 of the electronic programming guide 145. Operation 1408 includes, in response to selection of a second UI element 141 corresponding to a second navigation group 140 of the plurality of navigation groups 140, displaying programs 117 and television channels 118 corresponding to the second navigation group 140 in the second portion 199-2 of the electronic programming guide 145.
[00171] In some examples, the first navigation group includes a provider-specific group that identifies television channels associated with a specific provider, and the second navigation group includes a genre-based group that identifies television channels within a particular genre. In some examples, the first navigation group includes a recent-channel group that identifies one or more recent televisions based on user activity associated with an account identifier, and the second navigation group includes a tuner-channel group that identifies a plurality of tuner-based television channels.
[00172] In some examples, the operations include receiving a selection to a program on the second portion of the electronic programming guide, the program being available to watch on a television channel associated with a first provider and a television channel associated with a second provider and displaying information that identifies the second provider as a primary watch entity.
[00173] Various implementations of the systems and techniques described here can be realized in digital electronic circuitry, integrated circuitry, specially designed ASICs
(application specific integrated circuits), computer hardware, firmware, software, and/or combinations thereof. These various implementations can include implementation in one or more computer programs that are executable and/or interpretable on a programmable system including at least one programmable processor, which may be special or general purpose, coupled to receive data and instructions from, and to transmit data and instructions to, a storage system, at least one input device, and at least one output device.
[00174] These computer programs (also known as programs, software, software applications or code) include machine instructions for a programmable processor and can be implemented in a high-level procedural and/or object-oriented programming language, and/or in assembly/machine language. As used herein, the terms “machine-readable medium” “computer-readable medium” refers to any computer program product, apparatus and/or device (e.g., magnetic discs, optical disks, memory, Programmable Logic Devices (PLDs)) used to provide machine instructions and/or data to a programmable processor, including a non-transitory machine-readable medium that receives machine instructions as a machine-readable signal. The term “machine-readable signal” refers to any signal used to provide machine instructions and/or data to a programmable processor.
[00175] To provide for interaction with a user, the systems and techniques described here can be implemented on a computer having a display device (e.g., a CRT (cathode ray tube) or LCD (liquid crystal display) monitor) for displaying information to the user and a keyboard and a pointing device (e.g., a mouse or a trackball) by which the user can provide input to the computer. Other kinds of devices can be used to provide for interaction with a user as well; for example, feedback provided to the user can be any form of sensory feedback (e.g., visual feedback, auditory feedback, or tactile feedback); and input from the user can be received in any form, including acoustic, speech, or tactile input.
[00176] The systems and techniques described here can be implemented in a computing system that includes a back end component (e.g., as a data server), or that includes a middleware component (e.g., an application server), or that includes a front end component (e.g., a client computer having a graphical user interface or a Web browser through which a user can interact with an implementation of the systems and techniques described here), or any combination of such back end, middleware, or front end components. The components of the system can be interconnected by any form or non-
transitory medium of digital data communication (e g., a communication network). Examples of communication networks include a local area network (“LAN”), a wide area network (“WAN”), and the Internet.
[00177] The computing system can include clients and servers. A client and server are generally remote from each other and typically interact through a communication network. The relationship of client and server arises by virtue of computer programs running on the respective computers and having a client-server relationship to each other.
[00178] In this specification and the appended claims, the singular forms "a," "an" and "the" do not exclude the plural reference unless the context clearly dictates otherwise. Further, conjunctions such as “and,” “or,” and “and/or” are inclusive unless the context clearly dictates otherwise. For example, “A and/or B” includes A alone, B alone, and A with B. Further, connecting lines or connectors shown in the various figures presented are intended to represent example functional relationships and/or physical or logical couplings between the various elements. Many alternative or additional functional relationships, physical connections or logical connections may be present in a practical device. Moreover, no item or component is essential to the practice of the embodiments disclosed herein unless the element is specifically described as “essential” or “critical”.
[00179] Terms such as, but not limited to, approximately, substantially, generally, etc. are used herein to indicate that a precise value or range thereof is not required and need not be specified. As used herein, the terms discussed above will have ready and instant meaning to one of ordinary skill in the art.
[00180] Moreover, use of terms such as up, down, top, bottom, side, end, front, back, etc. herein are used with reference to a currently considered or illustrated orientation. If they are considered with respect to another orientation, it should be understood that such terms must be correspondingly modified.
[00181] Further, in this specification and the appended claims, the singular forms "a," "an" and "the" do not exclude the plural reference unless the context clearly dictates otherwise. Moreover, conjunctions such as “and,” “or,” and “and/or” are inclusive unless the context clearly dictates otherwise. For example, “A and/or B” includes A alone, B alone, and A with B.
[00182] Although certain example methods, apparatuses and articles of manufacture have been described herein, the scope of coverage of this patent is not limited thereto. It is to be understood that terminology employed herein is for the purpose of describing particular aspects and is not intended to be limiting. On the contrary, this patent covers all methods, apparatus and articles of manufacture fairly falling within the scope of the claims of this patent.
Claims
1. A method comprising: receiving, by a media platform, a request for electronic programming guide data from a television device; retrieving, from a media provider database, a list of television channels associated with an account identifier or a device identifier of the television device, the list of television channels being associated with a plurality of providers; constructing, using configuration data, a plurality of navigation groups, each of the plurality of navigation groups being a separate group of television channels; retrieving, from the media provider database, program data that identifies programs broadcasted by the list of television channels; and transmitting, by the media platform, the electronic programming guide data to the television device, the electronic programming guide data configured to cause the television device to display a selectable user interface (UI) element corresponding to each of the plurality of navigation groups in a first portion of an electronic programming guide such that selection of the selectable UI element is configured to cause the television device to display programs and television channels corresponding to a respective navigation group in a second portion of the electronic programming guide.
2. The method of claim 1, wherein the list of television channels includes a first television channel provided by a first provider and a second television channel provided by a second provider; the method further comprising: determining that the first television channel and the second television channel relate to a same television channel; and merging the first television channel and the second television channel into a single television channel.
3. The method of claim 2, further comprising:
computing ranking information that ranks the first provider and the second provider according to a plurality of signals, the ranking information being included as part of the electronic programming guide data, wherein, in response to selection of the single television channel from the electronic programming guide, the ranking information configured to cause the television device to display the first provider and the second provider for user selection according to the ranking information.
4. The method of claim 3, wherein the plurality of signals include at least one of a user-provided search signal, a user preference signal, a cost signal, or an installation signal.
5. The method of claim 1, wherein the plurality of navigation groups include genrebased groups that identify television channels by genre.
6. The method of claim 1, further comprising: identifying at least one recent television channel based on user activity associated with the account identifier, wherein the plurality of navigation groups includes a recent-channel group that identifies the at least one recent television channel.
7. The method of claim 1, further comprising: receiving, by the media platform, tuner channel data identifying a tuner-based television channel scanned by a television tuner of the television device; retrieving, from the media provider database, a list of tuner-based television channels associated with a location of the television device; identifying the tuner-based television channel from the list of tuner-based television channels using the tuner channel data; and including a tuner-channel group in the plurality of navigation groups, the tunerchannel group identifying the tuner-based television channel.
8. The method of claim 1, further comprising:
determining that the account identifier has access to a specific provider; and including a provider-specific group in the plurality of navigation groups, the provider-specific group identifying television channels provided by the specific provider.
9. The method of claim 1, further comprising: identifying a plurality of recommended television channels, wherein the plurality of navigation groups include a recommendation group that identifies the plurality of recommended television channels.
10. A non-transitory computer-readable medium storing executable instructions that when executed by at least one processor cause the at least one processor to execute operations, the operations comprising: receiving, by a media platform, a request for electronic programming guide data from a television device; retrieving, from a media provider database, a list of television channels associated with an account identifier or a device identifier of the television device, the list of television channels being associated with a plurality of providers; determining a plurality of navigation groups based on entitlement data associated with the account identifier, each of the plurality of navigation groups being a separate group of television channels; retrieving, from the media provider database, program data that identifies programs broadcasted by the list of television channels; and transmitting, by the media platform, the electronic programming guide data to the television device, the electronic programming guide data configured to cause the television device to display a selectable user interface (UI) element corresponding to each of the plurality of navigation groups in a first portion of an electronic programming guide such that selection of the selectable UI element is configured to cause the television device to display programs and television channels corresponding to a respective navigation group in a second portion of the electronic programming guide.
11 . The non-transitory computer-readable medium of claim 10, wherein the list of television channels includes a first television channel provided by a first provider and a second television channel provided by a second provider; the operations further comprising: determining that the first television channel and the second television channel relate to a same television channel; and merging the first television channel and the second television channel into a single television channel.
12. The non-transitory computer-readable medium of claim 11, wherein the operations further comprise: computing ranking information that ranks the second provider higher than the first provider according to a plurality of signals, the ranking information being included as part of the electronic programming guide data, wherein, in response to selection of the single television channel from the electronic programming guide, the ranking information configured to cause the television device to identify the second provider as a primary watch entity.
13. The non-transitory computer-readable medium of claim 12, wherein the plurality of signals include at least one of a user-provided search signal, a user preference signal, a cost signal, or an installation signal.
14. The non-transitory computer-readable medium of claim 10, wherein the operations further comprise: identifying at least one recent television channel based on user activity associated with the account identifier, wherein the plurality of navigation groups include a recent-channel group that identifies the at least one recent television channel.
15. The non-transitory computer-readable medium of claim 10, wherein the operations further comprise:
receiving, by the media platform, tuner channel data identifying a tuner-based television channel scanned by a television tuner of the television device; retrieving, from the media provider database, a list of tuner-based television channels associated with a location of the television device; identifying the tuner-based television channel from the list of tuner-based television channels using the tuner channel data; and including a tuner-channel group in the plurality of navigation groups, the tunerchannel group identifying the tuner-based television channel.
16. The non-transitory computer-readable medium of claim 10, wherein the operations further comprise: determining that the account identifier has access to a specific provider; and including a provider-specific group in the plurality of navigation groups, the provider-specific group identifying television channels provided by the specific provider.
17. A television device comprising: at least one processor; and a non-transitory computer-readable medium storing executable instructions that cause the at least one processor to: transmit a request for electronic programming guide data to a media platform; receive electronic programming guide data from the media platform, the electronic programming guide data configured to cause the television device to identify a plurality of navigation groups in a first portion of an electronic programming guide; in response to selection of a first user interface (UI) element corresponding to a first navigation group of the plurality of navigation groups, display programs and television channels corresponding to the first navigation group in a second portion of the electronic programming guide; and in response to selection of a second UI element corresponding to a second navigation group of the plurality of navigation groups, display programs and
television channels corresponding to the second navigation group in the second portion of the electronic programming guide.
18. The television device of claim 17, wherein the first navigation group includes a provider-specific group that identifies television channels associated with a specific provider, and the second navigation group includes a genre-based group that identifies television channels within a particular genre.
19. The television device of claim 17, wherein the first navigation group includes a recent-channel group that identifies one or more recent televisions based on user activity associated with an account identifier, and the second navigation group includes a tunerchannel group that identifies a plurality of tuner-based television channels.
20. The television device of claim 17, wherein the executable instructions include instructions that cause the at least one processor to: receive a selection to a program on the second portion of the electronic programming guide, the program being available to watch on a television channel associated with a first provider and a television channel associated with a second provider; and display information that identifies the second provider as a primary watch entity.
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| PCT/US2023/017521 WO2024210893A1 (en) | 2023-04-05 | 2023-04-05 | Integrating live television content from multiple sources in an electronic program guide of a media platform |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| EP4659453A1 true EP4659453A1 (en) | 2025-12-10 |
Family
ID=86286575
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| EP23721101.6A Pending EP4659453A1 (en) | 2023-04-05 | 2023-04-05 | Integrating live television content from multiple sources in an electronic program guide of a media platform |
Country Status (2)
| Country | Link |
|---|---|
| EP (1) | EP4659453A1 (en) |
| WO (1) | WO2024210893A1 (en) |
Family Cites Families (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| GB2325537B8 (en) * | 1997-03-31 | 2000-01-31 | Microsoft Corp | Query-based electronic program guide |
| US10521188B1 (en) * | 2012-12-31 | 2019-12-31 | Apple Inc. | Multi-user TV user interface |
| US10284916B2 (en) * | 2014-11-19 | 2019-05-07 | Comcast Cable Communications, Llc | Personalized menus and media content interface |
| US12294448B2 (en) * | 2021-03-23 | 2025-05-06 | Sling TV L.L.C. | Systems and methods for unifying local channels with over-the-top services |
-
2023
- 2023-04-05 WO PCT/US2023/017521 patent/WO2024210893A1/en not_active Ceased
- 2023-04-05 EP EP23721101.6A patent/EP4659453A1/en active Pending
Also Published As
| Publication number | Publication date |
|---|---|
| WO2024210893A1 (en) | 2024-10-10 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US12238383B2 (en) | Method and system for trending media programs for a user | |
| EP3211890B1 (en) | Systems and methods for creating aggregations of episodes of series programming in order | |
| US9032451B2 (en) | Method and system for using a second screen device for interacting with a set top box to enhance a user experience | |
| US8677276B1 (en) | System and method of contextual pre-tuning | |
| US20150312618A1 (en) | Systems and Methods for Generating a Full-Motion Video Mosaic Interface for Content Discovery with User-Configurable Filters | |
| US20170124076A1 (en) | Searching multimedia based on trigger events | |
| KR20120138233A (en) | Smart catch-up for media content viewing | |
| EP2475167A1 (en) | Method for displaying video and broadcast receiving apparatus applying the same | |
| US20150358663A1 (en) | Personal linear channel | |
| US20160170582A1 (en) | Interactive cloud based content delivery service | |
| CN112702622B (en) | Program searching method, apparatus, device and computer readable storage medium | |
| WO2022017018A1 (en) | Display device, server, and video recommending method | |
| US20240095386A1 (en) | System and method for aggregating viewable content from multiple sources via user-friendly interface | |
| EP4659453A1 (en) | Integrating live television content from multiple sources in an electronic program guide of a media platform | |
| KR102685283B1 (en) | Menu service device and operation method of menu service device | |
| US20240314393A1 (en) | Integrating tuner-based media content with server-based media content in a television platform | |
| KR20090019166A (en) | How to provide and display initial screen user interface for user TV in IPTV service |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| STAA | Information on the status of an ep patent application or granted ep patent |
Free format text: STATUS: UNKNOWN |
|
| STAA | Information on the status of an ep patent application or granted ep patent |
Free format text: STATUS: THE INTERNATIONAL PUBLICATION HAS BEEN MADE |
|
| PUAI | Public reference made under article 153(3) epc to a published international application that has entered the european phase |
Free format text: ORIGINAL CODE: 0009012 |
|
| STAA | Information on the status of an ep patent application or granted ep patent |
Free format text: STATUS: REQUEST FOR EXAMINATION WAS MADE |
|
| 17P | Request for examination filed |
Effective date: 20250904 |
|
| AK | Designated contracting states |
Kind code of ref document: A1 Designated state(s): AL AT BE BG CH CY CZ DE DK EE ES FI FR GB GR HR HU IE IS IT LI LT LU LV MC ME MK MT NL NO PL PT RO RS SE SI SK SM TR |