IP Library Granted Patent US 10,298,995
Granted Patent B1
US 10,298,995 · App. 15/859,153 · Granted May 21, 2019

Predictive pre-buffering

View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 10,298,995
App. No.
15/859,153
Granted
May 21, 2019
Kind
B1
Abstract

Described herein are systems and methods for predictive pre-buffering of content for a user. Embodiments include a prediction system that can receive trending information from social media sources and other streaming video sources. The prediction system can also receive user viewing history to identify the programs the user has viewed, the genres of the programs the user has viewed, and amount of programming the user consumes. Based on the user's viewing history, the prediction system can identify preferred genres for the user and other preferred content information. Based on the trending programs and the user's preferred genres, the prediction system can predict which of the trending programs that the user may watch. Based on the prediction, the system can pre-buffer some portion of the programs that the system predicted the user may watch in a cache of the device on which the user watches programming.

Claims (95)

1. A system for predictive pre-buffering, the system comprising:

one or more processors; and

a memory comprising instructions that, when executed by the one or more processors, cause the one or more processors to:

receive a plurality of trending program names from at least one social media source, each trending program name corresponding to one of a plurality of trending programs, and each of the plurality of trending programs having an associated popularity score;

receive personal viewing history of a user, the personal viewing history comprising a plurality of viewed program names, the viewed program names generated based on programs previously viewed by the user;

identify a plurality of preferred programs as each corresponding to one of the trending programs calculated to have a combined score above a threshold value, the combined score calculated for each trending program as a function of the associated popularity score and a similarity of the trending program to viewed programs indicated by the viewed program names in the personal viewing history of a user; and

buffer a portion of each of the preferred programs in a cache of a device of the user by allocating, to each of the preferred programs, a respective portion of the buffer that is sized in accordance with the combined score of the trending program corresponding to the preferred program.

2. The system for predictive pre-buffering of claim 1 , wherein the instructions comprise further instructions that, when executed by the one or more processors, cause the one or more processors to:

identify a plurality of genres;

categorize each trending program name in the plurality of trending program names based on a genre of the plurality of genres;

wherein the instructions that cause the one or more processors to identify the one or more preferred programs comprise further instructions that, when executed by the one or more processors, cause the one or more processors to:

identify a preferred genre from the plurality of genres based on the personal viewing history;

identify a first trending program name from the plurality of trending program names categorized as the preferred genre; and

designate the first trending program name as a preferred program.

3. The system for predictive pre-buffering of claim 2 , wherein the instructions that cause the processor to identify the preferred genre comprise further instructions that, when executed by the one or more processors, cause the one or more processors to:

categorize each viewed program name in the plurality of viewed program names based on a genre of the plurality of genres;

calculate a genre score for each genre in the plurality of genres based on a number of viewed program names categorized in that genre; and

select each genre of the plurality of genres having a genre score over a threshold value.

4. The system for predictive pre-buffering of claim 1 , wherein the instructions comprise further instructions that, when executed by the one or more processors, cause the one or more processors to:

obtain a current network load value; and

wherein the instructions to buffer the portion of the one or more preferred programs comprise instructions that, when executed by the one or more processors, cause the one or more processors to:

compare the current network load value to a network load threshold, the compare comprising:

when the current network load value is below the network load threshold, buffer the portion of the one or more preferred programs in the cache of the device of the user; and

when the current network load value is above the network load threshold, perform the compare the current network load value to the network load threshold operation after a predefined period of time.

5. The system for predictive pre-buffering of claim 1 , wherein the instructions comprise further instructions that, when executed by the one or more processors, cause the one or more processors to:

obtain a device status value; and

wherein the instructions to buffer the portion of the one or more preferred programs comprise instructions that, when executed by the one or more processors, cause the one or more processors to:

when the device status value indicates the device is available, buffer the portion of the one or more preferred programs in the cache of the device of the user; and

