from __future__ import print_function from datetime import datetime from collect_social.facebook.utils import get_api, setup_db, update_user import time def update_post(db, post_data, page_id): posts = db['post'] post = posts.find_one(post_id=post_data['id']) if not post: fields = [ 'caption', 'created_time', 'description', 'message', 'permalink_url', 'picture', 'link', 'type', 'story', 'status_type' ] data = { 'post_id': post_data['id'], 'page_id': page_id } author_id = None if 'admin_creator' in post_data and 'id' in post_data['admin_creator']: data['author_id'] = post_data['admin_creator']['id'] author_id = data['author_id'] update_user(db, post_data['admin_creator']) if 'from' in post_data and 'id' in post_data['from']: data['author_id'] = post_data['from']['id'] author_id = data['author_id'] update_user(db, post_data['from']) if 'name' in post_data and post_data['name']: data['link_name'] = post_data['name'] if 'to' in post_data: for user in post_data['to']: update_user(db, user) for f in fields: if f in post_data: data[f] = post_data[f] posts.insert(data, ensure=True) def get_posts(graph, db, page_id): limit = 20 kwargs = { 'path': '/' + str(page_id) + '/posts', 'limit': limit, 'page': True } post_data_pages = graph.get(**kwargs) for post_data in post_data_pages: posts_data = post_data['data'] for post in posts_data: update_post(db, post, page_id) print('Updated 100 posts') def run(app_id, app_secret, connection_string, page_ids): db = setup_db(connection_string) graph = get_api(app_id, app_secret) for page_id in page_ids: get_posts(graph, db, page_id)