Basically AddressBooker takes a POST of contacts data in JSON form, and does stuff with it, where "stuff" is currently limited to merging it into your Google Contacts. (GMail, Android, etc) This was my experiment in learning GData, AuthSub, and App Engine a bit more.
Anyway, I then wanted to get my Facebook Phonebook exported to my Google Contacts, so it'd sync to my Android phone. I didn't see an export option in Facebook (maybe I missed it?), so I wrote a little GreaseMonkey script instead to automate the whole process:
http://bradfitz.com/greasemonkey/facebook_phonebook_export.user.js
If you have Firefox and GreaseMonkey, then click the above link and it'll ask if you want to install it. Install it, then go to your Facebook Phonebook
Enjoy!
(And keep in mind I barely know browser stuff or Greasemonkey or Python or App Engine or GData, so patches welcome!... brad@danga.com, or Github)
Update 2009-05-09: Updated the JavaScript to work with Facebook's new layout.
Update 2010-06-06: Facebook's markup changed again, but I'm too lazy to go update the script. Patches welcome.
December 1 2008, 18:38:57 UTC 11 years ago
Hmm, does it do any sort of search-and-merge with the Google contacts, or does it always create new ones?
December 1 2008, 19:02:01 UTC 11 years ago
Traceback (most recent call last): File "/base/python_lib/versions/1/google/appengine/ext/webapp/__init__.py", line 499, in __call__ handler.get(*groups) File "/base/data/home/apps/addressbooker/1.329670894575284061/addressbooker.py", line 345, in get self.ProcessMerge(method='GET') File "/base/data/home/apps/addressbooker/1.329670894575284061/addressbooker.py", line 431, in ProcessMerge feed = client.Get(full_feed_url, converter=gdata.contacts.ContactsFeedFromString) File "/base/data/home/apps/addressbooker/1.329670894575284061/gdata/service.py", line 700, in Get headers=extra_headers) File "/base/data/home/apps/addressbooker/1.329670894575284061/atom/service.py", line 176, in request data=data, headers=all_headers) File "/base/data/home/apps/addressbooker/1.329670894575284061/gdata/auth.py", line 456, in perform_request return http_client.request(operation, url, data=data, headers=headers) File "/base/data/home/apps/addressbooker/1.329670894575284061/gdata/alt/appengine.py", line 144, in request method=method, headers=all_headers, follow_redirects=False)) File "/base/python_lib/versions/1/google/appengine/api/urlfetch.py", line 278, in fetch raise ResponseTooLargeError(result) ResponseTooLargeErrorDecember 1 2008, 19:08:03 UTC 11 years ago
Okay, I'll have to fix that next time I get some free time.
Great idea!
December 11 2008, 22:36:19 UTC 11 years ago
Anyway, if you feel inspired to fix this, it would be much appreciated...
Too many contacts
Anonymous
December 13 2008, 23:01:21 UTC 11 years ago
ditto
Anonymous
December 31 2008, 18:49:23 UTC 11 years ago
Comments for this post were locked by the author