Scrapy: загрузка изображений в динамическую папку для каждого элемента и обрезка этих изображений - PullRequest
0 голосов
/ 30 октября 2018

Я пытаюсь найти способ загрузки изображений в отдельные папки для каждого элемента и задать имя папки на основе поля элемента.

Я нашел решение для динамических папок, и оно отлично работает здесь: Как загрузить скрап-изображения в динамическую папку? 1 Решение предоставлено midodesign

def item_completed(self, results, item, info):

    for result in [x for ok, x in results if ok]:
        path = result['path']
        slug = slugify(item['designer'])


        settings = get_project_settings()
        storage = settings.get('IMAGES_STORE')

        target_path = os.path.join(storage, slug, os.path.basename(path))
        path = os.path.join(storage, path)

        # If path doesn't exist, it will be created
        if not os.path.exists(os.path.join(storage, slug)):
            os.makedirs(os.path.join(storage, slug))

        shutil.move(path, target_path)

    if self.IMAGES_RESULT_FIELD in item.fields:
        item[self.IMAGES_RESULT_FIELD] = [x for ok, x in results if ok]
    return item

Я также нашел код для обрезки загруженных изображений здесь

def item_completed(self, results, item, info):
    image_paths = [x['path'] for ok, x in results if ok]
    if not image_paths:
        raise DropItem("Item contains no images")

    if item['refer'] == 'someurl.com' :
        for a in image_paths:
            o_img = os.path.join(self.store.basedir,a)

            if os.path.isfile(o_img):
                image = Image.open(o_img)
                x,y = image.size
                if(y>120):
                    image = image.crop((0,0,x,y-35))
                    image.save(o_img,'JPEG');

    return item

Проблема, которую я имею, состоит в том, чтобы смешать два примера в одну функцию, которая сохраняет изображения в динамически создаваемые папки, а затем обрезает изображения внутри этой папки.

Я пробовал несколько решений, но не могу заставить их работать вместе.

Спасибо!

...