コード例 #1
0
ファイル: fbfeed2wiki.py プロジェクト: 1mentat/fbgroupviz
def feed2wiki(cj,doc):
    ididx = []
    for post in doc['data']:
        postdoc = unicode('')
        postdoc += wiki.headingthreadmode
        postdoc += wiki.heading2
        try:
            postdoc += post['from']['name']
        except KeyError:
            postdoc += 'Unknown'
        postdoc += wiki.heading2 + '\n\n'

        try:
            postdoc += post['message'] + '\n\n'
        except KeyError:
            postdoc += 'No message\n\n'
        try:
            postdoc += 'Link: [[' + post['link'] + ']]\n\n'
        except KeyError:
            pass
        try:
            postdoc += '{{' + post['picture'] + ' }}\n\n'
        except KeyError:
            pass

        try:
            postdoc += 'Likes : '
            if len(post['likes']['data']) < post['likes']['count']:
                likeurl = settings.fb_graph_url + '/' + post['id'] + '/' + 'likes' + '?' + settings.fb_oauth_token + '&' + 'limit={0}'.format(post['likes']['count'])
                likereq = json.loads(urllib2.urlopen(likeurl).read())
                for like in likereq['data']:
                    postdoc += like['name'] + ', '
            else:
                for like in post['likes']['data']:
                    postdoc += like['name'] + ', '
            postdoc += '\n\n'
        except KeyError:
            postdoc += 'None\n\n'

        try:
            if len(post['comments']['data']) < post['comments']['count']:
                commenturl = settings.fb_graph_url + '/' + post['id'] + '/' + 'comments' + '?' + settings.fb_oauth_token + '&' + 'limit={0}'.format(post['comments']['count'])
                commentreq = json.loads(urllib2.urlopen(commenturl).read())
                for comment in commentreq['data']:
                    postdoc += wiki.heading3 + comment['from']['name'] + wiki.heading3 + '\n\n'
                    postdoc += comment['message'] + '\n\n'
            else:
                for comment in post['comments']['data']:
                    postdoc += wiki.heading3 + comment['from']['name'] + wiki.heading3 + '\n\n'
                    postdoc += comment['message'] + '\n\n'
        except KeyError:
            postdoc += 'No Comments\n\n'

        wiki.changepage(cj,settings.wiki_prefix + post['id'],postdoc.encode('utf-8'))

        ididx.append(post['id'])
    return ididx
コード例 #2
0
ファイル: fbfeed2wiki.py プロジェクト: 1mentat/fbgroupviz
parser = argparse.ArgumentParser(description='Options')
parser.add_argument('-p', '--pages', dest='feed_pages', type=int, default=settings.feed_pages)

args = parser.parse_args()

print 'Mirroring {0} pages'.format(args.feed_pages)

cj = wiki.login(settings.wiki_user,settings.wiki_pw)

next = feedurl
pagecount = 0

ididx = []

while True:
    #this probably doesn't handle next returning 'data' that's empty well
    doc = json.loads(urllib2.urlopen(next).read())
    next = doc['paging']['next']
    ididx.extend(feed2wiki(cj,doc))
    pagecount += 1
    print 'Processed page {0}'.format(pagecount)
    if pagecount >= args.feed_pages:
        break

indexdoc = unicode('')
indexdoc += wiki.headingthreadmode
indexdoc += wiki.heading2 + settings.wiki_prefix + ' Index' + wiki.heading2 + '\n\n'
for id in ididx:
    indexdoc += '[[' + settings.wiki_prefix + id + ']]\n\n'
wiki.changepage(cj,settings.wiki_prefix,indexdoc.encode('utf-8'))