Sharing Television and Video Programming Through Social Networking
In particular embodiments a social networking system may receive from an external system outside the social-networking system, a request comprising a user identifier associated with a user of the social-networking system, query a social graph for stories generated by one or more connections of the user on the social-networking system, and transmit the stories to the external system. Similarly the social networking system may receive, from an external system outside of the social networking system, a request comprising a user identifier associated with a user of the social networking system, a content identifier, and a action performed by the user on the content identifier, generate a story for the received request, and publish the story to one or more connections of the user on the social networking system.
This disclosure relates generally to social networking.
BACKGROUNDComputer users may access and share information through various local and wide area computer networks, including proprietary networks as well as public networks such as the Internet. Typically, a web browser installed on a user's computing device facilitates access to and interaction with information located at various network servers identified by, for example, associated uniform resource locators (URLs). Social-networking websites may facilitate the sharing of user-generated content. Such websites may include, be linked with, or provide platforms for applications enabling users to view or interact with “profile” pages created or customized by other users. A set of rules may govern users' ability to view or interact with other users' profile pages, and a user's profile page may include user-declared information such as contact information, background information, job or career information, and interests.
A social network may be a social structure made of individuals, groups, entities, or organizations represented by nodes that are tied (connected) to each other by one or more specific types of interdependency. Social-network (graph) analysis may view social relationships, in terms of network theory, as nodes and edges. Nodes may represent the individual actors within the social network, and edges may represent the relationships between individual actors. The resulting graph-based structure(s) may very complex. There may be many kinds of edges between nodes. A social network (or social graph) may be a map of all relevant edges between or among all nodes being studied.
Particular embodiments integrate third-party content delivery services such as cable providers and online video services with a social networking system for active and passive sharing of consumed content among the users of the social networking system. Such integration may permit a user of the social-networking system to discover content watched, “liked”, or scheduled to be watched by the user's friends and first-degree connections. Similarly, the user may explicitly share content to his or her friends and first-degree connections by actively selecting user interface elements to “like” or “share” a piece of content, or passively share currently viewed content substantially in real-time by enabling a “sharing” mode.
In particular embodiments, users may discover or share content from any device or service integrated with the social networking system. For example, a particular user may discover content not only by browsing his or her friends' profile pages stored on and rendered by the social networking system, but by accessing a third-party web page of a over the top (OTT) content provider such as NetFlix or Hulu. In particular embodiments, a user may discover or share content via his or her television set through a multiple system operator (MSO) or other cable provider. In particular embodiments, social data may be presented to the user through the electronic program guide received from the MSO by the user's set-top box (STB), and displayed on the user's television set. In particular embodiments, users of the social networking system may discover or share content via a specialized application for a third-party service on a mobile computing device, such as a smartphone or tablet. For example, the user may browse his or her friends' favorite movies or share his or her own favorite movies via a NetFlix application resident on the user's smartphone. As another example, a user may discover or share content via a smartphone application that is also linked to a MSO or cable provider, such as a mobile application for managing the user's digital video recorder (DVR) offered by AT&T U-Verse cable service.
Particular embodiments may map multiple content descriptors from a plurality of services of varying formats into a single content identifier. For example, four users may share that they are watching the show “The Office” from Hulu, NetFlix, Comcast cable, and Dish Network satellite TV. Each individual service providers' format for identifying content may be of a different format and include varying text or meta-data. Absent centralized aggregation of these heterogeneous content descriptors into a single content identifier, shares from users of disparate services are meaningless and unusable. Hence, particular embodiments provide a system for matching content identifiers of varying format to a single node within the social graph.
The Application Programming Interface (API) request server 106 allows one or more external systems 122 and user devices 123 to access information from social networking system 100 by calling one or more APIs. API request server 106 may also allow external systems 122 to send information to social networking website by calling APIs. An external systems 122, in one embodiment sends an API request to social networking system 100 via network 121 and API request server 106 receives the API request. API request server 106 processes the request by calling an API associated with the API request to generate an appropriate response, which API request server 106 communicates to the external systems 122 via network 121. For example, responsive to an API request, API request server 106 collects data associated with a user, such as the user's connections that have logged into the external systems 122, and communicates the collected data to the external systems 122. In another embodiment, a user device 110 communicates with social networking system 100 via APIs in the same manner as external systems 122.
Action logger 102 is capable of receiving communications from web server 101 about user actions on and/or off social networking system 100. Action logger 102 populates action log 107 with information about user actions, enabling social networking system 100 to discover various actions taken by its users within social networking system 100 and outside of social networking system 100. Any action that a particular user takes with respect to another node on social networking system 100 is associated with each user's profile, through information maintained in action log 107 or in a similar database or other data repository. Examples of actions taken by a user within the social network 130 that are identified and stored may include, for example, adding a connection to another user, sending a message to another user, reading a message from another user, viewing content associated with another user, attending an event posted by another user or other actions interacting with another user. When a user takes an action within social networking system 100, the action is recorded in an action log 107. In one embodiment, the social networking system maintains action log 107 as a database of entries. When an action is taken within social networking system 100, an entry for the action is added to action log 107. In one embodiment, action log 107 may be referred to as an action log.
Additionally, user actions may be associated with concepts and actions that occur within an entity outside of social networking system 100, such as an external systems 122 that is separate from social networking system 100. For example, action logger 102 may receive data describing a user's interaction with an external systems 122 from web server 101. In this example, the external systems 122 reports a user's interaction according to structured actions and objects in the social graph. The received interaction may include, in one embodiment, a graph object and a graph action that were defined by a graph definition module 103. Action logger 102 would interpret the received interaction according to the definition of the graph action and graph object. For example, an action logger 102 may receive an interaction that includes a user's unique identifier, a graph action called “watch,” and a graph object called “show.” Action log 107 would be populated with this received information. Other examples of actions where a user interacts with an external systems 122 include a user expressing an interest in an external systems 122 or another entity, a user posting a comment to social networking system 100 that discusses an external systems 122 or a web page 122a within the external systems 122, a user posting to social networking system 100 a Uniform Resource Locator (URL) or other identifier associated with an external systems 122, a user attending an event associated with an external systems 122 or any other action by a user that is related to an external systems 122. Thus, action log 107 may include actions describing interactions between a user of social networking system 100 and an external systems 122 that is separate from social networking system 100.
Authorization server 117 enforces one or more privacy settings of the users of social networking system 100. A privacy setting of a user determines how particular information associated with a user can be shared. The privacy setting comprises the specification of particular information associated with a user and the specification of the entity or entities with whom the information can be shared. Examples of entities with which information can be shared may include other users, applications, external systems 122 or any entity that can potentially access the information. The information that can be shared by a user comprises user profile information like profile photo, phone numbers associated with the user, user's connections, actions taken by the user such as adding a connection, changing user profile information and the like.
The privacy setting specification may be provided at different levels of granularity. For example, the privacy setting may identify specific information to be shared with other users. For example, the privacy setting identifies a work phone number or a specific set of related information, such as, personal information including profile photo, home phone number, and status. Alternatively, the privacy setting may apply to all the information associated with the user. The specification of the set of entities that can access particular information can also be specified at various levels of granularity. Various sets of entities with which information can be shared may include, for example, all friends of the user, all friends of friends, all applications, or all external systems 122. One embodiment allows the specification of the set of entries comprise an enumeration of entities, for example, the user may provide a list of external systems 122 that are allowed to access certain information. Another embodiment allows the specification to comprise a set of entities along with exceptions that are not allowed to access the information. For example, a user may allow all external systems 122 to access the user's work information but specify a list of external systems 122 that are not allowed to access the work information. Certain embodiments call the list of exceptions that are not allowed to access certain information a block list. External systems 122 belonging to a block list specified by a user are blocked from accessing the information specified in the privacy setting. Note that the various combinations of granularity of specification of information and the granularity of specification of entities with which information is shared are possible, i.e., all personal information may be shared with friends whereas all work information may be shared with friends of friends.
Authorization server 117 contains logic to determine if certain information associated with a user can be accessed by a user's friends, external systems 122 and/or other applications and entities. An external systems 122 that attempts to access a user's comment about a URL associated with the external systems 122 may also need authorization from authorization server 117 to access the user's more private and sensitive information, such as the user's work phone number. Based on the user's privacy settings, authorization server 117 determines if another user, an external systems 122, an application or another entity is allowed to access information associated with the user, including information about actions taken by the user. In one embodiment, authorization server 117 uses a users privacy setting to determine if the user's comment about a URL associated with the external systems 122 can be accessed by the external systems 122. The user's privacy setting may specify which other users, or other entities, are allowed to receive data about the user's actions or other information associated with the user.
Additionally, social networking system 100 maintains data about objects with which a user may interact with. To maintain this data, user profile store 110 and connection store 111 store instances of the corresponding type of objects maintained by social networking system 100. Each object type has information fields that are suitable for storing information appropriate to the type of object. For example, user profile store 110 contains data structures with fields suitable for describing a user's profile. When a new object of a particular type is created, social networking system 100 initializes a new data structure of the corresponding type, assigns a unique object identifier to it, and begins to add data to the object as needed. This might occur, for example, when a user becomes a user of social networking system 100, social networking system 100 generates a new instance of a user profile in user profile store 110, assigns a unique identifier to the user profile, and begins to populate the fields of the user profile with information provided by the user.
Connection store 111 includes data structures suitable for describing a user's connections to other users, connections to external systems 122 or connections to other entities. Connection store 111 may also associate a connection type with a user's connections, which may be used in conjunction with the user's privacy setting to regulate access to information about the user.
Data stored in connection store 111, user profile store 110 and action log 107 enables the social networking system 120 to generate a social graph that uses nodes to identify various objects and edges connecting nodes to identify relationships between different objects. An edge between two nodes in the social graph represents a particular kind of connection between the two nodes, which may result from an action that was performed by one of the nodes on the other node.
For example, if a first user establishes a connection with a second user in the social networking system, user profiles of the first user and the second users from user profile store 110 may act as nodes in the social graph. The connection between the first user and the second user stored by connection store 111 is an edge between the nodes associated with the first user and the second user. Continuing this example, the second user may then send the first user a message within social networking system 100, which is identified by action logger 102 and stored in action log 107. The stored action of sending the message is another edge between the two nodes in the social graph representing the first user and the second user. Additionally, the message itself may be identified from action log 107 and included in the social graph as another node connected to the nodes representing the first user and the second user.
In another example, a first user may tag a second user in an image that is maintained by social networking system 100 (or, alternatively, in an image maintained by another system outside of social networking system 100). The image may itself be represented a node in social networking system 100. This tagging action may create edges between the first user and the second user as well as create an edge between each of the users and the image, which is also a node in the social graph. In yet another example, if a user confirms attending an event, the user and the event are nodes obtained from user profile store 110, where the attendance of the event is an edge between the nodes that may be retrieved from action log 107. By generating and maintaining the social graph, social networking system 100 includes data describing many different types of objects and the interactions and connections among those objects, providing a rich source of socially relevant information.
Building upon this understanding of a social graph, which comprises nodes and edges, the social graph can be “opened” by enabling third-party developers and external systems 122 to define objects and actions to be published to the social graph. As previously discussed, a graph definition module 103 may be linked to graph action type store 112 and a graph object type store 114. Graph definition module 103 enables the creation of actions and objects that imitate real-world interactions. An action such as “watched” may include various properties, such as a location where the action took place, the user or users taking part in the action, and a time duration field to record how long the user performed the action. The resulting graph action type may, in one embodiment, be stored in graph action type store 112. Objects such as “film,” “TV show,” “genre,” and “station” may be defined using the graph object type store 114 to have object properties, such as visual object type, auditory object type, musical object type, performing arts object type, and the like. These graph object types are stored in graph object type store 114.
In one embodiment, graph definition module 103 defines certain actions to be performed on certain objects. For example, an administrator of social networking system 100 may define the “watch” action to only be performed on visual object types, such as “film,” “show,” “genre,” and “station” objects. Thus, a third-party developer that may desire to define a “speech” object that users can perform the action, “listen” may define his “speech” object as an auditory object type such that the “listen” action may be performed on it.
In another embodiment, graph definition module 103 enables actions to be performed on any object, leaving the semantics to the third-party developer who utilizes actions and objects on the markup language document 114 that is interpreted by the widget. Thus, in this embodiment, a third-party developer may utilize the “listen” action with a “user” object in a voice-over-IP application phone call between a user of social networking system 100 and a user of the voice-over-IP application. If the user of the voice-over-IP application is not a user of social networking system 100, then only the information received from the external systems 122 may be used in action log 107 to be published in the newsfeed or stream in social networking system 100. Thus, context-free grammars may be utilized to capture external user interactions and integrate them into social networking system 100.
A graph publisher API 108 assembles received actions and objects into newsfeed stories or other content items in the stream of content items in social networking system 100, in one embodiment. In another embodiment, graph publisher API 108 responds to an API call from an external systems 122 to retrieve user interactions on the external systems 122. Graph publisher API 108 utilizes the definitions of the actions and objects to determine how to publish the data into the social graph of social networking system 100. In one embodiment, the markup language document 114 includes an instruction to social networking system 100 to publish every action taken on the external systems 122 as a newsfeed story or content item in the stream. In another embodiment, the markup language document 114 includes an instruction to social networking system 100 to publish actions taken on the external systems 122 in batches or in aggregate. Note that social networking system 100 may passively publish these content items into the user's stream on social networking system 100 because of prior authorization provided to the external systems 122. If such authorization to post content items into the stream has not been given by the user, then a dialog box requesting permission would prompt the user.
A graph translation module 105 enables social networking system 100 to dynamically form sentences based on the structured objects and actions generated on external systems 122, such as applications that indicate a number of miles run during a workout or top artists listened to this week. The metadata about these objects, for example, artist objects and workout objects, may be utilized by graph content item ranking module 104 to rank the content items generated from these external user interactions, in one embodiment. The metadata about these objects may be published to a newsfeed stream, added to a user's profile, or displayed via a plug-in (e.g., an iframe) on an external systems 122 that interface with social networking system 100. Separate modules of social networking system 100 may determine a reputation score for applications and/or external systems 122 to identify spam, or unwanted applications. An application's reputation score, indicating a likelihood of spam, is utilized by graph content item ranking module 104 in determining ranking scores for content items generated by the application. The reputation score may be determined from a number of factors, including behavior of the application gathered from heuristics analysis, reports from users that the application is spam, annoying, or offensive, and blacklists that indicate the application is spam.
Another global factor that may be applied to a graph content item ranking score is an overall quality of an application that produces the content item. The quality of an application may be determined via separate modules, and the factors considered in judging the quality of an application may include user engagement with the application, popularity of the application among all users of social networking system 100, consistency of the application behavior observed by social networking system 100, reputation of the authors of the application, and an average rating of the application by users and administrators of social networking system 100. In one embodiment, the overall quality of an application may be represented as an application quality score, and the application quality score is taken as a factor in ranking content items for display to a viewing user.
User-specific factors may also be applied to the ranking of a graph content item. These user-specific factors include weights to other users connected to the viewing user and weights to applications and interests that are preferred by the viewing user. For example, a viewing user may have over 1000 connections to other users on a social networking system 130, but may only interact with 20 of those users on a daily basis through sharing, commenting, expressing approval of and selecting links embodied within content items generated by the subset of users. Thus, content items from those users in the subset may be ranked higher by graph content item ranking module 104. Additionally, content items generated by applications that are preferred by the viewing user, as determined from observed click-through rates, whether the user has installed the application generating the content item, time elapsed since interacting with the application, and number of interactions with the application, may also be ranked higher by graph content item ranking module 104. A viewing user's preferences for applications, interests, and other concepts may be stored as affinity scores in a user profile object associated with the viewing user in user profile store 110.
As an example, a viewing user may be very interested in Lady Gaga, as indicated by an affinity score for Lady Gaga in the user profile object associated with the user. Affinity scores may be computed by separate modules for various interests, nodes, and users of social networking system 100 based on an explicitly stated interest by users on their profile pages or implied interest by actions of users and their connections on social networking system 100 and external systems 122. In one embodiment, the artist object for Lady Gaga is associated with the viewing user's user profile object with a high affinity score. Content items associated with Lady Gaga that were generated on an external systems 122.
Graph content item ranking module 104 may include a recommendation engine highlights objects that may be of interest to a viewing user based on past interactions with other objects, the expressed interests of the viewing user, and the past interactions with other objects by other users connected to the viewing user. Object-to-object similarity analysis may be determined by the recommendation engine asynchronously. Additionally, the recommendation engine may log of what object types have been displayed to a user and, in an effort to diversify the object types presented to the user, it may also recommend object types that have not been recently displayed, in one embodiment. Recommendations may influence a ranking score generated by graph content item ranking module 104 in varying intensities, such as by increasing a ranking score exponentially, linearly, or logarithmically. In one embodiment, an object owner, brand owner, or other third-party may purchase a boost in the ranking score through a user interface on the social networking system. For example, a purchase of a book on an electronic retailer that was communicated to the social networking system as a graph action instance performed by a user of the social networking system may be boosted in the rankings of recommendations to a viewing user connected to the user if the publisher of the book purchased a premium placement for the book within the recommendations for the viewing user of the social networking system.
Graph data may be stored and indexed in graph data store 113. Graph data store 113 includes data structures suitable for describing the graph data received from external systems 122. In one embodiment, graph data may be received from within social networking system 100, such as users sharing stories with other users that include graph data, users playing a song that was shared within their newsfeed stream of stories on social networking system 100, users purchasing a product from within an application on social networking system 100, and users watching a video from a playlist that was shared in a message from other users of social networking system 100. Graph data may include custom graph actions, actors (users performing custom graph actions), custom graph objects, and properties of the custom graph actions and custom graph objects that have been defined by entities external to social networking system 100.
When graph data is received, social networking system 100 may search for the graph data in graph data store 113 and add data to the object as needed. This might occur, for example, when a user watches a program or show previously watched on an external systems 122. In this case, the graph data corresponding to the show object may be modified to reflect the new watch action. Graph integration module 116 may interact with graph data store 113 to provide a user interface on the user's user profile page on social networking system 100 that reflects the new watch action. Because graph data may be collected about similar objects from multiple domains, such as Spotify, iTunes, Rovi, proprietary EPG data from MSOs, and RDIO, a virtual object may be created by social networking system 100 and stored in graph data store 113. As watch action instances are received from multiple domains performed on the same TV show, as identified by social networking system 100 by the title of the show, actors, producer, and duration, graph data store 113 is accessed to identify the virtual object that represents the show objects that are associated with the watch action instances. The watch action instances are then associated with the virtual object created by social networking system 100 that represents the similar show objects as determined by social networking system 100. In this way, social networking system 100 may report a newsfeed story that includes the watch action and the virtual object for a particular show, such as “The Office”, regardless of whether the show was watched on iTunes, Netflix, Hulu, Google TV, Comcast, AT&T U-Verse, Dish Network, Time Warner Cable, or any other video content provider. In one embodiment, the newsfeed story may include the domain, or video service, on which the show was watched, but may enable the user to access the show on a different domain or content delivery service from within the newsfeed story on the social networking system. In another embodiment, a user may add a geographic location to a custom graph action instance, indicating where the graph action was performed. Virtual objects may be generated by a social networking system 100 for other types of custom graph objects, such as news stories, commercial products, videos, concerts, theatre shows, songs, and so on.
Graph integration module 116 utilizes action types and object types defined by graph definition module 103 that are stored in graph object type store 114 and graph action type store 112 to integrate user interactions on external systems 122 with social networking system 100. For example, a streaming video service may enable users to watch content on an external systems 122, such as a website or a mobile application. In one embodiment, social networking system 100 may associate buttons and links on user interfaces with requests sent to an embedded web server on an external systems 122 hosting the streaming music service. The requests trigger the actions requested, such as queuing a video hosted on an external server. This allows users to share TV shows and movies with their friends on social networking system 100 via a hyperlink. The selection of the link generates a request to the external systems 122 to execute the action, in this case queuing the video or show through the user device 123 accessing social networking system 100 via network 121.
In particular embodiments, connected devices 204 receive content from MSOs 202 or OTT providers 203 while receiving or transmitting social data to social networking system 100. For example, a user watching a particular TV show or movie on either service may choose to share that he or she is currently viewing the program to his or her friends. Conversely, a user browsing the EPG of an MSO 202 or the content navigator of an OTT provider 203 may be presented with social data including the content that his or her friends on social networking system 100 have watched, are currently watching, or plan to watch. Thus, after exchanging auth messages 206 with social networking system 100 to authenticate the user's social networking identity with his or her connected device 204, connected devices 204 may receive discover messages 208 that identify content being consumed or watched by his or her friends on the social network, and transmit share messages 207 to inform social networking system 100 of what the user has, is, or plans to watch or “consume.” Although
Although increasingly rare, there are scenarios wherein a particular user of the social networking system has no means of linking his TV or viewing device to social networking system 100. Unconnected devices 205 lack any means of connecting to Internet/network 121. For example, a user may not have a local ISP, and only TV service from an MSO. As another example, a user may have both cable service from an MSO as well as internet access from a local ISP, but his or her STB 204c may not include a NIC. In such configurations, MSO 202 communicates authorization, share, and discover messages with social networking system 100, and unconnected devices 205 communicate, via STB 204c, only with MSOs 202.
In particular embodiments, content may be delivered to user devices 204 and 205 tagged with content identifiers and metadata. For example, Comcast may utilize its own proprietary EPG data format that lists the program name, air date, actors, producer, director, etc. In particular embodiments, content providers 202 and 203 may obtain content identifiers and metadata from content databases 201, such as the Rovi Corporation. Each particular piece of content may be transmitted from devices 204, or, in particular embodiments, via content providers 202 and 203, as graph data including a graph object and graph action. As previously discussed, social networking system 100 may de-duplicate graph data for the same graph object in graph data store 113 by comparing various attributes about the content object; for example, name, actors, duration, air date, etc. Thus, social networking system 100 may attribute graph data transmitted from Hulu that a particular user watched the critically-acclaimed feature film “The Marine” to the same graph object as a user currently watching “The Marine” on Comcast digital cable, irrespective of the source and format of the content metadata.
At consumption & sharing phase 302, user 300 consumes content by watching or queuing video content, and shares a story of the consumption with social networking system 100. In particular embodiments, user 300 may explicitly share a story of her consumption of the content with social networking system 100 by actively selecting sharing buttons on a user interface. Such embodiments are described in further detail with reference to
At discovery phase 303, user 300 may view consumption stories published by her friends 300a-e. As previously stated, the ability of user 300 to view consumption stories published by the user's friends 300a-e depends on the privacy settings of each individual user 300a-e. Thus, the conceptual framework of
At Step 402, social networking system 100 may search graph data store 113 for graph objects having the same title. In particular embodiments, social networking system 100 may compensate for particular differences in formatting by considering two titles to match if a predetermined percentage of words or characters are identical. For example, social networking system 100 may consider “The Office” and “Office, The” to be matches, despite differences in ordering.
If social networking system 100 determines that the received graph object has an existing content identifier in graph data store 113, social networking system 100 proceeds to deduplicate the received graph object at Step 403. As previously discussed, social networking system 100 may perform further checks to determine that the content object received from external system 122 is the same content object as the content identifier stored in graph data store 113. For example, social networking system may compare actor names, run date, MPAA rating, duration, and other metadata received from external system 122 to metadata or object attributes for the content identifier in graph data store 113. In particular embodiments, a certain percentage of matching metadata indicates that the objects are the same. In particular embodiments, certain metadata fields may be weighted more heavily or given greater importance. For example, because literally thousands of programs air per year, the air date may be weighted very lightly in comparison to, for example, the lead actors. In particular embodiments, social networking system 100 may have access to one or more content databases 201, and may build graph data store 113 with attributes pulled from content databases 201. This disclosure contemplates any suitable method of de-duplicating a received content object and a content identifier in graph data store 113.
At Step 404, if social networking system determines that the received content object does not match any existing content identifiers in graph data store 113, social networking system 100 creates a new graph object for the received content object. In particular embodiments, the created graph object may be a virtual graph object. In particular embodiments, metadata received from external systems 122 may be used to populate object attributes of the created graph object. In particular embodiments, social networking system may compare a particular piece of received metadata to all content object attributes in graph data store 113 in order to populate the correct object attribute with the metadata. For example, if graph data is received a piece of metadata with “George Clooney,” social networking system 100 may search the string “George Clooney” across all content object attributes in graph data store 113 and assign the metadata to the object attribute of the newly-created virtual object in which matches arise, in this example, the “Actors” object attribute. This disclosure contemplates any suitable method of creating a new graph object and populating the object attributes of the newly created object with received metadata.
At Step 405, social networking system draws an edge between the user ID contained in the received graph data and the graph object (either a new virtual graph object created in Step 404, or the content identifier identified in Step 403). As previously discussed, the graph action may be of any type and defined by a third-party. In particular embodiments, social networking system 100 may define a set of social TV actions that may be standard among all social TV API users. In particular embodiments, social networking system may perform a similar deduplication of graph actions, such that a graph action received from Hulu, such as “watched on Hulu Plus” is mapped to a universal graph action “watched.” This disclosure contemplates any suitable method of creating and drawing graph actions between user nodes and objects.
At Step 406, social networking system 100 publishes the story of the user's consumption. The story may be published through a number of different channels. In particular embodiments, the story appears on the wall of the user. In particular embodiments, the story appears in the newsfeed of the user's friends. In particular embodiments, the story is published to an external system 122. In particular embodiments, the story is published to a social plug-in that may be embedded in a portion of a user's social networking profile page. For example, the user may wish to include a “currently watching” widget on a portion of his or her profile page. This disclosure contemplates any suitable method of publishing a consumption story received by the social networking system.
In particular embodiments, consumption stories are not “pushed” to distribution services 501-504, but rather the service issues a request to social networking system 100 to query the social graph. For example, when a user logs into the clicker website 501 with their social networking ID, a script of plug-in embedded in the markup language delivered to the user device may issue a query to the social graph containing the user's social networking identifier. In response, social networking system 100 may return all the user's friends consumption stories, and the plug-in may display the consumption stories on a predetermined portion of the page. In particular embodiments, the external system 122, in this example Clicker, is responsible for mapping social graph content identifiers received from social networking system 100 to content on its own website.
As another example, when a user accesses a mobile application, such as, for example, the NBC.com mobile application of 502 on his or her mobile device (such as an iPhone or iPad), the application may issue a query to the social graph for consumption stories of the friend whose account is associated with the mobile device. In particular embodiments, social networking system 100 is responsible for the mapping from social graph content identifiers to the content identifiers used by external service 122. For example, if a user accesses his or her EPG on her AT&T U-Verse service, the social networking system may return data that associates published consumption stories with programs within the electronic programming guide.
EPG 601 also includes social portion 608. In particular embodiments, EPG 601 is delivered to the user as a markup language document, and social portion 608 is a block of code in the markup document functioning as a widget or plug in. This disclosure contemplates any suitable method of rendering and implementing social portion 608. Social portion 608 may include social data specific to the user associated with the viewing device. For example, when the user's STB requests EPG entry 601, the STB may also issue a query to the social graph including the user's social networking identification and the title of the program 602. In response, social networking system 100 may map the program title 602 to a particular graph object or content identifier as discussed with reference to
In particular embodiments, social portion 608 includes active or explicit sharing user interface elements. For example, social portion 608 includes “Like” button 609 and “Share” button 610. Selection of “like” button 609 transmits a request to social networking system 100 to draw a “like” edge in the social graph between the user node associated with the viewing device and the content object in graph data store 113. In particular embodiments, such a “like” action is published as a story to the user's wall, and to the user's friend's newsfeed. Similarly, selecting share button 610 may cause the user's STB to transmit a request to social networking system 100 to draw a “share” edge between the viewing user's social graph user node and the content object. This disclosure contemplates other buttons, such as “watch”, “queue” or “schedule for recording” that similarly draw edges in the social graph for specific actions. This disclosure contemplates any suitable selection or arrangement of active sharing buttons 609, 610 that permit a user to take explicit action to share what he or she is watching or express an affinity for a particular show.
At Step 701, social networking system 100, via API request server 106, receives a request to query the social graph from an external system 122. In particular embodiments, Step 701 occurs simultaneously with user authentication, and may include the user's social networking identifier and password. In particular embodiments, Step 701 occurs after social networking system 100 has already authenticated the device, and has associated the user's social networking identifier with the device.
At Step 702, social networking system 100 receives one or more EPG content objects. In particular embodiments, such as when a user is viewing EPG 600, social networking system 100 receives a list of program titles. In particular embodiments, such as where a user is viewing a detailed EPG 601, social networking system receives a single program title from external system 122. In particular embodiments, external system 122 may transmit metadata along with the program titles.
At Step 703, social networking system iteratively begins searching for objects in graph data store 113 that match the program titles transmitted by external systems 122. In particular embodiments, social networking system performs the same method as Steps 402-403 in
If no existing match is found, social networking system 100 may iterate to the next EPG program title in the list of titles. In particular embodiments, social networking system 100 may create a virtual object for the title in graph data store 113. This disclosure contemplates any suitable action by social networking system 100 upon failure to find a matching entry in graph data store 113.
If an existing entry is found, social networking system 100 checks whether there exist any sharing stories from the user's friends about the content object. If so, the process moves to Step 707, where social networking system 100 correlates the sharing story to the EPG program title. In step 708, social networking system 100 transmits the social data comprising a sharing storing and an EPG program title, to external system 122. Thus, external system 122 can easily populate EPG 600 and 601 with received social data with minimal programming and content matching on its part.
The process then iterates through the entire list of received EPG program titles. In particular embodiments, a new request is transmitted from external system 122 to social networking system 100 every time the user's view changes. For example, if a user scrolls in EPG 600 vertically or horizontally, the user is presented with a new set of shows. Each time the user's view changes, a new request is transmitted to social networking system to determine whether there exist social stories on the viewable shows. Thus the user's view of EPG 600 is constantly updated with social stories.
The method of
The examples of
Each of content objects 802-804 include social data 802a, 803a, and 804a. In particular embodiments, social data includes the number of friends who have “watched”, are planning to watch, or are currently watching the content. In particular embodiments, social data 802a-804a includes profile pictures pulled from social networking system 100 for the friends who have generated sharing stories for the content objects 802-804. In particular embodiments, the profile pictures are arranged by decreasing social coefficient; the friends who are the closest to the user are displayed first. In particular embodiments, social data 802a-804a includes other explicit social actions, such as whether a user “likes” a particular content object. This disclosure contemplates displaying any suitable social action in social data 802a-804a.
Content browser 801 also includes an action button 806 that allows the user to perform a particular action on the content object. In particular embodiments, selecting action button 806 may immediately begin the streaming or playback of the associated content object. In particular embodiments, selecting action button 806 may place the content into the user's queue. in particular embodiments, selecting action button 806 may schedule the content for recording on a DVR. This disclosure contemplates any suitable action button 806 and any suitable action that may be performed on a content object.
In particular embodiments, social portion 903 may include real-time sharing stories 903a-903c. Real-time sharing stories 903a-c describe what content the friends of the user are also watching at the moment. Thus, a user may select any one of real-time sharing stories 903a-c to switch the display 900 to view the same program that his or her friend is watching. Such information may prompt both on-network interactions such as messages or wall posts, as well as “real” off-network social interactions such as phone calls or face-to-face conversations at a later time. Social portion 903 may also include, as previously described, active or explicit sharing buttons 904 and 905. Selecting button 904 may generate a sharing story for the currently-watched program on social networking system 100.
Active or explicit sharing buttons 904 and 905 require active participation by the user to share what the user is currently watching to social networking system 100 (and therefore, his or her friends on social networking system 100). In particular embodiments, the user's device may passively share what the user is currently watching to social networking system 100 without any explicit action from the user to do so. In particular embodiments, as the user flips through various channels, his or her device will generate sharing stories substantially in real-time to be posted to social networking system 100. In particular embodiments, social networking system may only publish sharing stories when the user has continually watched one program longer than a predetermined amount of time, to prevent channel surfing from flooding other users' newsfeeds. In particular embodiments, a visible “sharing” indicator 901 may be displayed in display 900 to alert the user that he or she is sharing that he or she is watching the current program to social networking system 100. In particular embodiments, sharing indicator 901 may include an explicit warning 902 that states that the user is currently sharing his or her viewing choices to prevent public humiliation. In the example of
While the foregoing embodiments may be implemented in a variety of network configurations, the following illustrates an example network environment for didactic, and not limiting, purposes.
One or more links 1050 couple a server 1020 or a client 1030 to network 1010. In particular embodiments, one or more links 1050 each includes one or more wired, wireless, or optical links 1050. In particular embodiments, one or more links 1050 each includes an intranet, an extranet, a VPN, a LAN, a WLAN, a WAN, a MAN, a portion of the Internet, or another link 1050 or a combination of two or more such links 1050. This disclosure contemplates any suitable links 1050 coupling servers 1020 and clients 1030 to network 1010.
In particular embodiments, each server 1020 may be a unitary server or may be a distributed server spanning multiple computers or multiple datacenters. Servers 1020 may be of various types, such as, for example and without limitation, web server, news server, mail server, message server, advertising server, file server, application server, exchange server, database server, or proxy server. In particular embodiments, each server 1020 may include hardware, software, or embedded logic components or a combination of two or more such components for carrying out the appropriate functionalities implemented or supported by server 1020. For example, a web server is generally capable of hosting websites containing web pages or particular elements of web pages. More specifically, a web server may host HTML files or other file types, or may dynamically create or constitute files upon a request, and communicate them to clients 1030 in response to HTTP or other requests from clients 1030. A mail server is generally capable of providing electronic mail services to various clients 1030. A database server is generally capable of providing an interface for managing data stored in one or more data stores.
In particular embodiments, one or more data storages 1040 may be communicatively linked to one or more servers 1020 via one or more links 1050. In particular embodiments, data storages 1040 may be used to store various types of information. In particular embodiments, the information stored in data storages 1040 may be organized according to specific data structures. In particular embodiment, each data storage 1040 may be a relational database. Particular embodiments may provide interfaces that enable servers 1020 or clients 1030 to manage, e.g., retrieve, modify, add, or delete, the information stored in data storage 1040.
In particular embodiments, each client 1030 may be an electronic device including hardware, software, or embedded logic components or a combination of two or more such components and capable of carrying out the appropriate functions implemented or supported by client 1030. For example and without limitation, a client 1030 may be a desktop computer system, a notebook computer system, a netbook computer system, a handheld electronic device, or a mobile telephone. This disclosure contemplates any suitable clients 1030. A client 1030 may enable a network user at client 1030 to access network 1030. A client 1030 may enable its user to communicate with other users at other clients 1030.
A client 1030 may have a web browser 1032, such as MICROSOFT INTERNET EXPLORER, GOGGLE CHROME or MOZILLA FIREFOX, and may have one or more add-ons, plug-ins, or other extensions, such as TOOLBAR or YAHOO TOOLBAR. A user at client 1030 may enter a Uniform Resource Locator (URL) or other address directing the web browser 1032 to a server 1020, and the web browser 1032 may generate a Hyper Text Transfer Protocol (HTTP) request and communicate the HTTP request to server 1020. Server 1020 may accept the HTTP request and communicate to client 1030 one or more Hyper Text Markup Language (HTML) files responsive to the HTTP request. Client 1030 may render a web page based on the HTML files from server 1020 for presentation to the user. This disclosure contemplates any suitable web page files. As an example and not by way of limitation, web pages may render from HTML files, Extensible Hyper Text Markup Language (XHTML) files, or Extensible Markup Language (XML) files, according to particular needs. Such pages may also execute scripts such as, for example and without limitation, those written in JAVASCRIPT, JAVA, MICROSOFT SILVERLIGHT, combinations of markup language and scripts such as AJAX (Asynchronous JAVASCRIPT and XML), and the like. Herein, reference to a web page encompasses one or more corresponding web page files (which a browser may use to render the web page) and vice versa, where appropriate.
The elements of hardware system 1100 are described in greater detail below. In particular, network interface 1116 provides communication between hardware system 1100 and any of a wide range of networks, such as an Ethernet (e.g., IEEE 1102.3) network, a backplane, etc. Mass storage 11111 provides permanent storage for the data and programming instructions to perform the above-described functions implemented in the servers 22a, 22b, whereas system memory 1114 (e.g., DRAM) provides temporary storage for the data and programming instructions when executed by processor 1102. I/O ports 620 are one or more serial and/or parallel communication ports that provide communication between additional peripheral devices, which may be coupled to hardware system 1100.
Hardware system 1100 may include a variety of system architectures; and various components of hardware system 1100 may be rearranged. For example, cache 1104 may be on-chip with processor 1102. Alternatively, cache 1104 and processor 1102 may be packed together as a “processor module,” with processor 1102 being referred to as the “processor core.” Furthermore, certain embodiments may not require nor include all of the above components. For example, the peripheral devices shown coupled to standard I/O bus 1108 may couple to high performance I/O bus 1106. In addition, in some embodiments, only a single bus may exist, with the components of hardware system 1100 being coupled to the single bus. Furthermore, hardware system 1100 may include additional components, such as additional processors, storage devices, or memories.
In one implementation, the operations of the embodiments described herein are implemented as a series of executable modules run by hardware system 1100, individually or collectively in a distributed computing environment. In a particular embodiment, a set of software modules and/or drivers implements a network communications protocol stack, browsing and other computing functions, optimization processes, and the like. The foregoing functional modules may be realized by hardware, executable modules stored on a computer readable medium, or a combination of both. For example, the functional modules may comprise a plurality or series of instructions to be executed by a processor in a hardware system, such as processor 1102. Initially, the series of instructions may be stored on a storage device, such as mass storage 11111. However, the series of instructions can be tangibly stored on any suitable storage medium, such as a diskette, CD-ROM, ROM, EEPROM, etc. Furthermore, the series of instructions need not be stored locally, and could be received from a remote storage device, such as a server on a network, via network/communications interface 1116. The instructions are copied from the storage device, such as mass storage 11111, into memory 1114 and then accessed and executed by processor 1102.
An operating system manages and controls the operation of hardware system 1100, including the input and output of data to and from software applications (not shown). The operating system provides an interface between the software applications being executed on the system and the hardware components of the system. Any suitable operating system may be used, such as the LINUX Operating System, the Apple Macintosh Operating System, available from Apple Computer Inc. of Cupertino, Calif., UNIX operating systems, Microsoft (r) Windows(r) operating systems, BSD operating systems, and the like. Of course, other implementations are possible. For example, the nickname generating functions described herein may be implemented in firmware or on an application specific integrated circuit.
Furthermore, the above-described elements and operations can be comprised of instructions that are stored on storage media. The instructions can be retrieved and executed by a processing system. Some examples of instructions are software, program code, and firmware. Some examples of storage media are memory devices, tape, disks, integrated circuits, and servers. The instructions are operational when executed by the processing system to direct the processing system to operate in accord with the disclosure. The term “processing system” refers to a single processing device or a group of inter-operational processing devices. Some examples of processing devices are integrated circuits and logic circuitry. Those skilled in the art are familiar with instructions, computers, and storage media.
Herein, reference to a computer-readable non-transitory storage medium may include a semiconductor-based or other integrated circuit (IC) (such as, for example, a field-programmable gate array (FPGA) or an application-specific IC (ASIC)), a hard disk, an HDD, a hybrid hard drive (HHD), an optical disc, an optical disc drive (ODD), a magneto-optical disc, a magneto-optical drive, a floppy disk, a floppy disk drive (FDD), magnetic tape, a holographic storage medium, a solid-state drive (SSD), a RAM-drive, a SECURE DIGITAL card, a SECURE DIGITAL drive, another suitable computer-readable non-transitory storage medium, or a suitable combination of these, where appropriate. A computer-readable non-transitory storage medium may be volatile, non-volatile, or a combination of volatile and non-volatile, where appropriate.
Herein, “or” is inclusive and not exclusive, unless expressly indicated otherwise or indicated otherwise by context. Therefore, herein, “A or B” means “A, B, or both,” unless expressly indicated otherwise or indicated otherwise by context. Moreover, “and” is both joint and several, unless expressly indicated otherwise or indicated otherwise by context. Therefore, herein, “A and B” means “A and B, jointly or severally,” unless expressly indicated otherwise or indicated otherwise by context.
This disclosure encompasses all changes, substitutions, variations, alterations, and modifications to the example embodiments herein that a person having ordinary skill in the art would comprehend. By way of example, while embodiments have been described as operating in connection with a social networking website, the disclosure can be used in connection with any communications facility that supports web applications. Furthermore, in some embodiments the term “web service” and “web-site” may be used interchangeably and additionally may refer to a custom or generalized API on a device, such as a mobile device (e.g., cellular phone, smart phone, personal GPS, personal digital assistance, personal gaming device, etc.), that makes API calls directly to a server. Moreover, although this disclosure describes and illustrates respective embodiments herein as including particular components, elements, functions, operations, or steps, any of these embodiments may include any combination or permutation of any of the components, elements, functions, operations, or steps described or illustrated anywhere herein that a person having ordinary skill in the art would comprehend. Reference in the appended claims to an apparatus or system or a component of an apparatus or system being adapted to, arranged to, capable of, configured to, enabled to, operable to, or operative to perform a particular function encompasses that apparatus, system, component, whether or not it or that particular function is activated, turned on, or unlocked, as long as that apparatus, system, or component is so adapted, arranged, capable, configured, enabled, operable, or operative.
Claims
1-20. (canceled)
21. A method comprising, by one or more computing systems:
- receiving, over one or more computer networks, an indication that a user has selected an option to passively post stories about media content that the user watches in the future without any further explicit action from the user; and
- automatically posting, after receiving the indication that the user has selected the option to passively post stories about media content that the user watches in the future, new stories on a website as the user watches new media content, each new story comprising an indication of the particular new media content being watched by the user.
22. The method of claim 21, wherein the new stories are automatically posted on the website only if the user has continuously watched the new media content longer than a predetermined amount of time.
23. The method of claim 21, further comprising:
- before receiving the indication that the user has selected the option to passively post stories, displaying to the user a dialog box requesting permission to passively post stories that the user watches in the future, the dialog box comprising the selectable option to passively post stories.
24. The method of claim 21, further comprising:
- receiving, over the one or more computer networks, privacy settings that the user has selected for the passively posted stores, the privacy settings indicating which friends of the user may view the new stores posted to the website as the user watches new media content; and
- providing the new stories for viewing in newsfeeds of the friends of the user according to the received privacy settings.
25. The method of claim 21, further comprising:
- providing for display to the user a visible indication to alert the user that the new stories about media content that the user watches are being passively posted on the website.
26. The method of claim 25, wherein the visible indication comprises a graphical element displayed along with current media content being viewed by the user.
27. The method of claim 25, wherein the visible indication comprises a border of a specific color that surrounds current media content being viewed by the user.
28. One or more computer-readable non-transitory storage media in one or more computing systems, the media embodying logic that is operable when executed by one or more processors to:
- receive, at a computing system over one or more computer networks, an indication that a user has selected an option to passively post stories about media content that the user watches in the future without any further explicit action from the user; and
- automatically post, after receiving the indication that the user has selected the option to passively post stories about media content that the user watches in the future, new stories on a website as the user watches new media content, each new story comprising an indication of the particular new media content being watched by the user.
29. The media of claim 28, wherein the new stories are automatically posted on the website only if the user has continuously watched the new media content longer than a predetermined amount of time.
30. The media of claim 28, the logic when executed by the one or more processors further operable to:
- before receiving the indication that the user has selected the option to passively post stories, display to the user a dialog box requesting permission to passively post stories that the user watches in the future, the dialog box comprising the selectable option to passively post stories.
31. The media of claim 28, the logic when executed by the one or more processors further operable to:
- receive, over the one or more computer networks, privacy settings that the user has selected for the passively posted stores, the privacy settings indicating which friends of the user may view the new stores posted to the website as the user watches new media content; and
- provide the new stories for viewing in newsfeeds of the friends of the user according to the received privacy settings.
32. The media of claim 28, the logic when executed by the one or more processors further operable to:
- providing for display to the user a visible indication to alert the user that the new stories about media content that the user watches are being passively posted on the website.
33. The media of claim 32, wherein the visible indication comprises a graphical element displayed along with current media content being viewed by the user.
34. The media of claim 32, wherein the visible indication comprises a border of a specific color that surrounds current media content being viewed by the user.
35. A system comprising:
- one or more processors; and
- one or more memory units communicatively coupled to the one or more processors and comprising instructions executable by the one or more processors, the one or more processors operable when executing the instructions to: receive, over one or more computer networks, an indication that a user has selected an option to passively post stories about media content that the user watches in the future without any further explicit action from the user; and automatically post, after receiving the indication that the user has selected the option to passively post stories about media content that the user watches in the future, new stories on a website as the user watches new media content, each new story comprising an indication of the particular new media content being watched by the user.
36. The system of claim 35, wherein the new stories are automatically posted on the website only if the user has continuously watched the new media content longer than a predetermined amount of time.
37. The system of claim 35, the one or more processors further operable when executing the instructions to:
- before receiving the indication that the user has selected the option to passively post stories, display to the user a dialog box requesting permission to passively post stories that the user watches in the future, the dialog box comprising the selectable option to passively post stories.
38. The system of claim 35, the one or more processors further operable when executing the instructions to:
- receive, over the one or more computer networks, privacy settings that the user has selected for the passively posted stores, the privacy settings indicating which friends of the user may view the new stores posted to the website as the user watches new media content; and
- provide the new stories for viewing in newsfeeds of the friends of the user according to the received privacy settings.
39. The system of claim 35, the one or more processors further operable when executing the instructions to:
- providing for display to the user a visible indication to alert the user that the new stories about media content that the user watches are being passively posted on the website.
40. The system of claim 39, wherein the visible indication comprises:
- a graphical element displayed along with current media content being viewed by the user, or
- a border of a specific color that surrounds current media content being viewed by the user.
Type: Application
Filed: Feb 17, 2016
Publication Date: Jun 9, 2016
Inventors: Ime Archibong (San Francisco, CA), Gregory Joseph Badros (Palo Alto, CA), Cameron Alexander Marlow (Menlo Park, CA), Mark Heynen (San Francisco, CA), Justin Alexander Shaffer (Menlo Park, CA), Christopher Cox (Palo Alto, CA)
Application Number: 15/046,179