• Stars
    star
    218
  • Rank 181,805 (Top 4 %)
  • Language
    Python
  • License
    Apache License 2.0
  • Created almost 12 years ago
  • Updated 8 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Tool for downloading sets and photos from Flickr

Flickr Download

Introduction

pre-commit test Coverage Status

Simple script to download a Flickr set.

To use it you need to get your own Flickr API key here: https://www.flickr.com/services/api/misc.api_keys.html

flickr_download -k <api key> -s <api secret> -d <set id>

It can also list the public set ids for a given user:

flickr_download -k <api key> -s <api secret> -l <user name>

The user name can be passed in as a URL, email, or user name.

Get a public set using the title and id to name the downloaded files:

flickr_download -k <api key> -s <api secret> -d <set id> -n title_and_id

Download private or restricted photos by authorizing against the users account. (see below)

Installation

To install this script use the Python pip utility bundled with your Python distribution:

> pip install flickr_download

API key

Get your Flickr API key.

You can also set your API key and secret in ~/.flickr_download:

api_key: my_key
api_secret: my_secret

User Authentication Support

The script also allows you to authenticate as a user account. That way you can download sets that are private and public photos that are restricted. To use this mode, initialize the authorization by running the script with the t parameter to authorize the app.

flickr_download -k <api key> -s <api secret> -t

This will save ~/.flickr_token containing the authorization. Subsequent calls with -t will use the stored token. For example using

flickr_download -k <api key> -s <api secret> -l <USER>

with USER set to your own username, will only fetch your publicly available sets, whereas adding -t

flickr_download -k <api key> -s <api secret> -l <USER> -t

will fetch all your sets including private restricted sets.

Note, if you want to log in as another user delete ~/.flickr_token.

Downloading a lot of photos

If you are downloading a lot of photos, two parameters will speed things up. Especially on errors (which the Flickr API seems to like to throw regularly). Those parameters are:

  • --cache <cache_file> – this will cache API responses in the given file, and will thus speed up repeated calls to the same API
  • --metadata_store - this will store metadata information for the set downloads in .metadata.db, which makes it faster to skip already downloaded files.

So to download all the sets for a given user XXX, including private photos and sets, do:

> flickr_download.py -api_key KEY -api_secret SECRET --user_auth --cache api_cache --metadata_store --download_user XXX

Optional arguments

-h, --help            show this help message and exit
-k API_KEY, --api_key API_KEY
                        Flickr API key
-s API_SECRET, --api_secret API_SECRET
                        Flickr API secret
-t, --user_auth       Enable user authentication
-l USER, --list USER  List photosets for a user
-d SET_ID, --download SET_ID
                        Download the given set
-p USERNAME, --download_user_photos USERNAME
                        Download all photos for a given user
-u USERNAME, --download_user USERNAME
                        Download all sets for a given user
-i PHOTO_ID, --download_photo PHOTO_ID
                        Download one specific photo
-q SIZE_LABEL, --quality SIZE_LABEL
                        Quality of the picture. Examples: Original/Large/Medium/Small. By default the largest available is used.
-n NAMING_MODE, --naming NAMING_MODE
                        Photo naming mode. Use --list_naming to get a list of possible NAMING_MODEs
-m, --list_naming     List naming modes
-o, --skip_download   Skip the actual download of the photo
-j, --save_json       Save photo info like description and tags, one .json file per photo
-c CACHE_FILE, --cache CACHE_FILE
                        Cache results in CACHE_FILE (speed things up on large downloads in particular)
--metadata_store      Store information about downloads in a metadata file (helps with retrying downloads)
-v, --verbose         Turns on verbose logging
--version             Lists the version of the tool