IP Library Granted Patent US 12,231,708
Granted Patent B2
US 12,231,708 · App. 17/499,715 · Granted Feb 18, 2025

Systems and methods for sequencing a playlist of media items

Inventors: Paul Lamere (Cape Elizabeth, ME); Christopher James Ciollaro (Boston, MA); Chang Min Jeon (Portland, OR); Peter Martin Deglopper (Somerville, MA); James Faulkner Kirk (Somerville, MA); Adam Latour Piel (Somerville, MA)
Assignee: Spotify AB
H04N21/26258H04N21/2393H04N21/454
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 12,231,708
App. No.
17/499,715
Granted
Feb 18, 2025
Kind
B2
Abstract

A server system receives a request to generate a playlist. The playlist includes a sequence of media items. The server system receives a plurality of constraints that define disqualification criteria for excluding media items from a respective slot in the sequence of media items. The plurality of constraints for the respective slot in the sequence of media items includes at least one constraint that is based on already-populated slots in the sequence of media items. The server system generates the playlist by sequentially populating each respective slot in the sequence of media items, including selecting, for the respective slot, a respective media item that meets the plurality of constraints for the respective slot in the sequence of media items. The server system provides the playlist to a user of the media providing service.

Claims (85)

1. A method, comprising:

at a server system associated with a media providing service, the server system having one or more processors and memory storing one or more programs including instructions executable by the one or more processors:

receiving a request to generate a playlist, the playlist including a sequence of media items;

receiving a plurality of constraints that define disqualification criteria for excluding media items from a respective slot in the sequence of media items, wherein:

the plurality of constraints for the respective slot in the sequence of media items includes at least one constraint that is based on an order of already-populated media items in the respective slots in the sequence of media items; and

the plurality of constraints is a subset, less than all, of a larger set of constraints for the respective slot in the sequence of media items, the larger set of constraints including multiple constraints that are independent of the already-populated media items in the respective slots in the sequence of media items;

generating the playlist by sequentially populating each respective slot in the sequence of media items, including, for a respective slot:

for each respective candidate media item of a plurality of candidate media items:

generating a respective score for each of a plurality of objectives; and

aggregating the respective scores for the plurality of objectives to produce an overall score for the respective candidate media item;

determining that none of the plurality of candidate media items meets the larger set of constraints;

in accordance with the determination that none of the plurality of candidate media items meets the larger set of constraints:

relaxing, for the respective slot, the larger set of constraints to produce the plurality of constraints that is the subset, less than all, of the larger set of constraints; and

selecting, for the respective slot, a respective media item from the plurality of candidate media items that meets the plurality of constraints for the respective slot in the sequence of media items and based on the overall score for each candidate media item of the plurality of candidate media items; and

providing the playlist to a user of the media providing service.

2. The method of claim 1 , wherein:

each constraint of the larger set of constraints for the respective slot in the sequence of media items has a respective priority; and

relaxing the larger set of constraints to produce the plurality of constraints that is the subset, less than all, of the larger set of constraints includes relaxing, based on the respective priorities, the larger set of constraints.

3. The method of claim 2 , wherein:

the method further includes, prior to generating the playlist by sequentially populating each respective slot in the sequence of media items, generating a table that includes information indicating the priority at which each of the plurality of candidate media items is disqualified from each respective slot in the sequence of media items; and

relaxing, based on the respective priorities, the larger set of constraints to produce the plurality of constraints that is the subset, less than all, of the larger set of constraints includes referring to the table.

4. The method of claim 2 , further including:

prior to receiving the request to generate the playlist, receiving an ordered list of the larger set of constraints, wherein the constraints in the ordered list of the larger set of constraints are ordered according to priority.

5. The method of claim 4 , further including:

populating a next respective slot in the sequence of media items, immediately following the respective slot, by applying the larger set of constraints.

6. The method of claim 1 , wherein the plurality of constraints includes at least one constraint that is independent of the already-populated media items in the respective slots in the sequence of media items.

7. The method of claim 6 , further including:

