Skip to content

Instantly share code, notes, and snippets.

@Visgean
Created April 24, 2014 15:04
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Visgean/11258066 to your computer and use it in GitHub Desktop.
Save Visgean/11258066 to your computer and use it in GitHub Desktop.
Download all the sweet debatovani.cz photos.
import facebook
import os
import sh
from slugify import slugify
oauth_access_token = ''
root = '/debatovani.cz/albums'
graph = facebook.GraphAPI(oauth_access_token)
def process_pages(root_url, after=None):
data = graph.get_object(root, after=after) if after else graph.get_object(root)
albums = data['data']
if data.has_key('paging') and data['paging']['cursors'].has_key('after'):
albums += process_pages(root_url, after=data['paging']['cursors']['after'])
return albums
def process_album(album, after=None):
album_url = '{album_id}/photos'.format(album_id=album['id'])
fields = ['images']
data = graph.get_object(album_url, after=after, fields = fields) if after else graph.get_object(album_url, fields = fields)
image_blobs = data['data']
if data.has_key('paging') and data['paging']['cursors'].has_key('after'):
image_blobs += process_album(album, after=data['paging']['cursors']['after'])
return image_blobs
def download_images(album_name, images):
folder_name = slugify(album_name)
if not os.path.isdir(folder_name):
os.mkdir(folder_name)
with open('{f}/wget_list'.format(f=folder_name), 'w') as ffile:
ffile.write('\n'.join(images))
print 'Downloading', album_name
sh.wget(i='{f}/wget_list'.format(f=folder_name), directory_prefix=folder_name)
all_albums = process_pages(root)
for album in all_albums:
images = [blob['images'][0]['source'] for blob in process_album(album) if blob]
download_images(album_name=album['name'], images=images)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment