AEM Cloud Service - NodeJS Script to Reprocess Assets | AEM Community Blog Seeding

AEM Cloud Service - NodeJS Script to Reprocess Assets by Sreekanth Choudry Nalabotu
Abstract
Goal
Quick Nodejs script to query based Reprocess assets (for usecases like regenerate thumbnails....)
Solution
1) Get the access token from Developer Console
2) Run the following script using node (used node -v = v19.0.1)
const https = require('https');
const QS = require('querystring');
let AEM_HOST = 'author-p10961-e880305.adobeaemcloud.com';
let AEM_TOKEN = "eyJhbGci.....";
let PATH = "/content/dam/eaem-svg-stream-clear-cache";
let LIMIT = -1;
let QB = "/bin/querybuilder.json?type=dam:Asset&1_property=jcr:content/dam:assetState&1_property.value=PROCESSING&p.limit=" + LIMIT + "&path=";
let goAhead = true;
runQueryAndProcess(QB + PATH);
function runQueryAndProcess(query) {
const options = {
hostname: AEM_HOST,
path: query,
headers: {
Authorization: 'Bearer ' + AEM_TOKEN
}
}
doQueryRequest(options);
}
function doQueryRequest(options){
https.get(options,(res) => {
let body = "";
res.on("data", (chunk) => {
body += chunk;
});
res.on("end", () => {
try {
let json = JSON.parse(body);
console.log("COUNT OF ASSETS TO REPROCESS : " + json.results);
json.hits.forEach((hit) => {
startReprocess(hit.path)
});
} catch (error) {
console.error("ERROR : " + error.message);
goAhead = true;
}
});
}).on("error", (error) => {
console.error("CONN ERROR : " + error.message);
goAhead = true;
});
}
function startReprocess(path){
const INTERVAL = setInterval(() => {
if(goAhead){
goAhead = false;
clearInterval(INTERVAL);
doReprocessOnAsset(path);
}
}, 500);
}
function doReprocessOnAsset(path){
const postData = {
asset : path,
operation : 'PROCESS',
"profile-select" : "full-process",
runPostProcess: "false",
description: "Reprocessing asset - " + path,
};
let payload = QS.stringify(postData);
const options = {
hostname: AEM_HOST,
path: '/bin/asynccommand',
method: 'POST',
headers: {
Authorization: 'Bearer ' + AEM_TOKEN,
'Content-Type': 'application/x-www-form-urlencoded',
'Content-Length': payload.length
}
}
let req = https.request(options, (res) => {
res.setEncoding('utf8');
res.on('data', () => {
console.log(res.statusCode + " : STARTED REPROCESS : " + path);
goAhead = true;
});
});
req.on('error', (e) => {
console.log("ERROR REPROCESS : " + path + " , " + e);
goAhead = true;
});
req.write(payload);
req.end();
}
Read Full Blog
AEM Cloud Service - NodeJS Script to Reprocess Assets
Q&A
Please use this thread to ask the related questions.