when the device status value indicates the device is busy, perform the obtain the device status value operation after a predefined period of time.

6. The system for predictive pre-buffering of claim 1 , wherein the combined score is calculated for each trending program in accordance with further instructions that, when executed by the one or more processors, cause the one or more processors to, for each trending program:

receive the popularity score of the trending program from the at least one social media source;

calculate a personal viewing history score for the trending program based on the similarity of the trending program to the viewed programs;

apply a first weight to the popularity score based on past user selections of any of the one or more preferred programs to generate a weighted popularity score;

apply a second weight to the personal viewing history score based on the past user selections of any of the one or more preferred programs to generate a weighted personal viewing history score; and

combine the weighted popularity score and the weighted personal viewing history score to generate the combined score.

7. The system for predictive pre-buffering of claim 1 , wherein the instructions to buffer comprise further instructions that, when executed by the one or more processors, cause the one or more processors to:

rank the one or more preferred programs based on the combined score for each of the one or more preferred programs,

wherein, for each of the preferred programs, the respective portion of the buffer that is sized in accordance with the rank.

8. The system for predictive pre-buffering of claim 7 , wherein the instructions comprise further instructions that, when executed by the one or more processors, cause the one or more processors to:

provide each of the one or more preferred programs having a combined score above a second threshold value as a suggestion to the user.

9. The system for predictive pre-buffering of claim 1 , wherein the instructions comprise further instructions that, when executed by the one or more processors, cause the one or more processors to:

in response to receiving a user selection to save space, limit a number of the one or more preferred programs or limit a size of the portion of each of the one or more preferred programs.

10. The system for predictive pre-buffering of claim 1 , wherein the instructions comprise further instructions that, when executed by the one or more processors, cause the one or more processors to:

in response to receiving a user selection to save time, expand a number of the one or more preferred programs or expand a size of the portion of each of the one or more preferred programs.

11. A non-transitory, computer readable memory device having stored thereon instructions for predictive pre-buffering that, when executed by one or more processors, cause the one or more processors to:

receive a plurality of trending program names from at least one social media source, each trending program name corresponding to one of a plurality of trending programs, and each of the plurality of trending programs having an associated popularity score;

receive personal viewing history of a user, the personal viewing history comprising a plurality of viewed program names, the viewed program names generated based on programs previously viewed by the user;

identify a plurality of preferred programs as each corresponding to one of the trending programs calculated to have a combined score above a threshold value, the combined score calculated for each trending program as a function of the associated popularity score and a similarity of the trending program to viewed programs indicated by the viewed program names in the personal viewing history of a user; and

buffer a portion of each of the preferred programs in a cache of a device of the user by allocating, to each of the preferred programs, a respective portion of the buffer that is sized in accordance with the combined score of the trending program corresponding to the preferred program.

12. The non-transitory, computer readable memory device of claim 11 , wherein the instructions comprise further instructions that, when executed by the one or more processors, cause the one or more processors to:

identify a plurality of genres;

categorize each trending program name in the plurality of trending program names based on a genre of the plurality of genres;

wherein the instructions that cause the one or more processors to identify the one or more preferred programs comprise further instructions that, when executed by the one or more processors, cause the one or more processors to:

identify a preferred genre from the plurality of genres based on the personal viewing history;

identify a first trending program name from the plurality of trending program names categorized as the preferred genre; and

designate the first trending program name as a preferred program.

13. The non-transitory, computer readable memory device of claim 12 , wherein the instructions that cause the processor to identify the preferred genre comprise further instructions that, when executed by the one or more processors, cause the one or more processors to:

categorize each viewed program name in the plurality of viewed program names based on a genre of the plurality of genres;

calculate a genre score for each genre in the plurality of genres based on a number of viewed program names categorized in that genre; and

select each genre of the plurality of genres having a genre score over a threshold value.

14. The non-transitory, computer readable memory device of claim 11 , wherein the instructions comprise further instructions that, when executed by the one or more processors, cause the one or more processors to:

