def update_activity(): id = new_activity.get('id') if not id: self.error('Scrape error: post missing id') activity = Activity.get_by_id(id) if activity: # we already have this activity! merge in any new comments and likes merged_activity = copy.deepcopy(new_activity) merged_obj = merged_activity.setdefault('object', {}) existing_activity = json_loads(activity.activity_json) existing_obj = existing_activity.get('object', {}) replies = merged_obj.setdefault('replies', {}) gr_source.merge_by_id( replies, 'items', existing_obj.get('replies', {}).get('items', [])) replies['totalItems'] = len(replies.get('items', [])) gr_source.merge_by_id(merged_obj, 'tags', existing_obj.get('tags', [])) activity.activity_json = json_dumps(merged_activity) else: activity = Activity(id=id, source=source.key, html=request.get_data(as_text=True), activity_json=json_dumps(new_activity)) # store and return the activity activity.put() logger.info(f"Stored activity {id}")
def update_activity(): id = new_activity.get('id') if not id: self.abort(400, 'Scraped post missing id') activity = Activity.get_by_id(id) if activity: # we already have this activity! merge in any new comments. merged_activity = copy.deepcopy(new_activity) existing_activity = json_loads(activity.activity_json) # TODO: extract out merging replies replies = merged_activity.setdefault('object', {}).setdefault( 'replies', {}) gr_source.merge_by_id( replies, 'items', existing_activity.get('object', {}).get('replies', {}).get('items', [])) replies['totalItems'] = len(replies.get('items', [])) # TODO: merge tags too activity.activity_json = json_dumps(merged_activity) else: activity = Activity(id=id, source=source.key, html=self.request.text, activity_json=json_dumps(new_activity)) # store and return the activity activity.put() logging.info(f"Stored activity {id}") self.output(new_activity)
def merge_scraped_comments(self, scraped, activity): comments = json_loads(scraped) gr_source.merge_by_id(activity['object'].setdefault('replies', {}), 'items', comments) return comments
def merge_scraped_reactions(self, scraped, activity): likes = json_loads(scraped) gr_source.merge_by_id(activity['object'], 'tags', likes) return likes
def merge_scraped_reactions(self, scraped, activity): gr_source.merge_by_id(activity['object'], 'tags', [self.like]) return [self.like]