# coding: utf-8 """ Filtering functions to handle images. This includes functions to download images. """ from __future__ import absolute_import, print_function, unicode_literals import logging import os from flatisfy.filters.cache import ImageCache LOGGER = logging.getLogger(__name__) def download_images(flats_list, config): """ Download images for all flats in the list, to serve them locally. :param flats_list: A list of flats dicts. :param config: A config dict. """ photo_cache = ImageCache( storage_dir=os.path.join(config["data_directory"], "images") ) flats_list_length = len(flats_list) for i, flat in enumerate(flats_list): LOGGER.info( "Downloading photos for flat %d/%d: %s.", i + 1, flats_list_length, flat["id"], ) for photo in flat["photos"]: # Download photo image = photo_cache.get(photo["url"]) # And store the local image # Only add it if fetching was successful if image: photo["local"] = photo_cache.compute_filename(photo["url"])