async def list_account_blog(context, account, limit=10, observer=None, last_post=None): """Get a blog feed (posts and reblogs from the specified account)""" db = context['db'] post_ids = await pids_by_blog( db, valid_account(account), *split_url(last_post, allow_empty=True), valid_limit(limit, 50)) return await posts_by_id(db, post_ids, observer)
async def list_account_posts(context, account, limit=10, observer=None, last_post=None): """Get an account's posts and comments""" db = context['db'] start_author, start_permlink = split_url(last_post, allow_empty=True) assert not start_author or (start_author == account) post_ids = await pids_by_comments( db, valid_account(account), valid_permlink(start_permlink), valid_limit(limit, 50)) return await posts_by_id(db, post_ids, observer)
async def list_account_feed(context, account, limit=10, observer=None, last_post=None): """Get all posts (blogs and resteems) from `account`'s follows.""" db = context['db'] ids_with_reblogs = await pids_by_feed_with_reblog( context['db'], valid_account(account), *split_url(last_post, allow_empty=True), valid_limit(limit, 50)) reblog_by = dict(ids_with_reblogs) post_ids = [r[0] for r in ids_with_reblogs] posts = await posts_by_id(db, post_ids, observer) # Merge reblogged_by data into result set for post in posts: rby = set(reblog_by[post['post_id']].split(',')) rby.discard(post['author']) if rby: post['reblogged_by'] = list(rby) return posts