This is a Python script that can download a complete history of georeferenced flickr photo metadata. It uses the official flickr API, and saves the data into a PostgreSQL/PostGIS database.
The script will download all photos until its starting time, and keep track of already downloaded time periods in a cache file (default location ~/.cache/flickrhistory.yml). Upon restart it will catch up until the new starting time.
Flickrhistory makes use of multiple threads and can use multiple API keys (something that most likely disagrees with flickr’s T&C, use feature at your own risk).
If you use flickrhistory for scientific research, please cite it in your publication:
Fink, C. (2020): flickrhistory: a Python tool to download a complete flickr timeline. doi:10.5281/zenodo.6566196.
The script is written in Python 3 and depends on the Python modules blessed, GeoAlchemy2, psycopg2, PyYaml, Requests and SQLAlchemy.
pip install flickrhistoryCopy the example configuration file flickrhistory.yml.example to a suitable location, depending on your operating system:
- on Linux systems:
- system-wide configuration:
/etc/flickrhistory.yml - per-user configuration:
~/.config/flickrhistory.ymlOR${XDG_CONFIG_HOME}/flickrhistory.yml
- system-wide configuration:
- on MacOS systems:
- per-user configuration:
${XDG_CONFIG_HOME}/flickrhistory.yml
- per-user configuration:
- on Microsoft Windows systems:
- per-user configuration:
%APPDATA%\flickrhistory.yml
- per-user configuration:
Adapt the configuration:
- Configure a PostgreSQL connection string (
connection_string), pointing to an existing database (with the PostGIS extension enabled). - Configure one or more API access keys to the flickr API
flickr_api_keys). Using more than one API key in all likelihood violates the Terms and Conditions of the Flickr API (don’t do it!).
If you have a cache file from a previous installation in which already downloaded time periods are saved, copy it to ${XDG_CACHE_HOME}/flickrhistory.yml or %LOCALAPPDATA%/flickrhistory.yml on Linux or MacOS, and Microsoft Windows, respectively.
python -m flickrhistoryImport the flickrhistory module. Instantiate a FlickrHistoryDownloader, and call its download() method.
import flickrhistory
downloader = flickrhistory.FlickrHistoryDownloader()
downloader.download()