prior to generating the playlist by sequentially populating each respective slot in the sequence of media items, filtering the plurality of candidate media items using the at least one constraint that is independent of the already-populated media items in the respective slots in the sequence of media items to produce a filtered set of candidate media items,

wherein selecting, for each respective slot, a respective media item that meets the plurality of constraints for the respective slot in the sequence of media items includes selecting the respective media item from the filtered set of candidate media items.

8. The method of claim 1 , wherein the plurality of objectives for the sequence of media items includes at least one objective having a corresponding score that is based on already-populated slots in the sequence of media items.

9. The method of claim 1 , wherein the plurality of candidate media items consists of media items that meet the plurality of constraints for the respective slot in the sequence of media items.

10. The method of claim 1 , wherein the operation of selecting, for the respective slot, the respective media item that meets the plurality of constraints for the respective slot in the sequence of media items is performed after producing the overall score for each respective candidate media item of the plurality of candidate media items.

11. The method of claim 1 , wherein:

the plurality of objectives includes a first set of objectives and a second set of objectives; and

aggregating the respective scores for the plurality of objectives to produce an overall score for the respective candidate media item includes:

applying a first ordered weighted average to the respective scores for the first set of objectives, to produce a first combined score for the first set of objectives;

applying a second ordered weighted average to the respective scores for the second set of objectives, to produce a second combined score for the second set of objectives; and

applying a third ordered weighted average to the combined score for the first set of objectives and the combined score for the second set of objectives.

12. The method of claim 1 , wherein the plurality of objectives includes at least one artist-based objective.

13. The method of claim 1 , wherein the plurality of objectives includes at least one listener objective.

14. The method of claim 1 , further comprising:

while providing the playlist to the user of the media providing service:

receiving user feedback with respect to a particular media item in the playlist; and

in response to receiving the user feedback with respect to the particular media item in the playlist, re-generating a remainder of the playlist by sequentially populating each remaining respective slot in the sequence of media items, including selecting, for the respective slot, a respective media item that meets the plurality of constraints for the respective slot in the sequence of media items.

15. The method of claim 1 , wherein:

a first objective of the plurality of objectives is negatively correlated with a second objective of the plurality of objectives; and

the first objective of the plurality of objectives is positively correlated with a third objective of the plurality of objectives, wherein the third objective is distinct from the second objective.

16. A server system associated with a media providing service, comprising:

one or more processors; and

memory storing one or more programs including instructions for:

receiving a request to generate a playlist, the playlist including a sequence of media items;

receiving a plurality of constraints that define disqualification criteria for excluding media items from a respective slot in the sequence of media items, wherein:

the plurality of constraints for the respective slot in the sequence of media items includes at least one constraint that is based on an order of already-populated media items in the respective slots in the sequence of media items; and

the plurality of constraints is a subset, less than all, of a larger set of constraints for the respective slot in the sequence of media items, the larger set of constraints including multiple constraints that are independent of the already-populated media items in the respective slots in the sequence of media items;

generating the playlist by sequentially populating each respective slot in the sequence of media items, including, for a respective slot:

for each respective candidate media item of a plurality of candidate media items:

generating a respective score for each of a plurality of objectives; and

aggregating the respective scores for the plurality of objectives to produce an overall score for the respective candidate media item;

determining that none of the plurality of candidate media items meets the larger set of constraints;

in accordance with the determination that none of the plurality of candidate media items meets the larger set of constraints:

relaxing, for the respective slot, the larger set of constraints to produce the plurality of constraints that is the subset, less than all, of the larger set of constraints; and

selecting, for the respective slot, a respective media item from the plurality of candidate media items that meets the plurality of constraints for the respective slot in the sequence of media items and based on the overall score for each candidate media item of the plurality of candidate media items; and

providing the playlist to a user of the media providing service.

17. The server system of claim 16 , wherein:

each constraint of the larger set of constraints for the respective slot in the sequence of media items has a respective priority; and

relaxing the larger set of constraints to produce the plurality of constraints that is the subset, less than all, of the larger set of constraints includes relaxing, based on the respective priorities, the larger set of constraints.

