diff --git a/recommendation_engine.py b/recommendation_engine.py index 98c1b26..fb86f72 100644 --- a/recommendation_engine.py +++ b/recommendation_engine.py @@ -107,15 +107,15 @@ class Engine: ) videos += playlists[:channels['globalKeywords']] playlists = playlists[channels['globalKeywords']:] - # Count products the user has seen + # Count tags for the user count = defaultdict(lambda: 0) for event in user.get('events', []): if event.get('data', {}).get('product'): count[event['data']['product']] += 1 - # For each product in playlist tags, increment score by count + # For each tag in playlist, increment score by count for playlist in playlists: score[playlist['name']] = random.random() - for tag in set(playlist['tags']) & set(count): + for tag in [tag for tag in playlist['tags'] if tag not in sliders]: score[playlist['name']] += count[tag] # Select highest scoring playlists videos += sorted( @@ -164,19 +164,13 @@ class Engine: }, ['id', 'name', 'tags', 'nodename']) if entity.get('tags', []) and entity.get('nodename')] # Get list of storyline names names = list(set([storyline['name'] for storyline in storylines])) - # Get list of items to use in DD - items = [item['id'] for item in self.pandora.find({ - 'conditions': [ - {'key': 'list', 'operator': '==', 'value': 'dau:DD'} - ] - }, ['id'])] # Get all clips annotated with storyline references clips = [clip for clip in self.pandora.find_annotations({ 'conditions': [ {'key': 'layer', 'operator': '==', 'value': 'storylines'} ], 'operator': '&' - }, ['id', 'in', 'out', 'value']) if clip['value'] in names and clip['id'].split('/')[0] in items] + }, ['id', 'in', 'out', 'value']) if clip['value'] in names] # Get list of ids for videos with clips ids = list(set([clip['id'].split('/')[0] for clip in clips])) # Get and cache video data @@ -248,14 +242,6 @@ class Pandora: self.api = ox.API(url) self.api.signin(username=username, password=password) - def find(self, query, keys): - # print('FIND', query, keys) - return self.api.find({ - 'keys': keys, - 'query': query, - 'range': [0, 1000000] - })['data']['items'] - def find_annotations(self, query, keys): # print('FIND ANNOTATIONS', query, keys) return self.api.findAnnotations({