U.S. patent application number 15/046179 was filed with the patent office on 2016-06-09 for sharing television and video programming through social networking.
The applicant listed for this patent is Facebook, Inc.. Invention is credited to Ime Archibong, Gregory Joseph Badros, Christopher Cox, Mark Heynen, Cameron Alexander Marlow, Justin Alexander Shaffer.
Application Number | 20160165265 15/046179 |
Document ID | / |
Family ID | 49293359 |
Filed Date | 2016-06-09 |
United States Patent
Application |
20160165265 |
Kind Code |
A1 |
Archibong; Ime ; et
al. |
June 9, 2016 |
Sharing Television and Video Programming Through Social
Networking
Abstract
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.
Inventors: |
Archibong; Ime; (San
Francisco, CA) ; Badros; Gregory Joseph; (Palo Alto,
CA) ; Marlow; Cameron Alexander; (Menlo Park, CA)
; Heynen; Mark; (San Francisco, CA) ; Shaffer;
Justin Alexander; (Menlo Park, CA) ; Cox;
Christopher; (Palo Alto, CA) |
|
Applicant: |
Name |
City |
State |
Country |
Type |
Facebook, Inc. |
Menlo Park |
CA |
US |
|
|
Family ID: |
49293359 |
Appl. No.: |
15/046179 |
Filed: |
February 17, 2016 |
Related U.S. Patent Documents
|
|
|
|
|
|
Application
Number |
Filing Date |
Patent Number |
|
|
13440306 |
Apr 5, 2012 |
9301016 |
|
|
15046179 |
|
|
|
|
Current U.S.
Class: |
725/54 ;
725/110 |
Current CPC
Class: |
H04N 21/47214 20130101;
H04N 21/488 20130101; H04N 21/00 20130101; H04N 21/632 20130101;
H04N 21/4782 20130101; H04N 21/6125 20130101; G06Q 50/01 20130101;
H04N 21/4756 20130101; H04N 21/4828 20130101; H04N 21/84 20130101;
H04N 21/4788 20130101; H04N 21/4345 20130101 |
International
Class: |
H04N 21/00 20060101
H04N021/00; H04N 21/434 20060101 H04N021/434; H04N 21/482 20060101
H04N021/482; H04N 21/61 20060101 H04N021/61 |
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.
Description
TECHNICAL FIELD
[0001] This disclosure relates generally to social networking.
BACKGROUND
[0002] Computer 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.
[0003] 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.
BRIEF DESCRIPTION OF THE DRAWINGS
[0004] FIG. 1 illustrates an example social-networking system.
[0005] FIG. 2 illustrates an example computer network environment
of an example social-network environment.
[0006] FIG. 3 illustrates an example process cycle for sharing
television and video programming through social networking.
[0007] FIG. 4 illustrates an example method for mapping content
from multiple services to a single content identifier.
[0008] FIG. 5 illustrates example sharing of a story regarding a
content object to multiple external services.
[0009] FIG. 6A illustrates an example of an electronic program
guide integrating social data.
[0010] FIG. 6B illustrates another example of an electronic program
guide integrating social data.
[0011] FIG. 7 illustrates an example method for transmitting social
data and content identifiers in a format that may be interpreted
more readily by external systems.
[0012] FIG. 8A illustrates an example of a content browser
displaying content with integrated social data.
[0013] FIG. 8B illustrates an example of a video-playback device
displaying content with integrated social data.
[0014] FIG. 9A illustrates an example of a video-playback device
displaying substantially real-time social data.
[0015] FIG. 9B illustrates an example of a video-playback device
displaying content integration substantially in real-time with
other members of a social-networking system.
[0016] FIG. 10 is an example network environment.
[0017] FIG. 11 is an example computing system.
DESCRIPTION OF EXAMPLE EMBODIMENTS
[0018] 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.
[0019] 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.
[0020] 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.
[0021] FIG. 1 is a network diagram of one embodiment of a social
networking system 100. The network environment includes one or more
user devices 123, one or more external systems 122 via network 121.
Web server 101 serves web pages, as well as other web-related
content, such as Java, Flash, XML, and so forth. Web server 101 may
include a mail server or other messaging functionality for
receiving and routing messages between social networking system 100
and one or more user devices 123. The messages can be instant
messages, queued messages (e.g., email), text and SMS messages, or
any other suitable messaging format.
[0022] 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.
[0023] 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.
[0024] 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.
[0025] 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.
[0026] 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.
[0027] 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.
[0028] 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.
[0029] 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.
[0030] 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.
[0031] 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.
[0032] 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.
[0033] 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.
[0034] 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.
[0035] 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.
[0036] 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.
[0037] 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.
[0038] 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.
[0039] 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.
[0040] 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.
[0041] 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.
[0042] 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.
[0043] 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.
[0044] 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.
[0045] FIG. 2 illustrates an example network environment for an
example social networking system enabling social TV viewing. Social
networking system 100 may be connected via internet 121 to a
plurality of connected devices 204. Connected devices 204 may
include, without limitation, Internet-enabled television sets 204a
that connect to network 121 through a local internet service
provider (ISP), mobile devices 204b that connect to network 121
through a wireless connection such as a wireless cellular data
network, or TVs 204d that connect to the Internet (network 121)
through a STB or gateway device 204c. STB/gateway 104c may be any
hardware or software that delivers content or possesses a network
interface card (NIC) for connecting to a local area network (LAN).
For example, STB/gateway 204c may be a cable box provided by an
MSO, such as Comcast, Time Warner, AT&T U-verse, or Dish
Network. In such examples, STB may receive content from MSOs 202.
As another example, STB/gateway 204c may be a device that streams
video from third-party internet sites or services such as OTT
providers 203. Examples of such gateways 204c include, without
limitation, devices from Roku, Boxee, Apple TV, and Google TV allow
users to access content from OTT providers 203 such as NetFlix,
Hulu, Amazon Video, YouTube, and the like.
[0046] 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 FIG. 2 depicts these messages as being
transmitted directly between social networking system 100 and
connected devices 204, in particular embodiments, authorization,
share, and discover messages 206, 207, and 208 may be exchanged
between the provider from which content is being accessed, namely,
MSOs 202 and OTT providers 203. This disclosure contemplates any
suitable means of routing messages from viewing devices 204 to
social networking system 100.
[0047] 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.
[0048] 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.
[0049] FIG. 3 conceptually illustrates a cycle of sharing of
watched video content. At authorization phase 301, a particular
user 300 authenticates her social networking user identifier with a
device 204 or 205 on which she wishes to browse or view content. As
previously discussed, devices 204/205 may be any device on which a
user may view content, including a personal computing device
including a browser application 124 viewing a website of an OTT
provider 203, television, or mobile device running a dedicated
application for a content provider. In particular embodiments, a
user may associate accounts on multiple external services 122 with
his or her social networking identifier, and permit external
services 122 query the social graph or publish graph data to social
networking system 100. For example, user 300 may associate her Hulu
account, Netflix account, and ATT U-Verse account with her social
networking user identifier and password, thereby sharing all
content across multiple content delivery services with the social
network, and therefore, her friends on the social network.
[0050] 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 FIG.
7. In particular embodiments, sharing occurs passively without user
selection. Such embodiments are described in further detail with
reference to FIG. 10. When stories of content consumption by user
300 are transmitted to social networking system 100, the friends
300a-e of user 300 may view the sharing stories, thereby
discovering new content to consume. In particular embodiments, user
300 may specify which of her friends 300a-e may view her
consumption stories. In particular embodiments, user 300 may have
different privacy settings for actively and passively shared
consumption stories
[0051] 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 FIG. 3
describes a cycle where users are constantly discovering new
content shared by their friends, consuming content, and sharing
content with their friends. Hence the user experience both on and
off social networking system 100 is enhanced.
[0052] FIG. 4 illustrates a method for mapping content identifiers
from graph data received from external system 122 to singular
content identifiers for sharing. At Step 401, social networking
system 100 receives graph data from an external system 122 such as
an MSO 202 or OTT provider 203. Alternatively, social networking
system 100 may receive graph data directly from connected devices
204. In particular embodiments, the graph data may have a content
object with one or more attributes, and a graph action, such as
"watching", "watched," "scheduled", "liked" or "share." In
particular embodiments, each content object may also have a
plurality of object attributes or metadata for the content object.
For example, Comcast may transmit a consumption story as graph
data, including a content identifier, to social networking system
100 in its own proprietary data format, including a title, date,
actors, motion picture association of America (MPAA) rating, and
duration for the content object.
[0053] 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.
[0054] 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.
[0055] 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.
[0056] 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.
[0057] 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.
[0058] FIG. 5 conceptually illustrates publishing a consumption
story across multiple distribution channels. In FIG. 5, user 300
shares a statement to social networking system 100 (and
consequently, the friends of user 300) that she is currently
watching the film, "Point Break." As discussed above, social
networking system 100 processes the graph data received from the
content service provider from which user 300 is watching "Point
Break," and processes the graph data to map it to a single content
identifier. The resultant story may be published to a number of
channels, such as websites 501, applications 502, the social
networking system itself 501, and social plug-ins 504.
[0059] 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.
[0060] 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.
[0061] FIG. 6A illustrates an example electronic programming guide
(EPG) 600. EPG 600 includes the program schedule for channels
1002-1102 from a 7:00-8:00 PM block for a particular day. EPG 600
may be scrolled both vertically to access the schedule for
different channels, and horizontally to access the schedule for
different times. EPG 600 may also include user-selectable options
to view the schedule for different dates. EPG 600 may be augmented
by social data received from social networking system 100. For
example, after the user has associated his social networking
identification with his viewing device, in this example, a STB
accessing his cable account, EPG 600 may include icons beneath
particular shows to indicate the existence of one or more
consumption stories related to the show. The one or more icons may
also include a summary of the consumption story. For example, the
icon under the show "House" playing at 7:00 PM on channel 1002
states that one of the user's friends, "Marcus Smith" is currently
watching the program. As another example, the icon under the show
"The Sing Off" at 7:00 PM on 1004 indicates that three of the
user's friends are recording the show. As another example, the
social data in EPG 600 may also indicate that users are scheduled
to record a particular show, such as the EPG entry for "The Vampire
Diaries." In addition, EPG 600 may include, for each show,
indicators that friends of the user have otherwise expressed an
affinity or connected with the show. For example, EPG 600 includes
several "thumbs up" icons indicating that friends of the user
"liked" a particular show. In particular embodiments, these "thumbs
up" icons may also include a summary of the "like" stories. This
disclosure contemplates the display of any relevant social
data.
[0062] FIG. 6B illustrates an example EPG entry 601 when a user
chooses to view information for a particular show or program. In
particular embodiments, the user may view detailed information
about a particular piece of content by selecting the show in EPG
600 and selecting "more" or "info" on his or her remote control.
EPG entry 601 includes the program title 602 and metadata 603-607
obtained from the content service provider or content database 201.
In particular embodiments, metadata may include the MPAA rating
603, duration 604, actor 605, air date 606, and theme 607. In
particular embodiments, EPG entry 601 may also include a synopsis
or summary of the program. This disclosure contemplates the
inclusion of any suitable metadata in EPG entry 601.
[0063] 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 FIG. 4, and return the friends of the user who
have affinity ("like") edges with the graph object. In particular
embodiments, social portion 608 may also include comments 612.
Comments 612 may be retrieved from the page (also referred to as a
"hub page" or "landing page") representing the content object on
social networking system 100. In particular embodiments only
comments from the user's friends or first-degree contacts from the
hub page. In particular embodiments, comments may be pulled from an
external site, such as rottentomatoes.com, or imdb.com. This
disclosure contemplates retrieving comments or other social data
from any suitable source. In particular embodiments, comments 612
may be arranged chronologically. In particular embodiments, they
may be arranged by social value; that is, comments from close
friends or users with whom the viewer of EPG 601 has a higher
social coefficient are displayed first. This disclosure
contemplates any suitable method of scoring or arranging comments
612 in social portion 608.
[0064] 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.
[0065] FIG. 7 illustrates a method for transmitting social data to
an external system 122 from social networking system 100 in a
format that may be interpreted by external system 122. Because
external systems 122 may utilize EPG data in an arbitrary,
proprietary format, there are challenges in mapping a particular
show, for example, "It's Always Sunny in Philadelphia" to the
content identifier for the same show in graph database 113 of
social networking system 100 in both the "share" and "discover"
phases. Thus, social data received from social networking system
100 (such as whether a user's friends are watching a show, have
"liked" a show, etc.) must also be reconciled with EPG data. In
particular embodiments, external systems 122 may implement a
reverse matching procedure that maps incoming social networking
content identifiers to their respective shows or programs in their
EPG. In particular embodiments, such as the method of FIG. 7,
external systems 122 issue a query to a social graph API through
API request server 106 and transmit content identifiers for the
shows that the user is currently browsing. For example, if the user
is browsing EPG 600, external system 122 transmits the titles for
all the shows visible in EPG 600. Similarly, if the user is
browsing EPG 601, external system 122 transmits the title,
"Ratatouille", to social networking system 100. In such
embodiments, social networking system 100 performs a series of
look-ups to correlate share actions of the user's friends to
specific shows in EPG 600 or 601. Thus, social data is delivered
from the social networking system 100 in a format that may be
easily interpreted by external systems 122.
[0066] 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.
[0067] 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.
[0068] 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 FIG. 4 to map EPG program titles to content
objects. In particular embodiments, social networking system 100
may receive only EPG program titles, and request additional
metadata from external system 122 if a suspected match is
found.
[0069] 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.
[0070] 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.
[0071] 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.
[0072] The method of FIG. 7 is described for didactic purposes
only. One of ordinary skill in the art can envision different
methods that correlate EPG program titles with content identifiers
on social networking system 100. For example, in particular
embodiments, social networking system 100 may first obtain a list
of all the user's friends' sharing stories, and perform a search of
the received EPG program titles with the titles of the content
objects. Such a method may greatly reduce the amount of searching
necessary when the user is browsing EPG 600, as there will be
necessarily fewer programs with stories than without. However,
where the number of EPG program titles received is low, it may be
faster to perform the exact method of FIG. 7. This disclosure
contemplates any suitable method of populating EPG 601 and 600 with
social data.
[0073] The examples of FIGS. 6A and 6B illustrate user interfaces
provided by external system 122 wherein content data is
supplemented with social data (i.e., sharing stories from the
user's friends). Such user interfaces can be fairly simply
implemented via the method of FIG. 7 and other similar methods with
little effort on the part of external systems 122. However, FIGS.
8A and 8B illustrate example user interfaces provided by external
systems 122 where the content objects themselves are determined by
social data.
[0074] FIG. 8A illustrates an example content browser 801 that
includes, for didactic purposes, three pieces of content: the film
"Avatar" 802, the TV show "The Office" 803, and the TV show
"Saturday Night Live" 804. In particular embodiments, when the user
logs into a particular external system 122, such as, for example,
NetFlix, and is authenticated with his or her social networking
user identification and password, NetFlix may choose to display
suggested content objects 802-804 that are the most heavily liked
or watched by the user's social networking friends. Thus, external
system 122 must populate content browser 801 based on social data
received from social networking system 100. This requires that
external systems 122 be able to interpret the received social data,
comprising a social graph content object identifier, actions upon
the object, and the user identifiers for the users who performed
the actions, so that external system 122 may display the content
represented by the content object identifier. For example, it is
unrewarding and frustrating for a Netflix user to be presented with
a statement that "Bret Taylor and 127 friends watch Avatar" if the
link is not selectable, or does not navigate the user to the
content page for Avatar on Netflix. In particular embodiments,
external systems 122 may implement the same method of content
identifier matching described in FIG. 4 in reverse. For example,
NetFlix may receive a social graph content object identifier and
query the social graph via API server 106 to obtain the title,
actor, director, duration, and other object attributes. Netflix may
then search among its own proprietary content data (or provided by
an external provider such as Rovi) to find the NetFlix content
corresponding to the social graph content object identifier. In
particular embodiments, a third-party intermediary such as Rovi may
perform this content matching. This disclosure contemplates any
suitable method of matching social networking content identifiers
to the content identifiers of external systems 122.
[0075] 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.
[0076] 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.
[0077] FIG. 8B illustrates an example view of a display device 900
during content viewing. In particular embodiments, display 900
includes a social networking portion 903. In particular
embodiments, social networking portion 903 may be a pop-up menu
displayed when a user presses a dedicated social networking button
on his or her remote control. In particular embodiments, social
networking portion 903 may be a pop-up menu expanded upon selecting
a less obtrusive social networking icon. This disclosure
contemplates any suitable method of controlling the display of
social portion 903.
[0078] 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.
[0079] 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 FIG. 8B,
the sharing indicator 902 merely states "sharing mode on." In
particular embodiments, the user may toggle sharing mode on and off
with a button in a user interface or hardware device for the
viewing device. In particular embodiments, the sharing indicators
901 and 902 may obscure less of the display area. For example, in
particular embodiments sharing mode may comprise a red border
around the picture. In other embodiments, sharing mode may be
indicated by flashing an LED on the viewing device. This disclosure
contemplates any suitable sharing indicator implemented in hardware
or software.
[0080] FIG. 9A illustrates another example display when a user
watches a particular program augmented with social data. As with
FIG. 8B, the display of FIG. 9A includes a social portion 903. In
particular embodiments, social portion 903 may display the user's
friends who are currently watching the same show. In particular
embodiments, the profile pictures of the user's friends are
displayed. In particular embodiments, social portion 903 may pop up
when a user's friend also starts watching the same show. In
particular embodiments, social portion 903 may automatically
minimize after a predetermined period of time. In particular
embodiments, social portion 903 may pop up every time a new friend
begins watching the same program. In particular embodiments, in
addition to the "like" and "share" buttons, social portion 903 may
include a "chat" option that allows the user to join a
substantially real-time chat session with his or her friends
watching the same program. Such an embodiment is described in
further detail with reference to FIG. 9B.
[0081] FIG. 9B illustrates an example display where the user is
engaged in a group chat with his or her friends who are watching
the same program. Chat window 910 may include the number of friends
of the user who are also watching the same program. Individual
messages 911, 912, and 913 may be posted by friends of the user, or
the user interacting with keyboard or other input device.
Individual messages 911-913 may include the time of posting as well
as a profile picture for the posting user. In particular
embodiments, chat window 910 may be displayed on a separate device.
For example, if a user is watching a program on his television and
joins a group chat, his or her social networking smartphone
application may display chat window 910, so the user may enter
chats without a dedicated TV input device. This disclosure
contemplates any suitable placement or means of interacting with
chat window 910.
[0082] 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. FIG. 10 illustrates an example network environment 1000.
Network environment 1000 includes a network 1010 coupling one or
more servers 1020 and one or more clients 1030 to each other.
Network environment 1000 also includes one or more data storage
1040 linked to one or more servers 1020. Particular embodiments may
be implemented in network environment 1000. For example, social
networking system frontend 120 may be written in software programs
hosted by one or more servers 1020. For example, event database 102
may be stored in one or more storage 1040. In particular
embodiments, network 1010 is an intranet, an extranet, a virtual
private network (VPN), a local area network (LAN), a wireless LAN
(WLAN), a wide area network (WAN), a metropolitan area network
(MAN), a portion of the Internet, or another network 1010 or a
combination of two or more such networks 1010. This disclosure
contemplates any suitable network 1010.
[0083] 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.
[0084] 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.
[0085] 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.
[0086] 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.
[0087] 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.
[0088] FIG. 11 illustrates an example computing system
architecture, which may be used to implement a server. In one
embodiment, hardware system 1100 comprises a processor 1102, a
cache memory 1104, and one or more executable modules and drivers,
stored on a tangible computer readable medium, directed to the
functions described herein. Additionally, hardware system 1100
includes a high performance input/output (I/O) bus 1106 and a
standard I/O bus 1108. A host bridge 1108 couples processor 1102 to
high performance I/O bus 1106, whereas I/O bus bridge 1112 couples
the two buses 1106 and 1108 to each other. A system memory 1114 and
one or more network/communication interfaces 1116 couple to bus
1106. Hardware system 1100 may further include video memory (not,
shown) and a display device coupled to the video memory. Mass
storage 11111, and I/O ports 1120 couple to bus 1108. Hardware
system 1100 may optionally include a keyboard and pointing device,
and a display device (not shown) coupled to bus 1108. Collectively,
these elements are intended to represent a broad category of
computer hardware systems, including but not limited to general
purpose computer systems based on the x116-compatible processors
manufactured by Intel Corporation of Santa Clara, Calif., and the
x116-compatible processors manufactured by Advanced Micro Devices
(AMD), Inc., of Sunnyvale, Calif., as well as any other suitable
processor.
[0089] 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.
[0090] 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.
[0091] 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.
[0092] 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.
[0093] 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.
[0094] 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.
[0095] 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.
[0096] 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.
* * * * *