'Caches all images for the given show. Copies them from the show dir if possible, or
downloads them from indexer if they aren\'t in the show dir.
:param show_obj: TVShow object to cache images for'

def fill_cache(self, show_obj):

    logger.log((u'Checking    if    we    need    any    cache    images    for    show    ' + str(show_obj.indexerid)), logger.DEBUG)
    need_images = {self.POSTER: (not self.has_poster(show_obj.indexerid)), self.BANNER: (not self.has_banner(show_obj.indexerid)), self.POSTER_THUMB: (not self.has_poster_thumbnail(show_obj.indexerid)), self.BANNER_THUMB: (not self.has_banner_thumbnail(show_obj.indexerid)), self.FANART: (not self.has_fanart(show_obj.indexerid))}
    if ((not need_images[self.POSTER]) and (not need_images[self.BANNER]) and (not need_images[self.POSTER_THUMB]) and (not need_images[self.BANNER_THUMB]) and (not need_images[self.FANART])):
        logger.log(u'No    new    cache    images    needed,    not    retrieving    new    ones', logger.DEBUG)
        return
    if (need_images[self.POSTER] or need_images[self.BANNER] or need_images[self.FANART]):
        try:
            for cur_provider in sickbeard.metadata_provider_dict.values():
                logger.log(((u'Checking    if    we    can    use    the    show    image    from    the    ' + cur_provider.name) + u'    metadata'), logger.DEBUG)
                if ek(os.path.isfile, cur_provider.get_poster_path(show_obj)):
                    cur_file_name = ek(os.path.abspath, cur_provider.get_poster_path(show_obj))
                    cur_file_type = self.which_type(cur_file_name)
                    if (cur_file_type is None):
                        logger.log((u'Unable    to    retrieve    image    type,    not    using    the    image    from    ' + str(cur_file_name)), logger.WARNING)
                        continue
                    logger.log((((((u'Checking    if    image    ' + cur_file_name) + u'    (type    ') + str(cur_file_type)) + u'    needs    metadata:    ') + str(need_images[cur_file_type])), logger.DEBUG)
                    if ((cur_file_type in need_images) and need_images[cur_file_type]):
                        logger.log((((u"Found    an    image    in    the    show    dir    that    doesn't    exist    in    the    cache,    caching    it:    " + cur_file_name) + u',    type    ') + str(cur_file_type)), logger.DEBUG)
                        self._cache_image_from_file(cur_file_name, cur_file_type, show_obj.indexerid)
                        need_images[cur_file_type] = False
        except ShowDirectoryNotFoundException:
            logger.log(u"Unable    to    search    for    images    in    show    dir    because    it    doesn't    exist", logger.WARNING)
    for cur_image_type in [self.POSTER, self.BANNER, self.POSTER_THUMB, self.BANNER_THUMB, self.FANART]:
        logger.log((((u'Seeing    if    we    still    need    an    image    of    type    ' + str(cur_image_type)) + u':    ') + str(need_images[cur_image_type])), logger.DEBUG)
        if ((cur_image_type in need_images) and need_images[cur_image_type]):
            self._cache_image_from_indexer(show_obj, cur_image_type)
    logger.log(u'Done    cache    check')
