def check_for_work(self): if self.currently_fetching: defer.returnValue(None) self.currently_fetching = True while metadata_db[self.keyify('d', 'queue')]: obj_id = metadata_db[self.keyify('d', 'queue')][0] metadata_db[self.keyify('d', 'queue')] = metadata_db[self.keyify('d', 'queue')][1:] if self.keyify('m', obj_id) in metadata_db: log.msg('%s Skipping %s' % (self.id, obj_id)) continue log.msg('Fetching %s info for %s' % (self.id, obj_id)) # timeout of 10minutes metadata_db[self.keyify('m', obj_id)] = yield self.fetch_metadata(obj_id) metadata_db[self.keyify('d', 'items')] = metadata_db.get(self.keyify('d', 'items'), []) + [obj_id] metadata_db.sync() log.msg('Fetched %s info for %s' % (self.id, obj_id)) self.currently_fetching = False
def get_obj(self, obj_id): result = metadata_db.get(self.keyify('m', obj_id), {}) result['href'] = self.get_url(obj_id) if result.get('cover', None): result['cover'] = self.get_cover_url(result['cover']) return result