Доброго времени суток! Подскажите, пожалуйста, как правильно сделать запись файлов на диск через FOREACH? Как было ======== В результатах парсинга у нас есть поля: link - текущий URL articleId - ID статьи photoId - ID фотографии photoExtension - Расширение фотографии (jpg, jpeg, gif). Сохранение на диск сделано так: File name: Код: [%IF p1.link.match('\.(jpe?g|gif)$') and p1.articleId>0;"site1/" _ p1.articleId _ "/img/" _ p1.photoId _ "." _ p1.photoExtension;END;%] Result format: Код: $p1.content Эта схема работала и при скачке контента фотографии раскаладывались в папках для каждой статьи. Затем было решено переделать скачку фотографий вместе со статьей. Как стало ========= В результатах парсинга у нас есть поля: link - текущий URL (на этот раз это URL статьи) articleId - ID статьи photos - Массив с фотографиями. Каждая фотография предсатавлена json-объектом с полями: photoId, photoExtension. В результате я не пойму как мне организовать сохранение данных на диск? В File name я написал следующее: Код: [% FOREACH photo in p1.photos; "site1/" _ p1.articleId _ "/img/" _ photo.photoId "." _ photo.photoExtension; END; %] Что писать в Result format? Может вообще по-другому это делается?
В рамках обычного пресета нельзя сохранить результат парсинга одного запроса в несколько файлов, перебирая в Формате имени файла результата значения в цикле. Насколько я понял вопрос, у вас по одному запросу отдается несколько картинок, которые вы хотите сохранить в разные файлы. Как вариант, если кол-во картинок постоянное, то можно добавить несколько файлов результатов, и в каждый выводить нужную картинку. Или же, можно попробовать сделать такое сохранение в JS парсере с помощью fs. Пример записи файлов через fs есть здесь: https://a-parser.com/threads/3120/#post-13396
Я сделал сохранение картинок на nodejs. Всё работает отлично. Спасибо! Есть ещё вопрос: можно ли как-то работать с уникализацией из js-кода? Поскольку в моем случае статья качается целиком, а затем качаются картинки внутри нее, то апарсер не делает картинки уникальными (они не проходят по идее через апарсер, следовательно, не попадают в уникализацию по строке) и при последующем проходе статьи скачает их заново, а этого делать не нужно. Может есть возможность передавать уникальные значения в механизм уникализации? Для статей уникальным значением является строка: article_<IdСтатьи> Для картинок уникальным значением хочется сделать: image_<IdКартинки>