obtain a current network load value;

obtain a device status value; and

wherein the instructions to buffer the portion of the one or more preferred programs comprise instructions that, when executed by the one or more processors, cause the one or more processors to:

compare the current network load value to a network load threshold, the compare comprising:

when the current network load value is below the network load threshold and when the device status value indicates the device is available, buffer the portion of the one or more preferred programs in the cache of the device of the user; and

when the current network load value is above the network load threshold or when the device status value indicates the device is busy, perform the compare the current network load value to the network load threshold operation and the obtain the device status value operation after a predefined period of time.

15. The non-transitory, computer readable memory device of claim 11 , wherein the instructions comprise further instructions that, when executed by the one or more processors, cause the one or more processors to:

receive a popularity score of the trending program from the at least one social media source;

calculate a personal viewing history score for the trending program based on the similarity of the trending program to the viewed programs;

apply a first weight to the popularity score based on past user selections of any of the one or more preferred programs to generate a weighted popularity score;

apply a second weight to the personal viewing history score based on the past user selections of any of the one or more preferred programs to generate a weighted personal viewing history score; and

combine the weighted popularity score and the weighted personal viewing history score to generate the combined score.

16. The non-transitory, computer readable memory device of claim 11 , wherein the instructions comprise further instructions that, when executed by the one or more processors, cause the one or more processors to:

rank the preferred programs based on the combined score for each of the preferred programs; and

for each of the preferred programs, determine the size of the portion to buffer based on the rank of the preferred program.

17. A method for predictive pre-buffering, the method comprising:

receiving a plurality of trending program names from at least one social media source, each trending program name corresponding to one of a plurality of trending programs, and each of the plurality of trending programs having an associated popularity score;

receiving personal viewing history of a user, the personal viewing history comprising a plurality of viewed program names, the viewed program names generated based on programs previously viewed by the user;

identifying a plurality of preferred programs as each corresponding to one of the trending programs calculated to have a combined score above a threshold value, the combined score calculated for each trending program as a function of the associated popularity score and a similarity of the trending program to viewed programs indicated by the viewed program names in the personal viewing history of a user; and

buffering a portion of each of the preferred programs in a cache of a device of the user by allocating, to each of the preferred programs, a respective portion of the buffer that is sized in accordance with the combined score of the trending program corresponding to the preferred program.

18. The method for predictive pre-buffering of claim 17 , the method further comprising:

identifying a plurality of genres;

categorizing each trending program name in the plurality of trending program names based on a genre of the plurality of genres;

wherein the identifying the one or more preferred programs comprises:

identifying a preferred genre from the plurality of genres based on the personal viewing history;

identifying a first trending program name from the plurality of trending program names categorized as the preferred genre; and

designating the first trending program name as a preferred program.

19. The method for predictive pre-buffering of claim 17 , the method further comprising:

obtaining a current network load value;

obtaining a device status value; and

wherein buffering the portion of the one or more preferred programs comprises:

comparing the current network load value to a network load threshold, wherein the comparing comprises:

when the current network load value is below the network load threshold and when the device status value indicates the device is available, buffering the portion of the one or more preferred programs in the cache of the device of the user; and

when the current network load value is above the network load threshold or when the device status value indicates the device is busy, performing the compare the current network load value to the network load threshold operation and the obtaining the device status value operation after a predefined period of time.

Assignments (2)
SECURITY INTEREST Recorded Nov 30, 2021
From: DISH BROADCASTING CORPORATION; DISH NETWORK L.L.C.; DISH TECHNOLOGIES L.L.C.
To: U.S. BANK, NATIONAL ASSOCIATION, AS COLLATERAL AGENT
Reel/Frame 058295/0293 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 30, 2018
From: STUMBO, JOSHUA
To: DISH NETWORK L.L.C.
Reel/Frame 044766/0987 →