Video recommendation method and system using prefetching, and storage medium with instructions

By verifying and prefetching video sequences that meet the conditions before the video playback GUI, the problem of the mismatch between new video presentation and user preferences is solved, and the user experience and device efficiency are improved.

CN120548710APending Publication Date: 2025-08-26SNAP INC
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
CN202480008223.4
Authority / Receiving Office
CN · China
Patent Type
Applications(China)
Current Assignee / Owner
Priority Date
2023-01-19
Filing Date
2024-01-18
Publication Date
2025-08-26

AI Technical Summary

Technical Problem

After the existing video recommendation system detects that the new video is added, the user may choose to watch at an unknown time, and the presented video does not match the new video, causing confusion to the user, and continuously extracting and caching new videos consumes resources, which is inefficient.

Method used

Before the video playback GUI, verify the video availability that meets the conditions through the client application, prefetch the video sequence that matches the user's preferences, and present notifications on the GUI to ensure that the new video is displayed first.

Benefits of technology

It improves the predictiveness of user experience and equipment efficiency, reduces resource consumption, and increases user trust and confidence.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN120548710A_ABST
    Figure CN120548710A_ABST
Patent Text Reader

Abstract

Systems and methods are provided for notifying a user about video in a playback sequence. Systems and methods determine that a video satisfying a criterion is currently available on a video server associated with a messaging client. In response to determining that the video satisfying the criteria is currently available, a messaging client on the client device prefetches a sequence of videos from a recommendation engine that matches a profile of a user associated with the messaging client. A recommendation engine is used to provide a sequence of videos to a video playback graphical user interface (GUI) that automatically plays back the videos in the sequence. The systems and methods determine that a video satisfying a criterion is in a first position in a video sequence and in response, present a notification on a video playback GUI indicating availability of the video.
Need to check novelty before this filing date? Find Prior Art

Description

[0001] Priority Declaration

[0002] This application claims the benefit of priority to U.S. patent application serial number 18 / 156,961, filed on January 19, 2023, which is incorporated herein by reference in its entirety. Technical Field

[0003] The present disclosure generally relates to notifying users about videos on mobile devices. Background Art

[0004] Modern user devices are used by users to consume videos throughout the day. These videos can be shared with other users. The receiving user typically enjoys the same experience as the sending user. There are many ways to share videos between users. BRIEF DESCRIPTION OF THE DRAWINGS

[0005] In the drawings, which are not necessarily drawn to scale, similar reference numerals may describe similar components in different views. To easily identify the discussion of any particular element or action, the highest-order digit or digits in a reference numeral refer to the figure in which the element is first introduced. Examples are shown by way of example and not limitation in the figures of the accompanying drawings, in which:

[0006] Figure 1 is a block diagram illustrating an example messaging system for exchanging data (eg, messages and associated content) over a network, according to some examples.

[0007] Figure 2 is a schematic diagram illustrating data that may be stored in a database of a messaging server system according to some examples.

[0008] Figure 3 is a diagram illustrating the structure of a message generated by a messaging client application for communication according to some examples.

[0009] Figure 4 is a block diagram illustrating an example video notification system according to some examples.

[0010] Figure 5 is a flow diagram illustrating example operation of a video notification system according to some examples.

[0011] Figures 6 and 7 are illustrative inputs and outputs of a video notification system according to some examples.

[0012] Figure 8 An illustrative mobile user device or client device employing a video notification system is shown according to some examples.

[0013] Figure 9is a block diagram illustrating a representative software architecture that may be used in conjunction with the various hardware architectures described herein, according to some examples.

[0014] Figure 10 is a block diagram illustrating components of a machine capable of reading instructions from a machine-readable medium (eg, a machine-readable storage medium) and performing any one or more of the methodologies discussed herein, according to some examples. DETAILED DESCRIPTION

[0015] The following description includes systems, methods, techniques, instruction sequences, and computing machine program products that embody illustrative examples of the present disclosure. In the following description, for illustrative purposes, many specific details are set forth to provide an understanding of the various examples. However, it will be apparent to those skilled in the art that the examples can be practiced without these specific details. Typically, well-known instruction instances, protocols, structures, and techniques are not necessarily shown in detail.

[0016] Some video consumption systems include a recommendation system that presents a random set of videos that match the preferences of a given user when the user accesses the video consumption system via a client device. These systems are configured to derive the user's content viewing profile and analyze all available videos to identify the best videos or top videos that the user is watching at a given time. These videos are then initially presented to the user in an automatic or semi-automatic manner and according to a defined sequence when the system is accessed. Sometimes, these systems receive new content or videos that match the content viewing preferences of a given user and need to notify the given user about the availability of new content or videos that match the content viewing preferences. This is typically accomplished by presenting a badge or icon in association with an option for starting the video consumption system. However, the timing of presenting the badge is typically out of sync with the set of videos presented when the system is accessed by the user.

[0017] Specifically, a typical system presents a badge in response to detecting the addition of a new video matching a profile (e.g., a video uploaded by a content creator to which a given user subscribes). However, the user may ultimately select the option to launch the video consumption system at an unknown time in the future after the content creator has added the new video. Specifically, a user may be alerted to new content by a particular content creator, but then, in the future, when the user chooses to watch a video, they are instead presented with a choice of videos based on preferences that have been established since the new video was provided. Therefore, when accessing the video consumption system, the set of videos initially selected by the recommendation system for presentation to the user may not include the new video provided by the content creator, which can cause confusion. This may be because there may be other videos that better match the user's content viewing preferences than the new video from the content creator. Consequently, the user may be confused as to why the badge was presented, as the user may interpret the badge as causing the presentation of the new video from the content creator as the initial video presented when accessing the video consumption system. This leads to unpredictable and erratic behavior.

[0018] In some cases, there may be a new video detection system for detecting the presence or existence of a new video being added. The new video detection system may instruct the client application or itself to present a badge to indicate the presence of the new video being added. The client application or video detection system may present the badge and may receive a request to access the video consumption system at some later time. The video consumption system then selects a set of videos that match the user's preferences, which may or may not include the new video that caused the badge to be presented. The timing between the video consumption system selecting the video and the new video detection system presenting the badge is not synchronized. One way to solve this problem is to have the client application continuously extract and cache videos from the video consumption system to ensure that the cached or extracted videos correspond to the videos including the new video that caused the badge. However, performing these operations consumes a lot of resources and may cause unnecessary traffic on the server hosting the video consumption system. This is extremely inefficient and impractical for large-scale implementation and deployment.

[0019] The disclosed examples improve the efficiency of using electronic devices by providing a video playback and notification system that addresses these inefficiencies. In particular, the disclosed examples verify the availability of videos that meet certain conditions or criteria (e.g., new videos from creators to which the user has subscribed) before presenting a notification or badge to the user, such as through a client application or messaging client, and the videos are included in a set of videos extracted from a video playback graphical user interface (GUI). In this way, when a user or input from a user selecting a notification or badge or an icon associated with a notification or badge is received, the video playback GUI first presents the video that caused the presentation of the badge in the video sequence. This ensures that the user will not be confused by the content presented in response to the presentation of the badge or notification, and increases the level of trust and confidence that the user has in operating the device.

[0020] Specifically, the disclosed technology determines that a video that meets the criteria is currently available on a video server associated with a messaging client. In response to determining that a video that meets the criteria is currently available, the messaging client on the client device pre-fetches (e.g., downloads) a video sequence that matches the profile of a user associated with the messaging client from a recommendation engine. The recommendation engine can be used to provide the video sequence to a video playback GUI that automatically plays back the videos in the sequence. The disclosed technology determines that a video that meets the criteria is in the first position in the video sequence, and in response, presents a notification indicating the availability of the video on the video playback GUI.

[0021] In this manner, the disclosed examples improve the efficiency of using electronic devices by reducing the complexity a user experiences when accessing video applications. This reduces the device resources (e.g., processor cycles, memory, and power usage) required to complete tasks with the device.

