diff --git a/recommendation_engine.py b/recommendation_engine.py index fb86f72..8608dd1 100644 --- a/recommendation_engine.py +++ b/recommendation_engine.py @@ -164,13 +164,19 @@ 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] + }, ['id', 'in', 'out', 'value']) if clip['value'] in names and clip['id'].split('/')[0] in items] # Get list of ids for videos with clips ids = list(set([clip['id'].split('/')[0] for clip in clips])) # Get and cache video data @@ -242,6 +248,14 @@ 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({