def METHOD_NAME(self, url=None, local_filename=None):
    """
    Returns the local file path where to save a remote image (at URL url).
    By default this is os.path.join(self.target_folder, self.get_local_filename(url)).
    Subclasses are discouraged from overriding this method, override get_local_filename()
    instead so that downloaded files are kept under the downloader's target_folder.
    :param url: the URL of the image
    :param local_filename: what local filename to use instead of extracting it from the URL.
    Pass None to use self.get_local_filename(url)
    :return: the full local path, under the current target_folder
    """
    if url is None and local_filename is None:
        raise ValueError("One of url or local_filename must be specified")
    if self.target_folder is None:
        raise Exception("update_download_folder was not called before downloading")
    filename = local_filename if local_filename else self.get_local_filename(url)
    return os.path.join(self.target_folder, filename)