[0022] Figure 1 1 is a block diagram illustrating an example messaging system 100 for exchanging data (e.g., messages and associated content) over a network 106. The messaging system 100 includes a plurality of client devices 102, each of which hosts several applications including a messaging client application 104 (also referred to as a messaging client) and third-party applications 105. Each messaging client application 104 is communicatively coupled to other instances of the messaging client application 104, the third-party applications 105, and a messaging server system 108 via a network 106 (e.g., the Internet).

[0023] Thus, each messaging client application 104 and third-party application 105 is able to communicate and exchange data with another messaging client application 104 and third-party application 105 and with the messaging server system 108 via the network 106. The data exchanged between the messaging client application 104 and the third-party application 105 and between the messaging client application 104 and the messaging server system 108 includes functions (e.g., commands to invoke functions) and payload data (e.g., text, audio, video, or other multimedia data). Any public communication between the messaging client application 104 and the third-party application 105 can be transmitted directly from the messaging client application 104 to the third-party application 105 and / or indirectly (e.g., via one or more servers) from the messaging client application 104 to the third-party application 105.

[0024] The third-party application 105 and the messaging client application 104 are applications that include a feature set that allows the client device 102 to access the video notification system 124. The third-party application 105 is a separate and distinct application from the messaging client application 104. The third-party application 105 is downloaded and installed by the client device 102 separately from the messaging client application 104. In some implementations, the third-party application 105 is downloaded and installed by the client device 102 before or after the messaging client application 104 is downloaded and installed. The third-party application 105 is provided by an entity or organization different from the entity or organization that provides the messaging client application 104. The third-party application 105 is an application that can be accessed by the client device 102 using login credentials that are different from the login credentials of the messaging client application 104. That is, the third-party application 105 may maintain a first user account, while the messaging client application 104 may maintain a second user account. For example, the third-party application 105 may be a social networking application, a dating application, a ride or car sharing application, a shopping application, a trading application, a gaming application, or an imaging application.

[0025] In some examples, the messaging client application 104 can present a video GUI to the user that automatically and sequentially plays back a sequence or playlist of multiple videos. The videos can be provided by various users and / or content creators of the messaging client application 104. After the first video ends, the first video can automatically replay from the beginning, or the second video can start to be played back. In some cases, the second video can start to be played back in response to input received from the user (e.g., a swipe gesture).

[0026] In some cases, the messaging client application 104 communicates with a video ranking module (also known as a content recommendation system) to retrieve a list of multiple videos that match the preferences of the user of the messaging client application 104. Once the list of multiple videos is retrieved, cached, or extracted, the messaging client application 104 begins playing back the videos in the video playback GUI. In some cases, the messaging client application 104 presents a dedicated on-screen option for launching the video playback GUI. In response to receiving input selecting the on-screen option, the messaging client application 104 communicates with the video ranking module by providing a user identifier of the user of the messaging client application 104 to extract or retrieve a list of videos that best match the user's preferences for presentation in the video playback GUI.

