Example #1
0
        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}")
Example #2
0
        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)
Example #3
0
 def merge_scraped_comments(self, scraped, activity):
     comments = json_loads(scraped)
     gr_source.merge_by_id(activity['object'].setdefault('replies', {}),
                           'items', comments)
     return comments
Example #4
0
 def merge_scraped_reactions(self, scraped, activity):
     likes = json_loads(scraped)
     gr_source.merge_by_id(activity['object'], 'tags', likes)
     return likes
Example #5
0
 def merge_scraped_reactions(self, scraped, activity):
     gr_source.merge_by_id(activity['object'], 'tags', [self.like])
     return [self.like]