18. The server system of claim 17 , wherein:

the one or more programs further include instructions for, prior to generating the playlist by sequentially populating each respective slot in the sequence of media items, generating a table that includes information indicating the priority at which each of the plurality of candidate media items is disqualified from each respective slot in the sequence of media items; and

relaxing, based on the respective priorities, the larger set of constraints to produce the plurality of constraints that is the subset, less than all, of the larger set of constraints includes referring to the table.

19. The server system of claim 17 , wherein the one or more programs further include instructions for:

prior to receiving the request to generate the playlist, receiving an ordered list of the larger set of constraints, wherein the constraints in the ordered list of the larger set of constraints are ordered according to priority.

20. A non-transitory computer-readable storage medium storing instructions, which, when executed by a server system associated with a media providing service, cause the server system to perform a set of operations, including:

receiving a request to generate a playlist, the playlist including a sequence of media items;

receiving a plurality of constraints that define disqualification criteria for excluding media items from a respective slot in the sequence of media items, wherein:

the plurality of constraints for the respective slot in the sequence of media items includes at least one constraint that is based on an order of already-populated media items in the respective slots in the sequence of media items; and

the plurality of constraints is a subset, less than all, of a larger set of constraints for the respective slot in the sequence of media items, the larger set of constraints including multiple constraints that are independent of the already-populated media items in the respective slots in the sequence of media items;

generating the playlist by sequentially populating each respective slot in the sequence of media items, including, for a respective slot:

for each respective candidate media item of a plurality of candidate media items:

generating a respective score for each of a plurality of objectives; and

aggregating the respective scores for the plurality of objectives to produce an overall score for the respective candidate media item;

determining that none of the plurality of candidate media items meets the larger set of constraints;

in accordance with the determination that none of the plurality of candidate media items meets the larger set of constraints:

relaxing, for the respective slot, the larger set of constraints to produce the plurality of constraints that is the subset, less than all, of the larger set of constraints; and

selecting, for the respective slot, a respective media item from the plurality of candidate media items that meets the plurality of constraints for the respective slot in the sequence of media items and based on the overall score for each candidate media item of the plurality of candidate media items; and

providing the playlist to a user of the media providing service.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 16, 2021
From: SPARTZ, MARTIN L.; BONANNO, ANTHONY S.; MCPARTLAND, KELLY RENEE
To: MLS ACQ, INC. D/B/A MAX ANALYTICAL TECHNOLOGIES
Reel/Frame 058404/0972 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 21, 2021
From: LAMERE, PAUL; CIOLLARO, CHRISTOPHER JAMES; JEON, CHANG MIN; DEGLOPPER, PETER MARTIN; KIRK, JAMES FAULKNER; PIEL, ADAM LATOUR
To: SPOTIFY AB
Reel/Frame 057864/0132 →
Continuity (1)
Related Publication 20230111456A1 · Apr 13, 2023
References Cited (13)
US 10276170B2 · Gruber · 2019 [cited by examiner]
US 20080021577A1 · Ijichi et al. · 2008 [cited by applicant]
US 20080208775A1 · Vossen et al. · 2008 [cited by applicant]
US 20090222392A1 · Martin · 2009 [cited by examiner]
US 20120123998A1 · Heller et al. · 2012 [cited by applicant]
US 20140074959A1 · Alsina et al. · 2014 [cited by applicant]
US 20140114985A1 · Mok · 2014 [cited by examiner]
US 20140280181A1 · Rodger · 2014 [cited by examiner]
US 20150356447A1 · Lowe · 2015 [cited by examiner]
US 20180189020A1 · Oskarsson · 2018 [cited by examiner]
US 20180189306A1 · Lamere · 2018 [cited by examiner]
US 20200278997A1 · Lamere · 2020 [cited by examiner]
iTunes User Guide, Create a Smart Playlist in iTunes on Mac, Apple Support, macOS. mOJAVE 10.14, Apr. 26, 2021, from https://support.apple.com/en-in/guide/itunes/itns3001/mac, 2 pgs. [cited by applicant]