[0027] The video playback GUI (also referred to as the video GUI) can display one or more interactive representations (e.g., icons or thumbnails) identifying corresponding videos. The messaging client application 104 receives a user selection of a first interactive representation among the interactive representations. In response to receiving the user selection, the messaging client application 104 retrieves the first video corresponding to the selected interactive representation and plays back or displays the video. In some cases, the first video can include a sequence of one or more video clips (e.g., 10-second video clips). The user can advance between each video clip in the video by tapping on the screen (physical touch for less than a threshold time period [e.g., 1 second]). In response to the user tapping on the screen, the messaging client application 104 retrieves the next video clip in the sequence. Once all video clips or once the first video has been fully played back, a second video can be selected (e.g., by the user manually selecting a particular interactive representation or by automatically selecting a video that matches the user's interests). The second video can be played back and presented to the user.

[0028] The messaging server system 108 provides server-side functionality to certain messaging client applications 104 via the network 106. Although certain functionality of the messaging system 100 is described herein as being performed by either the messaging client application 104 or the messaging server system 108, it should be understood that the location of certain functionality within the messaging client application 104 or within the messaging server system 108 is a design choice. For example, it may be technically preferable to initially deploy certain technologies and functionality within the messaging server system 108 but later migrate the technologies and functionality to the messaging client application 104 where the client device 102 has sufficient processing power.

[0029] The messaging server system 108 supports various services and operations provided to the messaging client applications 104. Such operations include sending data to the messaging client applications 104, receiving data from the messaging client applications 104, and processing data generated by the messaging client applications 104. By way of example, this data may include message content, client device information, geolocation information, media annotations and overlays, virtual objects, message content persistence conditions, social network information, and live event information. Data exchange within the messaging system 100 is invoked and controlled through functionality available through the user interface (UI) of the messaging client applications 104.

[0030] Turning now specifically to the messaging server system 108, an application program interface (API) server 110 is coupled to and provides a programming interface to an application server 112. The application server 112 is communicatively coupled to a database server 118, which facilitates access to a database 120 in which data associated with messages processed by the application server 112 is stored.

[0031] Specifically, the API server 110 receives and sends message data (e.g., commands and message payloads) between the client device 102 and the application server 112. Specifically, the API server 110 provides a set of interfaces (e.g., routines and protocols) that can be called or queried by the messaging client application 104 and the third-party application 105 to invoke the functionality of the application server 112. The API server 110 exposes various functions supported by the application server 112, including: account registration; login functionality; sending messages from a particular messaging client application 104 to another messaging client application 104 or a third-party application 105 via the application server 112; sending media files (e.g., images or videos) from a messaging client application 104 to the messaging server application 114 and possible access for another messaging client application 104 or a third-party application 105; setting of media data collections (e.g., stories); retrieval of such collections; retrieval of a friend list of a user of the client device 102; retrieval of messages and content; adding and removing friends from a social graph; positioning of friends within a social graph; access to user conversation data; access to avatar information stored on the messaging server system 108; and opening application events (e.g., related to the messaging client application 104).

[0032] The application server 112 hosts several applications and subsystems, including a messaging server application 114, an image processing system 116, a social networking system 122, and a video notification system 124. The messaging server application 114 implements several message processing technologies and functions, particularly those related to the aggregation and other processing of content (e.g., text and multimedia content) included in messages received from multiple instances of the messaging client application 104. As will be described in further detail, text and media content from multiple sources can be aggregated into collections of content (e.g., referred to as stories or galleries). These collections are then made available to the messaging client applications 104 by the messaging server application 114. Given the hardware requirements for such processing, other processor- and memory-intensive processing of data can also be performed on the server side by the messaging server application 114.

[0033] Application server 112 also includes an image processing system 116 that is generally dedicated to performing various image processing operations on images or videos received within the payload of messages at messaging server application 114. Portions of image processing system 116 may also be implemented by video notification system 124.

[0034] The social networking system 122 supports various social networking functions and services and makes them available to the messaging server application 114. To this end, the social networking system 122 maintains and accesses an entity graph within the database 120. Examples of functions and services supported by the social networking system 122 include identifying other users of the messaging system 100 with whom a particular user has relationships or "follows," as well as identifying other entities and interests of the particular user. Such other users may be referred to as the user's friends. The social networking system 122 may access location information associated with each of the user's friends to determine where they live or their current geographic location. The social networking system 122 may maintain a location profile for each of the user's friends, indicating the geographic location in which the user's friends reside.

[0035] The video notification system 124 performs some or all of the aforementioned functions of the messaging client application 104. For example, the video notification system 124 determines that a video meeting the criteria is currently available on a video server associated with the messaging client application 104 implemented on the client device 102. In response to determining that a video meeting the criteria is currently available on the video server, the video notification system 124 causes the messaging client application 104 on the client device 102 to pre-fetch (e.g., cache or extract and locally store) a video sequence that matches the profile of the user associated with the messaging client application 104 from a recommendation engine (e.g., a video ranking module). The recommendation engine can be used to provide the video sequence to a video playback GUI, which automatically plays back the videos in the sequence. The video notification system 124 determines that the video meeting the criteria is in the first position in the video sequence. In response to determining that the video meeting the criteria is in the first position in the video sequence, the video notification system 124 presents a notification indicating the availability of the video on the video playback GUI via the messaging client application 104.

[0036] In some examples, the notification includes a badge or icon displayed on top of or near an option associated with a video playback GUI presented by the GUI of the messaging client application 104. In some examples, the video notification system 124 receives input selecting the option to display the notification and, in response, presents the video playback GUI including the video sequence in full screen.

[0037] In some examples, the criteria corresponds to a new video received from a content creator to which the user subscribes or a new video with which the user is friends on the messaging client application 104. In some examples, the criteria corresponds to trending content or popular content associated with a popularity exceeding a threshold, the trending content or popular content being associated with a category of content that matches the user's profile. In some examples, the video notification system 124 receives input selecting an option for accessing a video playback GUI after presenting the notification. In response to receiving the input, the video notification system 124 presents a video playback GUI including the video sequence in full screen and presents a message describing the criteria that caused the notification to be presented along with the first video presented by the video playback GUI.

[0038] In some examples, the message is presented on top of or near the first video. In some examples, the video notification system 124 periodically (e.g., every hour) scans new content available on the video server to determine whether videos that meet the criteria are currently available on the video server. In some examples, the video notification system 124 stores a flag in a database indicating that videos that meet the criteria are currently available on the video server. In response to receiving a request to start the messaging client application 104 on the client device 102, the messaging client application 104 determines that the flag has been stored in the database. The messaging client application 104 pre-fetches the video sequence in response to determining that the flag has been stored in the database.

[0039] In some examples, video notification system 124 trains a machine learning model, for example based on training data, to predict the time of day when a user accesses the video playback GUI. In some examples, video notification system 124 applies the machine learning model to the current time to determine whether the current time corresponds to the predicted time of day when the user accesses the video playback GUI. In response to determining that the current time corresponds to the predicted time of day and in response to determining that a video meeting the criteria is currently available on the video server, video notification system 124 causes messaging client application 104 on client device 102 to prefetch the video sequence.

[0040] In some examples, the criteria include multiple criteria.In some examples, when a video sequence is being presented in the video playback GUI, the video notification system 124 instructs the recommendation engine through the messaging client application 104 to retrieve an additional video sequence.

[0041] In some examples, video notification system 124 presents a first video in a video sequence in a video playback GUI. Video notification system 124 retrieves and presents a second video in the video sequence during playback of the first video and in an automated process. In some examples, the second video is presented in response to receiving a swipe gesture. In some examples, the second video is automatically presented after the first video completes playback. In some examples, the first video loops and continues to be displayed from the beginning of the first video until an input is received to present the second video.

[0042] Application server 112 is communicatively coupled to database server 118, which facilitates access to database 120, which stores data associated with messages processed by messaging server application 114. Database 120 may be a third-party database. For example, application server 112 may be associated with a first entity, and database 120, or a portion thereof, may be associated with and hosted by a second, different entity. In some implementations, database 120 stores user data collected by the first entity regarding each user of a service provided by the first entity. For example, user data may include usernames, passwords, addresses, friends, activity information, preferences, videos or content consumed by the user, and the like.

[0043] Figure 2 2 is a diagram illustrating data that may be stored in database 120 of messaging server system 108 according to certain examples. Although the contents of database 120 are shown as including several tables, it should be understood that data may be stored in other types of data structures (e.g., as an object-oriented database).

[0044] The database 120 includes message data stored in a message table 214. The entity table 202 stores entity data, including an entity graph 204. The entities whose records are maintained in the entity table 202 may include individuals, corporate entities, organizations, objects, places, events, etc. Regardless of the type, any entity for which the messaging server system 108 stores data may be an identified entity. Each entity is provided with a unique identifier, as well as an entity type identifier (not shown).

[0045] The entity graph 204 stores information about relationships and associations between entities. By way of example only, such relationships may be social, professional (e.g., working in a common company or organization), interest-based, or activity-based.

[0046] The message table 214 may store a collection of conversations between a user and one or more friends or entities. The message table 214 may include various attributes for each conversation, such as a list of participants, the size of the conversation (e.g., the number of users and / or the number of messages), the chat color of the conversation, a unique identifier for the conversation, and any other conversation-related features.

[0047] The database 120 also stores annotation data in the form of examples of filters in the annotation table 212. The database 120 also stores the annotation content received in the annotation table 212. The filters storing data in the annotation table 212 are associated with the video and / or image and are applied to the video (whose data is stored in the video table 210) and / or the image (whose data is stored in the image table 208). In one example, the filter is displayed as an overlay on the image or video during presentation to the recipient user. The filter can be of various types, including user-selected filters from a filter gallery presented to the sending user by the messaging client application 104 when the sending user is composing a message. Other types of filters include geolocation filters (also known as geofilters), which can be presented to the sending user based on geolocation. For example, a geolocation filter specific to a nearby or special location can be presented in the UI by the messaging client application 104 based on geolocation information determined by the global positioning system (GPS) unit of the client device 102. Another type of filter is a data filter, which can be selectively presented to the sending user by the messaging client application 104 based on other input or information collected by the client device 102 during the message creation process. Examples of data filters include the current temperature at a particular location, the current speed the sending user is traveling, the battery life of the client device 102, or the current time.

[0048] Other annotation data that may be stored in the image table 208 is so-called "shot" data. A "shot" may be real-time special effects and sounds that may be added to an image or video.

[0049] As mentioned above, video table 210 stores video data, which, in one example, is associated with messages for which records are maintained within message table 214. Similarly, image table 208 stores image data associated with messages whose message data is stored in entity table 202. Entity table 202 can associate various annotations from annotation table 212 with the various images and videos stored in image table 208 and video table 210.

[0050] The story table 206 stores data related to a collection of messages and associated image, video, or audio data, which are compiled into a collection (e.g., a story or gallery). The creation of a particular collection can be initiated by a particular user (e.g., each user for whom a record is maintained in the entity table 202). A user can create a "personal story" in the form of a collection of content that has been created and sent / broadcasted by the user. To this end, the UI of the messaging client application 104 can include a user-selectable icon that enables the sending user to add specific content to his or her personal story.

[0051] A collection may also constitute a "live story," which is a collection of content from multiple users that is created manually, automatically, or using a combination of manual and automatic techniques. For example, a "live story" may constitute a curated stream of user-submitted content from various locations and events. Users whose client devices have location services enabled and who are at a co-located event at a particular time may be presented with an option, for example via the UI of the messaging client application 104, to contribute content to a particular live story. Live stories may be identified to users by the messaging client application 104 based on their location. The end result is a "live story" told from a community perspective.

[0052] Another type of content collection is called a "location story," which enables users whose client devices 102 are located within a specific geographic location (e.g., on a college or university campus) to contribute to a particular collection. In some examples, contributions to location stories may require secondary authentication to verify that the end user belongs to a specific organization or other entity (e.g., is a student on a university campus).

[0053] Figure 3 is a schematic diagram illustrating the structure of a message 300 according to some examples, the message 300 being generated by a messaging client application 104 for transmission to another messaging client application 104 or a messaging server application 114. The content of a particular message 300 is used to populate a message table 214 stored within the database 120, which is accessible by the messaging server application 114. Similarly, the content of the message 300 is stored in memory as "in-transit" or "in-flight" data of the client device 102 or application server 112. The message 300 is shown as including the following components:

[0054] ●Message identifier 302: a unique identifier that identifies the message 300.

[0055] Message text payload 304 : Text to be generated by the user via the UI of the client device 102 and included in the message 300 .

[0056] • Message image payload 306 : Image data captured by the camera component of the client device 102 or retrieved from the memory of the client device 102 and included in the message 300 .

[0057] • Message video payload 308 : Video data captured by the camera component or retrieved from the memory component of the client device 102 and included in the message 300 .

[0058] • Message audio payload 310 : audio data captured by a microphone or retrieved from a memory component of the client device 102 and included in the message 300 .

[0059] • Message Annotation 312: Annotation data representing an annotation (eg, a filter, sticker, or other enhancement) to be applied to the message image payload 306, the message video payload 308, or the message audio payload 310 of the message 300.

[0060] ●Message duration parameter 314: A parameter value that indicates the amount of time in seconds that the content of the message (e.g., message image payload 306, message video payload 308, message audio payload 310) will be presented to the user or made accessible to the user via the messaging client application 104.

[0061] Message geolocation parameters 316: Geolocation data (e.g., latitude and longitude coordinates) associated with the content payload of the message. Multiple message geolocation parameter 316 values ​​can be included in the payload, with each of these parameter values ​​being associated with a content item included in the content (e.g., a specific image within the message image payload 306 or a specific video within the message video payload 308).

[0062] Message story identifier 318: An identifier value that identifies one or more content collections (e.g., "stories") with which a particular content item in the message image payload 306 of the message 300 is associated. For example, multiple images within the message image payload 306 may each be associated with multiple content collections using the identifier value.

[0063] Message Tags 320: Each message 300 can be tagged with a plurality of tags, each of which indicates the subject matter of the content included in the message payload. For example, where a particular image included in the message image payload 306 depicts an animal (e.g., a lion), a tag value indicating the relevant animal can be included within the message tags 320. The tag values ​​can be manually generated based on user input, or can be automatically generated using, for example, image recognition.

[0064] • Message sender identifier 322: An identifier (eg, a messaging system identifier, an email address, or a device identifier) ​​that indicates the user of the client device 102 on which the message 300 was generated and from which the message 300 was sent.

[0065] Message recipient identifier 324: An identifier (eg, a messaging system identifier, email address, or device identifier) ​​for the user of client device 102 to which message 300 is addressed. In the case of a conversation between multiple users, the identifier may indicate each user involved in the conversation.

[0066] The content (e.g., value) of each component of message 300 may be a pointer to a location in a table where the content data value is stored. For example, the image value in message image payload 306 may be a pointer to a location (or address) in image table 208. Similarly, the value in message video payload 308 may point to data stored in video table 210, the value stored in message annotation 312 may point to data stored in annotation table 212, the value stored in message story identifier 318 may point to data stored in story table 206, and the values ​​stored in message sender identifier 322 and message recipient identifier 324 may point to user records stored in entity table 202.

[0067] Figure 4 4 is a block diagram illustrating an example video notification system 124 according to an example. The video notification system 124 includes a video ranking module 414, a conditional triggering module 416, and a video playback display module 418.

[0068] The video ranking module 414 generates a video sequence for presentation using a video playback GUI of the messaging client application 104 on the corresponding client device 102. For example, the first client device 102 may present a messaging client application 104 interface that includes a dedicated option for accessing the video playback GUI. In response to receiving input selecting the dedicated option, the messaging client application 104 communicates an identifier of a user of the client device 102 with the video ranking module 414 to retrieve or pre-fetch a list of best matching videos for the user. The messaging client application 104 receives the list of best matching videos from the video ranking module 414 and launches the video playback GUI in full screen. The video ranking module 414 and / or the messaging client application 104 may then select a first video from the first plurality of videos and present the first video in full screen on the client device 102.

[0069] After the first video ends and / or in response to receiving a swipe gesture or other input, the messaging client application 104 and / or the video ranking module 414 can transition the presentation of the video playback GUI from presenting the first video to presenting a second video in the first plurality of videos. Along with any video presented by the video playback GUI, the messaging client application 104 and / or the video ranking module 414 presents a plurality of options. For example, the plurality of options may include a modification option for modifying the displayed video, a comment option for adding comments to the video being presented, and / or a share option. In response to receiving input selecting a share option (e.g., by selecting an on-screen menu option displayed on top of or near the video in the video playback GUI), the video ranking module 414 generates a message for transmission to the recipient that includes an identifier or link to the video that is then displayed when the share option is selected.

[0070] The conditional triggering module 416 can store one or more conditions or criteria for generating the presentation of a badge or notification on the messaging client application 104. The badge or notification can visually notify the user of the messaging client application 104 that one or more videos of interest are recently available for access using the video playback GUI from the video ranking module 414. Specifically, the conditional triggering module 416 can be used to cause the messaging client application 104 to display the badge or icon next to or in association with an option for launching the video playback GUI by the messaging client application 104.

[0071] In some examples, the conditional trigger module 416 may store conditions or criteria that identify content creators or users to which a given user has subscribed. The conditional trigger module 416 may continuously or periodically access a database of videos currently available on a video server associated with the video ranking module 414. The conditional trigger module 416 may determine a timestamp representing the last time a video playback GUI was accessed by the messaging client application 104 of the given user. The conditional trigger module 416 may search the database of videos for any new videos that have been uploaded since the timestamp (e.g., with a creation time that follows the timestamp). The conditional trigger module 416 then determines whether any newly uploaded videos are associated with content creators that match the user or content creators to which the given user has subscribed. In response to determining that one or more of the newly uploaded videos are associated with content creators that match the user or content creators to which the given user has subscribed, the conditional trigger module 416 stores a flag for the messaging client application 104 to access and determine the existence of such new videos. Based on this flag, the messaging client application 104 may later conditionally present a badge or notification associated with an option for accessing the video playback GUI.

[0072] In some examples, the conditional trigger module 416 can store conditions or criteria for identifying a given user's friends on the messaging client application 104. Friends can be two-way friends of the given user. The conditional trigger module 416 can continuously or periodically access a database of videos currently available on a video server associated with the video ranking module 414. The conditional trigger module 416 can determine a timestamp representing the last time the video playback GUI was accessed by the messaging client application 104 of the given user. The conditional trigger module 416 can search the database of videos for any new videos that have been uploaded since the timestamp (e.g., with a creation time that follows the timestamp). The conditional trigger module 416 then determines whether any of the newly uploaded videos are associated with a content creator that matches the given user's friends or a content creator that is a friend of the given user. In response to determining that one or more of the newly uploaded videos are associated with a content creator that matches the given user's friends, the conditional trigger module 416 stores a flag for the messaging client application 104 to access and determine the existence of such new videos. Based on the flag, the messaging client application 104 may later conditionally present a badge or notification in association with an option to access the video playback GUI.

[0073] In some examples, the conditional trigger module 416 can store conditions or criteria for identifying popular videos or trends with popularity exceeding a threshold. The conditional trigger module 416 can continuously or periodically access a database of videos currently available on the video server associated with the video ranking module 414. The conditional trigger module 416 can determine a timestamp representing the last time the video playback GUI was accessed by the messaging client application 104 of a given user. The conditional trigger module 416 can search the database of videos for any new videos that have been uploaded since the timestamp (e.g., with a creation time that follows the timestamp). The conditional trigger module 416 then determines whether any of the newly uploaded videos are trending or have a popularity exceeding a threshold. In such a case, the conditional trigger module 416 stores a flag for the messaging client application 104 to access and determine the existence of such a new video. Based on the flag, the messaging client application 104 can later conditionally present a badge or notification associated with an option to access the video playback GUI.

[0074] In some examples, after storing the flag, the client device 102 may receive a user request to launch the messaging client application 104. When the messaging client application 104 is launched or opened, the messaging client application 104 queries the database to determine whether the flag has been stored. If the messaging client application 104 detects the presence of the flag, the messaging client application 104 communicates with the video ranking module 414 to obtain a list of videos that best match the current preferences of the given user. The messaging client application 104 may also provide the video ranking module 414 with the criteria or conditions that led to the storage of the flag. The video ranking module 414 generates a video sequence and determines whether the video in the first position of the sequence corresponds to and matches the criteria (e.g., the video is uploaded by a content creator subscribed to by the given user, is trending, is uploaded by a two-way friend of the given user, etc.). If so, the video ranking module 414 notifies the messaging client application 104 that the condition is met. In some cases, the video ranking module 414 simply provides the video sequence to the messaging client application 104, and the messaging client application 104 then performs a determination of whether the first video in the sequence matches the criteria. In either case, if the first video in the sequence matches the criteria, the messaging client application 104 presents a notification or badge in association with or near an option or icon for initiating a video playback GUI.

[0075] In response to receiving a user selection of an option or icon by the messaging client application 104, the messaging client application 104 communicates with the video playback display module 418 to begin full-screen playback of the video sequence extracted from the video ranking module 414. In some examples, the messaging client application 104 presents a message in the video playback GUI that describes or represents the trigger or condition or criteria that caused the notification or badge to be presented. For example, upon presenting the video in the first position of the sequence in the video playback GUI, the messaging client application 104 overlays a message explaining why the video is in the first position. Specifically, the message can specify that the video in the first position was uploaded by a content creator to which the given user subscribes, is trending, was uploaded by a two-way friend of the given user, etc.

[0076] In some examples, the conditional trigger module 416 can train a machine learning model (e.g., a neural network) to predict one or more times when a user selects an option to launch the video playback GUI. The conditional trigger module 416 can collect a set of training data by storing the time and / or time of day each time an icon or option is selected to launch the video playback GUI. The conditional trigger module 416 then uses the training data in a regression to train the machine learning model to predict whether the current time is likely to represent a time when the user accesses or will access the video playback GUI. The parameters of the machine learning model are iteratively updated by processing the actual time (the true time) and the features and / or activities performed by the user when launching the video playback GUI. During operation, the conditional trigger module 416 collects a set of features and / or activities along with the current time to predict one or more times when the video playback GUI will be accessed. If the predicted one or more times fall within the current time range, the conditional trigger module 416 can assert a flag to notify the messaging client application 104 or cause the messaging client application 104 to display a notification or badge.

[0077] Figure 5 5 is a flow chart illustrating example operations of the video notification system 124 when performing process 500 according to some examples. Process 500 can be implemented in computer-readable instructions executed by one or more processors, such that the operations of process 500 can be performed in part or in whole by functional components of the messaging server system 108 and / or the third-party application 105; therefore, process 500 is described below by way of example with reference thereto. However, in other examples, at least some of the operations of process 500 can be deployed on various other hardware configurations. Therefore, process 500 is not intended to be limited to the messaging server system 108 and can be implemented in whole or in part by any other components. Some or all of the operations of process 500 can be performed in parallel, out of order, or omitted entirely.

[0078] At operation 501 , the video notification system 124 determines that a video meeting the criteria is currently available on a video server associated with a messaging client implemented on a client device, as discussed above.

[0079] At operation 502, in response to determining that videos meeting the criteria are currently available on the video server, the video notification system 124 causes the messaging client application 104 on the client device to pre-fetch video sequences that match the profile of the user associated with the messaging client from a recommendation engine, the recommendation engine being operable to provide one or more video sequences to a video playback GUI that automatically plays back the videos in the sequences, as discussed above.

[0080] At operation 503, the video notification system 124 determines that a video that meets the criteria is at the first position in the video sequence, as discussed above. In response to determining that a video that meets the criteria is at the first position in the video sequence, the video notification system 124 presents a notification indicating the availability of the video on the video playback GUI via the messaging client application 104, as shown in operation 504 and as discussed above.

[0081] Figure 6 and Figure 7 are illustrative inputs and outputs of the video notification system 124 according to an example. Figure 6 As shown in , user interface 600 is initially accessed and displayed. User interface 600 corresponds to the communication interface of messaging client application 104. The communication interface represents one or more messages exchanged between multiple users. The messages may include message 612 representing video 610 corresponding to video playback GUI. User interface 600 also indicates the sender of message 612 using message identifier 620.

[0082] The video notification system 124 may determine that a given video has recently been made available (e.g., uploaded by a content creator) and is stored on a video server associated with the video playback GUI. In such a case, the video notification system 124 retrieves a set of videos from a recommendation engine, such as the video ranking module 414. The video notification system 124 determines that a video in the first position of the set of videos matches the criteria. In such a case, the video notification system 124 presents a notification or badge 632 in association with or near an icon or option 630 for launching the video playback GUI.

[0083] In some examples, the user interface 600 receives input by tapping or selecting an icon or option 630. In response, the user interface 600 switches the display to initiate Figure 7 . Initially, the video playback GUI 700 presents the video 710 in full screen that is first in a set of videos extracted from the video ranking module 414. A message indicating why the video is displayed first in the sequence may be used to display the video. Figure 7 The message may represent criteria for triggering the display of a notification or badge. After the video completes playback and / or in response to receiving an up / down swipe input, the video playback GUI 700 begins sequentially presenting videos included in a set of videos selected based on the attributes, preferences, and / or taste profiles of the user of the client device 102.

[0084] Figure 8An illustrative mobile device 800 employing the video notification system 124 according to an example is shown. The mobile device 800 includes a physical mute switch 820 (e.g., a ringer mute switch) and a physical volume control 810 (which includes a volume-up button or key and a volume-down button or key). The physical mute switch 820 can be physically moved between two positions: a mute position (activated position) and a non-mute position (deactivated position). The mute position disables the audio output of the mobile device 800, but can be overridden by pressing the volume-up button while viewing some content. In this case, the audio of the content is presented to the user along with the audio of subsequent content. The volume control 810 includes a volume-down button. Selecting or pressing the volume-down button multiple times gradually decreases (e.g., by a predetermined amount each time the volume-down button is pressed) the volume level of the mobile device 800. When the volume is lowered by pressing the volume-down button enough times, a mute state (where the volume level is set to 0%) is reached.

[0085] Figure 9 is a block diagram illustrating an example software architecture 906 that can be used in conjunction with the various hardware architectures described herein. Figure 9 is a non-limiting example of a software architecture, and it should be understood that many other architectures can be implemented to facilitate the functionality described herein. The software architecture 906 can be implemented in a system such as Figure 10 The system is executed on the hardware of the machine 1000, which includes a processor 1004, a memory 1014, and an input / output (I / O) component 1018. A representative hardware layer 952 is shown and can represent, for example Figure 10 The machine 1000 is a computer system. A representative hardware layer 952 includes a processing unit 954 having associated executable instructions 904. Executable instructions 904 represent executable instructions of a software architecture 906, including implementations of the methods, components, and the like described herein. The hardware layer 952 also includes a memory and / or storage module memory / storage 956 also having executable instructions 904. The hardware layer 952 may also include other hardware 958.

[0086] exist Figure 9In the example architecture of , software architecture 906 can be conceptualized as a stack of layers, in which each layer provides specific functionality. For example, software architecture 906 may include layers such as operating system 902, library 920, framework / middleware 918, application 916, and presentation layer 914. In operation, application 916 and / or other components within a layer may invoke API call 908 through the software stack and receive message 912 in response to API call 908. The layers shown are representative in nature, and not all software architectures have all layers. For example, some mobile operating systems or dedicated operating systems may not provide framework / middleware 918, while other operating systems may provide such a layer. Other software architectures may include additional layers or different layers.

[0087] The operating system 902 can manage hardware resources and provide common services. The operating system 902 can include, for example, a kernel 922, services 924, and drivers 926. The kernel 922 can serve as an abstraction layer between the hardware and other software layers. For example, the kernel 922 can be responsible for memory management, processor management (e.g., scheduling), component management, networking, security settings, etc. The services 924 can provide other common services to other software layers. The drivers 926 are responsible for controlling or interfacing with the underlying hardware. For example, depending on the hardware configuration, the drivers 926 include display drivers, camera drivers, drivers, flash memory drivers, serial communication drivers (e.g., Universal Serial Bus (USB) drivers), Drivers, audio drivers, power management drivers, etc.

[0088] The libraries 920 provide common infrastructure used by the applications 916 and / or other components and / or layers. The libraries 920 provide functionality that allows other software components to perform tasks more easily than by directly interfacing with the functionality of the underlying operating system 902 (e.g., kernel 922, services 924, and / or drivers 926). The libraries 920 may include system libraries 944 (e.g., C standard libraries), which may provide functions such as memory allocation functions, string manipulation functions, mathematical functions, etc. In addition, the libraries 920 may include API libraries 946, such as media libraries (e.g., libraries that support rendering and manipulation of various media formats such as MPREG4, H.264, MP3, AAC, AMR, JPG, and PNG), graphics libraries (e.g., OpenGL frameworks that can be used to render two-dimensional and three-dimensional graphical content on a display), database libraries (e.g., SQLite that can provide various relational database functions), web libraries (e.g., WebKit that can provide web browsing functionality), etc. The library 920 may also include a variety of other libraries 948 to provide numerous other APIs to the applications 916 and other software components / modules.

[0089] The framework / middleware 918 (sometimes also referred to as middleware) provides a higher-level common infrastructure that can be used by applications 916 and / or other software components / modules. For example, the framework / middleware 918 can provide various graphical user interface functions, advanced resource management, advanced location services, etc. The framework / middleware 918 can provide a wide range of other APIs that can be utilized by applications 916 and / or other software components / modules, some of which may be specific to a particular operating system 902 or platform.

[0090] Applications 916 include built-in applications 938 and / or third-party applications 940. Examples of representative built-in applications 938 may include, but are not limited to, contact applications, browser applications, book reader applications, location applications, media applications, messaging applications, and / or game applications. Third-party applications 940 may include applications that are developed by entities other than the vendor of a particular platform using Android TM or IOS TM Software Development Kit (SDK) for developing applications and can be used on platforms such as IOS TM ANDROID TM 、 Mobile software running on the mobile operating system of the phone or other mobile operating system. The third-party application 940 can call API calls 908 provided by the mobile operating system (e.g., operating system 902) to facilitate the functions described herein.

[0091] Applications 916 may create a UI to interact with users of the system using built-in operating system functionality (e.g., kernel 922, services 924, and / or drivers 926), libraries 920, and framework / middleware 918. Alternatively or additionally, in some systems, interaction with the user may occur through a presentation layer, such as presentation layer 914. In these systems, the application / component "logic" may be separated from the aspects of the application / component that interact with the user.

[0092] Figure 10 is a block diagram illustrating components of a machine 1000 capable of reading instructions from a machine-readable medium (e.g., a machine-readable storage medium) and performing any one or more of the methodologies discussed herein, according to some examples. Specifically, Figure 10 A diagram of a machine 1000 is shown in the form of an example computer system within which instructions 1010 (e.g., software, programs, applications, applet, apps, or other executable code) may be executed to cause the machine 1000 to perform any one or more of the methodologies discussed herein. Thus, the instructions 1010 may be used to implement the modules or components described herein. The instructions 1010 convert a general-purpose, non-programmed machine 1000 into a specific machine 1000 that is programmed to perform the functions described and illustrated in the manner described. In alternative examples, the machine 1000 operates as a standalone device or may be coupled (e.g., networked) to other machines. In a networked deployment, the machine 1000 may operate as a server machine or a client machine in a server-client network environment, or as a peer machine in a peer-to-peer (or distributed) network environment. The machine 1000 may include, but is not limited to, a server computer, a client computer, a personal computer (PC), a tablet computer, a laptop computer, a netbook, a set-top box (STB), a personal digital assistant (PDA), an entertainment media system, a cellular phone, a smart phone, a mobile device, a wearable device (e.g., a smart watch), a smart home device (e.g., a smart appliance), other smart devices, a web appliance, a network router, a network switch, a network bridge, or any machine capable of executing, sequentially or otherwise, the instructions 1010 specifying actions to be taken by the machine 1000. Furthermore, while only a single machine 1000 is shown, the term "machine" shall also be taken to include any collection of machines that individually or jointly execute the instructions 1010 to perform any one or more of the methodologies discussed herein.

[0093] The machine 1000 may include a processor 1004, a memory / storage 1006, and an I / O component 1018, which may be configured to communicate with each other, for example, via a bus 1002. In an example, the processor 1004 (e.g., a central processing unit (CPU), a reduced instruction set computing (RISC) processor, a complex instruction set computing (CISC) processor, a graphics processing unit (GPU), a digital signal processor (DSP), an application specific integrated circuit (ASIC), a radio frequency integrated circuit (RFIC), another processor, or any suitable combination thereof) may include, for example, a processor 1008 that may execute instructions 1010 and a processor 1012. The term "processor" is intended to include a multi-core processor 1004 that may include two or more independent processors (sometimes referred to as "cores") that may execute instructions concurrently. Although Figure 10 Multiple processors 1004 are shown, but the machine 1000 may include a single processor with a single core, a single processor with multiple cores (e.g., a multi-core processor), multiple processors with a single core, multiple processors with multiple cores, or any combination thereof.

[0094] The memory / storage 1006 may include a memory 1014, such as a main memory or other memory storage device, and a storage unit 1016, both of which are accessed by the processor 1004, for example, via the bus 1002. The storage unit 1016 and the memory 1014 store instructions 1010 that embody any one or more of the methodologies or functionality described herein. The instructions 1010 may also reside, completely or partially, within the memory 1014, within the storage unit 1016, within at least one of the processors 1004 (e.g., within a cache memory of the processor), or within any suitable combination thereof during execution thereof by the machine 1000. Thus, the memory 1014, the storage unit 1016, and the memory of the processor 1004 are examples of machine-readable media.

[0095] The I / O components 1018 may include various components for receiving input, providing output, generating output, sending information, exchanging information, capturing measurements, etc. The specific I / O components 1018 included in a particular machine 1000 will depend on the type of machine. For example, a portable machine such as a mobile phone will likely include a touch input device or other such input mechanism, while a headless server machine will likely not include such a touch input device. It will be understood that the I / O components 1018 may include Figure 10Many other components are not shown. The I / O components 1018 are grouped according to function only to simplify the following discussion, and this grouping is in no way limiting. In various examples, the I / O components 1018 may include output components 1026 and input components 1028. The output components 1026 may include visual components (e.g., displays such as plasma display panels (PDPs), light-emitting diode (LED) displays, liquid crystal displays (LCDs), projectors, or cathode ray tubes (CRTs)), auditory components (e.g., speakers), tactile components (e.g., vibration motors, resistance mechanisms), other signal generators, etc. The input components 1028 may include alphanumeric input components (e.g., keyboards, touch screens configured to receive alphanumeric input, optical keyboards, or other alphanumeric input components), point-based input components (e.g., mice, touchpads, trackballs, joysticks, motion sensors, or other pointing instruments), tactile input components (e.g., physical buttons, touch screens or other tactile input components that provide location and / or force for touch or touch gestures), audio input components (e.g., microphones), etc.

[0096] In another example, the I / O component 1018 may include a biometric component 1039, a motion component 1034, an environment component 1036, or a position component 1038, as well as various other components. For example, the biometric component 1039 may include a component for detecting expressions (e.g., hand expressions, facial expressions, voice expressions, body postures, or eye tracking), measuring biosignals (e.g., blood pressure, heart rate, body temperature, sweat, or brain waves), identifying people (e.g., voice recognition, retinal recognition, facial recognition, fingerprint recognition, or electroencephalogram-based recognition), etc. The motion component 1034 may include an acceleration sensor component (e.g., an accelerometer), a gravity sensor component, a rotation sensor component (e.g., a gyroscope), etc. The environment component 1036 may include, for example, an illumination sensor component (e.g., a photometer), a temperature sensor component (e.g., one or more thermometers that detect ambient temperature), a humidity sensor component, a pressure sensor component (e.g., a barometer), an auditory sensor component (e.g., one or more microphones that detect background noise), a proximity sensor component (e.g., an infrared sensor that detects nearby objects), a gas sensor (e.g., a gas detection sensor that detects the concentration of hazardous gases for safety or measures pollutants in the atmosphere), or other components that can provide indications, measurements, or signals corresponding to the surrounding physical environment. The location component 1038 may include a positioning sensor component (e.g., a GPS receiver component), an altitude sensor component (e.g., an altimeter or barometer that detects air pressure, from which altitude can be derived), an orientation sensor component (e.g., a magnetometer), etc.

[0097] A variety of technologies can be used to implement communications. I / O components 1018 may include communications components 1040 operable to couple machine 1000 to network 1037 or device 1029 via coupling 1024 and coupling 1222, respectively. For example, communications components 1040 may include a network interface component or other suitable device to interface with network 1037. In other examples, communications components 1040 may include wired communications components, wireless communications components, cellular communications components, near field communications (NFC) components, Components (e.g. Low power consumption), Device 1029 may be another machine or any of a variety of peripheral devices (eg, a peripheral device coupled via USB).

[0098] In addition, the communication component 1040 can detect an identifier or include a component operable to detect an identifier. For example, the communication component 1040 can include a radio frequency identification (RFID) tag reader component, an NFC smart tag detection component, an optical reader component (e.g., an optical sensor for detecting one-dimensional bar codes such as Universal Product Code (UPC) bar codes, multi-dimensional bar codes such as Quick Response (QR) codes, Aztec codes, Data Matrix, Dataglyph, MaxiCode, PDF417, Ultra Code, UCC RSS-2D bar codes, and other optical codes) or an auditory detection component (e.g., a microphone for an audio signal for identifying a tag). In addition, various information can be obtained via the communication component 1040, such as location positioning via Internet Protocol (IP) geolocation, location information via RFID tags, and location information via RFID tags. Positioning can be achieved through signal triangulation, positioning can be achieved through detection of NFC beacon signals that can indicate a specific position, etc.

[0099] Glossary:

[0100] "Carrier signal" in this context refers to any intangible medium capable of storing, encoding, or carrying instructions, transitory or non-transitory, for execution by a machine and includes digital or analog communication signals or other intangible media to facilitate communication of such instructions. Instructions may be sent or received over a network using a transitory or non-transitory transmission medium via a network interface device and using any of a number of well-known transmission protocols.

[0101] A "client device" in this context refers to any machine that interfaces with a communication network to obtain resources from one or more server systems or other client devices. A client device may be, but is not limited to, a mobile phone, a desktop computer, a laptop computer, a PDA, a smartphone, a tablet computer, an ultrabook, a netbook, a laptop computer, a multiprocessor system, a microprocessor-based or programmable consumer electronics product, a game console, a set-top box, or any other communication device that a user can use to access a network.

[0102] A "communication network" in this context refers to one or more parts of a network, which may be an ad hoc network, an intranet, an extranet, a virtual private network (VPN), a local area network (LAN), a wireless LAN (WLAN), a wide area network (WAN), a wireless WAN (WWAN), a metropolitan area network (MAN), the Internet, a part of the Internet, a part of the public switched telephone network (PSTN), a plain old telephone service (POTS) network, a cellular telephone network, a wireless network, The coupling may be a network, another type of network, or a combination of two or more such networks. For example, the network or a portion of the network may include a wireless network or a cellular network, and the coupling may be a code division multiple access (CDMA) connection, a global system for mobile communications (GSM) connection, or other type of cellular or wireless coupling. In this example, the coupling may implement any of various types of data transmission technologies, such as single carrier radio transmission technology (1xRTT), evolution data optimized (EVDO) technology, general packet radio service (GPRS) technology, enhanced data rates for GSM evolution (EDGE) technology, the third generation partnership project (3GPP) including 3G, fourth generation wireless (4G) networks, universal mobile telecommunications system (UMTS), high speed packet access (HSPA), world wide interoperability for microwave access (WiMAX), long term evolution (LTE) standards, other standards defined by various standards setting organizations, other long range protocols, or other data transmission technologies.

[0103] In this context, a "transient message" is a message that can be accessed for a limited duration. Transient messages can be text, images, videos, and more. The access period for a transient message can be set by the sender of the message. Alternatively, the access period can be a default setting or a setting specified by the recipient. Regardless of the setting technique, the message is transient.

[0104] "Machine-readable medium" in this context refers to a component, device, or other tangible medium capable of storing instructions and data, either temporarily or permanently, and may include, but is not limited to, random access memory (RAM), read-only memory (ROM), buffer memory, flash memory, optical media, magnetic media, cache memory, other types of storage devices (e.g., erasable programmable read-only memory (EEPROM)), and / or any suitable combination thereof. The term "machine-readable medium" should be taken to include a single medium or multiple media (e.g., a centralized or distributed database or associated caches and servers) that can store instructions. The term "machine-readable medium" will also be taken to include any medium or combination of multiple media that can store instructions (e.g., code) executed by a machine, such that the instructions, when executed by one or more processors of the machine, cause the machine to perform any one or more of the methods described herein. Thus, "machine-readable medium" refers to a single storage device or device, as well as a "cloud-based" storage device system or storage device network that includes multiple storage devices or devices. The term "machine-readable medium" does not include the signal itself.

[0105] "Component" in this context refers to a device, physical entity or logic having boundaries defined by function or subroutine calls, branch points, APIs or other technologies that provide partitioning or modularization of specific processing or control functions. A component can be combined with other components via its interface to perform machine processing. A component can be a packaged functional hardware unit designed for use with other components and can be part of a program that generally performs a specific function in related functions. A component can constitute a software component (e.g., a code embodied on a machine-readable medium) or a hardware component. A "hardware component" is a tangible unit that can perform certain operations and can be configured or arranged in a certain physical manner. In various examples, one or more computer systems (e.g., a stand-alone computer system, a client computer system or a server computer system) or one or more hardware components (e.g., a processor or a processor group) of a computer system can be configured by software (e.g., an application or an application part) to be a hardware component that operates to perform certain operations described herein.

[0106] Hardware components can also be implemented mechanically, electronically, or in any suitable combination thereof. For example, a hardware component can include a dedicated circuit system or logic that is permanently configured to perform certain operations. A hardware component can be a dedicated processor, such as a field programmable gate array (FPGA) or an ASIC. A hardware component can also include a programmable logic or circuit system that is temporarily configured to perform certain operations by software. For example, a hardware component can include software executed by a general-purpose processor or other programmable processor. Once configured by such software, the hardware component becomes a specific machine (or specific component of a machine) that is uniquely customized to perform the configured function, rather than a general-purpose processor. It will be understood that it can be decided to mechanically implement the hardware component in a dedicated and permanently configured circuit system or in a temporarily configured circuit system (e.g., configured by software) for cost and time considerations. Accordingly, the phrase "hardware component" (or "hardware-implemented component") should be understood to include a tangible entity, that is, an entity that is physically constructed, permanently configured (e.g., hardwired) or temporarily configured (e.g., programmed) to operate in some way or perform certain operations described herein. Considering an example where hardware components are temporarily configured (e.g., programmed), each of the hardware components need not be configured or instantiated at any one time. For example, where the hardware components include a general-purpose processor that is configured as a special-purpose processor by software, the general-purpose processor can be configured as different special-purpose processors (e.g., including different hardware components) at different times. The software accordingly configures one or more specific processors to, for example, constitute a specific hardware component at one time and to constitute different hardware components at different times.

[0107] Hardware components can provide information to other hardware components and receive information from other hardware components. Therefore, described hardware components can be considered to be coupled in communication. In the case of having multiple hardware components simultaneously, communication can be realized by signal transmission (for example, by suitable circuit and bus) between two or more hardware components or among them. In the example that multiple hardware components are configured or instantiated at different times, communication between such hardware components can be realized, for example, by storing information in the memory structure that multiple hardware components access and retrieving information in this memory structure. For example, a hardware component can perform an operation, and the output of this operation is stored in the memory device that it is coupled in communication. Then, other hardware components can access the memory device at a subsequent time to retrieve the stored output and process the stored output.

[0108] The hardware component can also initiate communication with an input device or an output device and can operate on resources (e.g., collect information). The various operations of the example methods described herein can be performed at least in part by one or more processors that are temporarily configured (e.g., by software) or permanently configured to perform the relevant operations. Whether temporarily configured or permanently configured, such a processor can constitute a processor-implemented component that operates to perform one or more operations or functions described herein. As used herein, a "processor-implemented component" refers to a hardware component implemented using one or more processors. Similarly, the methods described herein can be at least partially implemented by a processor, wherein a specific one or more processors are examples of hardware. For example, at least some of the operations of the method can be performed by one or more processors or processor-implemented components. In addition, one or more processors can also operate to support the execution of relevant operations in a "cloud computing" environment or operate as "software as a service" (SaaS). For example, at least some of the operations can be performed by a computer group (as an example of a machine including a processor), wherein these operations can be accessed via a network (e.g., the Internet) and via one or more appropriate interfaces (e.g., APIs). The execution of certain operations may be distributed among the processors, not residing solely within a single machine, but deployed across multiple machines. In some examples, the processor or processor-implemented components may be located in a single geographic location (e.g., in a home environment, an office environment, or a server farm). In other examples, the processor or processor-implemented components may be distributed across multiple geographic locations.

[0109] A "processor" in this context refers to any circuit or virtual circuit (a physical circuit emulated by logic executed on an actual processor) that manipulates data values ​​according to control signals (e.g., "commands," "opcodes," "machine code," etc.) and produces corresponding output signals that are used to operate a machine. For example, a processor may be a central processing unit (CPU), a reduced instruction set computing (RISC) processor, a complex instruction set computing (CISC) processor, a graphics processing unit (GPU), a digital signal processor (DSP), an ASIC, a radio frequency integrated circuit (RFIC), or any combination thereof. A processor may also be a multi-core processor having two or more independent processors (sometimes referred to as "cores") that can execute instructions simultaneously.

[0110] A "timestamp" in this context refers to a sequence of coded information or characters that identifies when some event occurred, for example, giving a date and time of day, sometimes to a fraction of a second.

[0111] Changes and modifications may be made to the disclosed examples without departing from the scope of the present disclosure. These and other changes or modifications are intended to be included within the scope of the present disclosure as expressed in the following claims.

Claims

1. A method comprising: determining, by the one or more processors, that a video meeting the criteria is currently available on a video server associated with a messaging client implemented on the client device; responsive to determining that the videos meeting the criteria are currently available on the video server, causing the messaging client on the client device to pre-fetch video sequences matching a profile of a user associated with the messaging client from a recommendation engine, the recommendation engine operable to provide one or more video sequences to a video playback graphical user interface (GUI), the video playback graphical user interface automatically playing back the videos in the sequence; Determining that the video meeting the criterion is at a first position in the video sequence; as well as In response to determining that the video meeting the criteria is at the first position in the video sequence, a notification is presented by the messaging client indicating the availability of the video on the video playback GUI.

2. The method according to claim 1, wherein The notification includes a badge or icon displayed on top of or adjacent to an option associated with the video playback GUI.

3. The method according to any one of claims 1 to 2, further comprising: receiving input selecting the option for which to display the notification; as well as In response to receiving the input, the video playback GUI including the video sequence is presented in full screen.

4. The method according to any one of claims 1 to 3, wherein The criteria corresponds to new videos received from content creators to which the user subscribes or new videos received from content creators with whom the user is friends on the messaging client.

5. The method according to any one of claims 1 to 4, wherein The criteria corresponds to popular content or trending content associated with a popularity exceeding a threshold, the trending content or the popular content being associated with a category of content that matches a profile of the user.

6. The method according to any one of claims 1 to 5, further comprising: After presenting the notification, receiving input selecting an option for accessing the video playback GUI; In response to receiving the input, presenting the video playback GUI including the video sequence in full screen; as well as A message describing the criteria that caused the notification to be presented is presented along with the first video presented by the video playback GUI.

7. The method according to claim 6, wherein: The message is presented on top of or adjacent to the first video.

8. The method according to any one of claims 1 to 7, further comprising: The video server is periodically scanned for new content available to determine that the video meeting the criteria is currently available on the video server.

9. The method according to any one of claims 1 to 8, further comprising: storing in a database a flag indicating that the video meeting the criteria is currently available on the video server; as well as In response to receiving a request to launch the messaging client on the client device, determining, by the messaging client, that the flag is already stored in the database, wherein the messaging client pre-fetches the video sequence in response to determining that the flag is already stored in the database.

10. The method according to any one of claims 1 to 9, further comprising: A machine learning model is trained to predict the time of day when the user accesses the video playback GUI.

11. The method according to claim 10, further comprising: applying the machine learning model to a current time to determine whether the current time corresponds to a predicted time of day when the user accesses the video playback GUI; as well as In response to determining that the current time corresponds to the predicted time of day and in response to determining that the video meeting the criteria is currently available on the video server, causing the messaging client on the client device to prefetch the video sequence.

12. The method according to any one of claims 1 to 11, wherein The standard includes multiple standards.

13. The method according to any one of claims 1 to 12, further comprising: While the video sequence is being presented in the video playback GUI, the recommendation engine is instructed by the messaging client to retrieve additional video sequences.

14. The method according to any one of claims 1 to 13, further comprising: presenting a first video in the video sequence in the video playback GUI; as well as During playback of the first video and in an automated process, a second video in the video sequence is retrieved and presented.

15. The method according to claim 14, wherein The second video is presented in response to receiving the swipe gesture.

16. The method according to any one of claims 1 to 15, wherein After the first video completes playback, the second video is automatically presented.

17. The method according to any one of claims 1 to 16, wherein The first video loops and continues to be displayed from the beginning of the first video until input is received for presenting the second video.

18. A system comprising: A processor of a client device, the processor being configured to perform operations comprising: determining that a video meeting the criteria is currently available on a video server associated with a messaging client implemented on the client device; responsive to determining that the videos meeting the criteria are currently available on the video server, causing the messaging client on the client device to pre-fetch video sequences matching a profile of a user associated with the messaging client from a recommendation engine, the recommendation engine operable to provide one or more video sequences to a video playback graphical user interface (GUI), the video playback graphical user interface automatically playing back the videos in the sequence; Determining that the video meeting the criterion is at a first position in the video sequence; and In response to determining that the video meeting the criteria is at the first position in the video sequence, a notification is presented by the messaging client indicating the availability of the video on the video playback GUI.

19. The system according to claim 18, wherein: The notification includes a badge or icon displayed on top of or adjacent to an option associated with the video playback GUI.

20. A non-transitory machine-readable storage medium comprising instructions that, when executed by one or more processors of a client device, cause the client device to perform operations comprising: determining that a video meeting the criteria is currently available on a video server associated with a messaging client implemented on the client device; responsive to determining that the videos meeting the criteria are currently available on the video server, causing the messaging client on the client device to pre-fetch video sequences matching a profile of a user associated with the messaging client from a recommendation engine, the recommendation engine operable to provide one or more video sequences to a video playback graphical user interface (GUI), the video playback graphical user interface automatically playing back the videos in the sequence; Determining that the video meeting the criterion is at a first position in the video sequence; as well as In response to determining that the video meeting the criteria is at the first position in the video sequence, a notification is presented by the messaging client indicating the availability of the video on the video playback GUI.