Skip to content

Commit

Permalink
[AUD-1451] Add new playlist trending strategy (#2889)
Browse files Browse the repository at this point in the history
* [AUD-1451] Add new playlist trending strategy

* Fix lint

* Fix lint
  • Loading branch information
raymondjacobson committed Apr 9, 2022
1 parent a52c76a commit ef27aad
Show file tree
Hide file tree
Showing 4 changed files with 42 additions and 2 deletions.
22 changes: 20 additions & 2 deletions discovery-provider/src/queries/get_trending_playlists.py
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,10 @@
)
from src.tasks.generate_trending import time_delta_map
from src.trending_strategies.trending_strategy_factory import DEFAULT_TRENDING_VERSIONS
from src.trending_strategies.trending_type_and_version import TrendingType
from src.trending_strategies.trending_type_and_version import (
TrendingType,
TrendingVersion,
)
from src.utils.db_session import get_db_read_replica
from src.utils.helpers import decode_string_id
from src.utils.redis_cache import get_trending_cache_key, use_redis_cache
Expand Down Expand Up @@ -215,7 +218,22 @@ def wrapped():
for playlist in playlists:
playlist["tracks"] = playlist_tracks_map.get(playlist["playlist_id"], [])

return (playlists, playlist_ids)
results = []
for playlist in playlists:
# For the BDNxn strategy, filter out playlists with < 3 tracks from other users
if strategy.version == TrendingVersion.BDNxn:
playlist_owner_id = playlist["playlist_owner_id"]
track_owner_ids = list(
filter(
lambda owner_id: owner_id != playlist_owner_id,
map(lambda track: track["owner_id"], playlist["tracks"]),
)
)
if len(track_owner_ids) < 3:
continue
results.append(playlist)

return (results, list(map(lambda playlist: playlist["playlist_id"], results)))

return wrapped

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
from src.trending_strategies.base_trending_strategy import BaseTrendingStrategy
from src.trending_strategies.EJ57D_trending_tracks_strategy import z
from src.trending_strategies.trending_type_and_version import (
TrendingType,
TrendingVersion,
)


class TrendingPlaylistsStrategyBDNxn(BaseTrendingStrategy):
def __init__(self):
super().__init__(TrendingType.PLAYLISTS, TrendingVersion.BDNxn)

def get_track_score(self, time_range, playlist):
return z(time_range, playlist)

def get_score_params(self):
return {"zq": 1000, "xf": True, "pt": 0, "mt": 3}
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
from src.trending_strategies.BDNxn_trending_playlists_strategy import (
TrendingPlaylistsStrategyBDNxn,
)
from src.trending_strategies.EJ57D_trending_playlists_strategy import (
TrendingPlaylistsStrategyEJ57D,
)
Expand Down Expand Up @@ -30,6 +33,7 @@ def __init__(self):
},
TrendingType.PLAYLISTS: {
TrendingVersion.EJ57D: TrendingPlaylistsStrategyEJ57D(),
TrendingVersion.BDNxn: TrendingPlaylistsStrategyBDNxn(),
},
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,3 +9,4 @@ class TrendingType(Enum):

class TrendingVersion(Enum):
EJ57D = "EJ57D"
BDNxn = "BDNxn"

0 comments on commit ef27aad

Please sign in to comment.