-
-
Save yuzawa-san/9011184 to your computer and use it in GitHub Desktop.
""" | |
fbfeed2csv: a tool to download all posts from a user/group/page's facebook feed to a csv file | |
yuzawa-san | |
https://github.com/yuzawa-san | |
""" | |
import json | |
import urllib2 | |
import time | |
import csv | |
import re | |
import argparse | |
def loadPage(url): | |
# delay | |
time.sleep(1) | |
# download | |
response = urllib2.urlopen(url) | |
content = response.read() | |
payload = '' | |
print "DOWNLOAD!" | |
try: | |
payload = json.loads(content) | |
except: | |
print "JSON decoding failed!" | |
if 'data' in payload: | |
out = [] | |
for post in payload['data']: | |
if 'message' in post: | |
# make timestamp pretty | |
timestamp = post['created_time'] | |
timestamp = re.sub(r'\+\d+$', '', timestamp) | |
timestamp = timestamp.replace('T',' ') | |
out.append({ | |
'author': post['from']['name'].encode('ascii', 'ignore'), | |
'timestamp': timestamp, | |
'message': post['message'].encode('ascii', 'ignore')}) | |
out2 = [] | |
if 'paging' in payload: | |
out2 = loadPage(payload['paging']['next']) | |
return out + out2 | |
return [] | |
# entry point: | |
# get args | |
parser = argparse.ArgumentParser() | |
parser.add_argument('id', help='ID of Graph API resource') | |
parser.add_argument('-o', '--out', default="fbdump.csv", help='Output file') | |
parser.add_argument('-t', '--token', help='Authentication token') | |
args = parser.parse_args() | |
try: | |
out = loadPage("https://graph.facebook.com/%s/feed?fields=from,message,created_time&limit=1000&access_token=%s" % (args.id, args.token)) | |
# write output to file | |
f = open(args.out,'wb') | |
w = csv.DictWriter(f,['author','timestamp','message']) | |
w.writerows(out) | |
f.close() | |
except urllib2.HTTPError as e: | |
print "Download failed:",e | |
error_message = e.read() | |
print error_message | |
except KeyboardInterrupt: | |
print "Canceled!" |
@AlfKatz2
Without having looked at the actual code, that seems like a Python 3 error. The above code was written for Python 2 whereas you were probably trying to run it using a Python 3 interpreter. There are differences between print
in 2 and print
in 3.
Thanks, but how to separate one post to others using the line?
i am looking for a code to make an moderator off an abounded Facebook group with no Admin. We can't post anything. The other moderators are not active at all.
Could you give more detailed information about how to use it?
Am I wrong, with the April 4th 2018 changes on graph API , this ain't working anymore? As groups API is blocked, at least without a "Reviewed App"
This should not work anymore because every apps need to be reviewed before being able to retrieve posts, which is very annoying.
Has anyone got this to work? I go to command prompt and type in the path to the python interpreter followed by the path and name of the python script fbfeedcsv.py and I get a message
File "C\data\fbfeedcsv.py" line 23
Print "Download!"
Syntax error: Missing parentheses in call to 'print'
So is there an error in the script? Since nobody has responded to previous requests for help I'm not expecting too much but if someone could give some advice it would be much appreciated. Maybe if I were a Python expert it would be perfectly clear but I'm not and looking at the manuals it would be a daunting prospect to try and learn enough to figure it out.
Thanks
Alf