Skip to main content

Updating Upload Presets Eval

Overview

Upload presets enable us to centrally define a set of asset upload options instead of specifying them in each upload call. For more information on the broader application of upload presets and the filename conventions that are being used in the code below see here. This documentation covers how to update the eval field of an upload preset. The eval field is a JavaScript code snippet specifying custom logic in order to modify upload parameters. The snippet is evaluated when uploading a file. We use it for checking filenames follow agreed conventions, scraping tags and information from the filename, quality analysis and accessibility analysis.

How to update upload presets

  1. Click on the settings icon

Cloudinary settings UI

  1. Scroll down to the list of upload presets and click edit for the upload preset you would like to make changes to

Cloudinary upload presets UI

  1. Click "upload manipulations" and scroll to the bottom to the eval field

Cloudinary upload presets UI

  1. Make changes and click "save" in top right corner

NOTE: There is a character limit of 4096 characters for the eval. If you go over this and save the upload preset, the Cloudinary UI crashes and you cannot access the upload presets to remove the issue, you need to speak to support to remove the upload preset that has too many characters or you need to remove it yourself using the Cloudinary API.

Current values

Event

if (!/([0-9A-Za-z-]{4,5}_)((event_)?)([A-Za-z-\d]+_)([A-Za-z-]+_)([A-Za-z-\d]+)\.(.+)$/.test(resource_info. filename)) { throw new Error('The filename does not match the agreed naming convention') }

if (/([0-9A-Za-z-]{4,5}_)((event_)?)([A-Za-z-\d]+_)([A-Za-z-]+_)([A-Za-z-\d]+)\.(.+)$/.test(resource_info. filename)) {
upload_options['unique_filename'] = false;
upload_options['accessibility'] = true;

var filename = resource_info.filename;
var filenameWithoutExtension = filename.split('.');
var filenameArray = filenameWithoutExtension[0].split('_');

var context = {};
var year = '';
var event_name = '';
var country = '';

if (filename.includes('event')) {
year = filenameArray[0];
event_name = filenameArray[2];
country = filenameArray[3];
} else {
year = filenameArray[0];
event_name = filenameArray[1];
country = filenameArray[2];
}

context['year'] = year;
context['event_name'] = event_name;
context['country'] = country;

if (resource_info.faces.length > 0) { context['people'] = resource_info.faces.length; };

// analysis
if (resource_info.quality_analysis.jpeg_quality > 0) { context['quality_analysis: jpeg quality'] = resource_info.quality_analysis.jpeg_quality; };
if (resource_info.quality_analysis.focus < 0.5) { context['quality_analysis: focus'] = 'blurry'; };
if (resource_info.quality_analysis.noise > 0) { context['quality_analysis: noise'] = resource_info.quality_analysis.noise; };
if (resource_info.quality_analysis.contrast > 0) { context['quality_analysis: contrast'] = resource_info.quality_analysis.contrast; };
if (resource_info.quality_analysis.exposure > 0) { context['quality_analysis: exposure'] = resource_info.quality_analysis.exposure; };
if (resource_info.quality_analysis.saturation > 0) { context['quality_analysis: saturation'] = resource_info.quality_analysis.saturation; };
if (resource_info.quality_analysis.lighting > 0) { context['quality_analysis: lighting'] = resource_info.quality_analysis.lighting; };
if (resource_info.quality_analysis.pixel_score > 0) { context['quality_analysis: pixel score'] = resource_info.quality_analysis.pixel_score; };
if (resource_info.quality_analysis.color_score > 0) { context['quality_analysis: color score'] = resource_info.quality_analysis.color_score; };
if (resource_info.quality_score) { context['quality score'] = resource_info.quality_score; };

// accessibility
if (resource_info.accessibility_analysis.colorblind_accessibility_score) { context['accessibility: colorblind score'] = resource_info.accessibility_analysis.colorblind_accessibility_score; };
if (resource_info.accessibility_analysis.distinct_edges < 0.5) { context['accessibility: distinct edges'] = 'Issues Found'; };
if (resource_info.accessibility_analysis.distinct_colors < 0.5) { context['accessibility: distinct colors'] = 'Issues Found'; };
if (resource_info.accessibility_analysis.distinct_edges < 0.5 && resource_info.accessibility_analysis.distinct_colors < 0.5) { context['accessibility: most indistinct pair'] = resource_info.accessibility_analysis.most_indistinct_pair.toString(); };

// contexct
upload_options['context'] = Object.keys(context).map(function(k){ return k + '=' + context[k]; }).join("|")

}

Location

if (!/([0-9A-Za-z-]{4,5}_)((location_)?)([A-Za-z-\d]+_)([A-Za-z-]+_)([A-Za-z-\d]+)\.(.+)$/.test(resource_info. filename)) { throw new Error('The filename does not match the agreed naming convention') }

if (/([0-9A-Za-z-]{4,5}_)((location_)?)([A-Za-z-\d]+_)([A-Za-z-]+_)([A-Za-z-\d]+)\.(.+)$/.test(resource_info.filename)) {
upload_options["unique_filename"] = false;
upload_options["accessibility"] = true;

var filename = resource_info.filename;
var filenameWithoutExtension = filename.split('.');
var filenameArray = filenameWithoutExtension[0].split('_');

var context = {};
var season = '';
var collection = '';
var country = '';

if (filename.includes('location')) {
season = filenameArray[0];
collection = filenameArray[2];
country = filenameArray[3];
} else {
season = filenameArray[0];
event_name = filenameArray[1];
country = filenameArray[2];
}

context['season'] = season;
context['collection'] = collection;
context['country'] = country;

if (resource_info.faces.length > 0) {
context["people"] = resource_info.faces.length;
}

// analysis
if (resource_info.quality_analysis.jpeg_quality > 0) { context['quality_analysis: jpeg quality'] = resource_info.quality_analysis.jpeg_quality; };
if (resource_info.quality_analysis.focus < 0.5) { context['quality_analysis: focus'] = 'blurry'; };
if (resource_info.quality_analysis.noise > 0) { context['quality_analysis: noise'] = resource_info.quality_analysis.noise; };
if (resource_info.quality_analysis.contrast > 0) { context['quality_analysis: contrast'] = resource_info.quality_analysis.contrast; };
if (resource_info.quality_analysis.exposure > 0) { context['quality_analysis: exposure'] = resource_info.quality_analysis.exposure; };
if (resource_info.quality_analysis.saturation > 0) { context['quality_analysis: saturation'] = resource_info.quality_analysis.saturation; };
if (resource_info.quality_analysis.lighting > 0) { context['quality_analysis: lighting'] = resource_info.quality_analysis.lighting; };
if (resource_info.quality_analysis.pixel_score > 0) { context['quality_analysis: pixel score'] = resource_info.quality_analysis.pixel_score; };
if (resource_info.quality_analysis.color_score > 0) { context['quality_analysis: color score'] = resource_info.quality_analysis.color_score; };
if (resource_info.quality_score) { context['quality score'] = resource_info.quality_score; };

// accessibility
if (resource_info.accessibility_analysis.colorblind_accessibility_score) { context['accessibility: colorblind score'] = resource_info.accessibility_analysis.colorblind_accessibility_score; };
if (resource_info.accessibility_analysis.distinct_edges < 0.5) { context['accessibility: distinct edges'] = 'Issues Found'; };
if (resource_info.accessibility_analysis.distinct_colors < 0.5) { context['accessibility: distinct colors'] = 'Issues Found'; };
if (resource_info.accessibility_analysis.distinct_edges < 0.5 && resource_info.accessibility_analysis.distinct_colors < 0.5) { context['accessibility: most indistinct pair'] = resource_info.accessibility_analysis.most_indistinct_pair.toString(); };


// context
upload_options['context'] = Object.keys(context).map(function(k){ return k + '=' + context[k]; }).join("|")
}

Standard

Has no eval set

Standard Video

Has no eval set

Triptych video (2:3)

If you update any of the values below, please cross reference with the Cloudinary Restore Asset lambda which uses these values and would also need updating if anything changes: https://gitlab.com/rapharacing/rapha-middleware/cloudinary/restore/-/tree/master/services/restore-asset

var regex = /(([A-Z0-9]{7})|([A-Z0-9]{5}))_([A-Za-z-0-9]+_)([A-Za-z-0-9]{4,5})_(mannequin|MANNEQUIN|model|MODEL|macro|MACRO)((_[A-Za-z-0-9]+)?)\.(.+)$/;

if (!regex.test(resource_info.filename)) {
throw new Error("The filename does not match the agreed naming convention");
}

if (regex.test(resource_info.filename)) {
upload_options["unique_filename"] = false;
upload_options["accessibility"] = true;

var filename = resource_info.filename;
var filenameWithoutExtension = filename.split('.');
var filenameArray = filenameWithoutExtension[0].split('_');

var context = {};

context["sku"] = filenameArray[0];
context["name"] = filenameArray[1];
context["season"] = filenameArray[2]
context["type"] = filenameArray[3];

// context
upload_options['context'] = Object.keys(context).map(function(k){ return k + '=' + context[k]; }).join("|")
}

Triptych image

If you update any of the values below, please cross reference with the Cloudinary Restore Asset lambda which uses these values and would also need updating if anything changes: https://gitlab.com/rapharacing/rapha-middleware/cloudinary/restore/-/tree/master/services/restore-asset

var regex = /(([A-Z0-9]{7})|([A-Z0-9]{5}))_([A-Za-z-0-9]+_)([A-Za-z-0-9]{4,5})_(mannequin|MANNEQUIN|model|MODEL|macro|MACRO)((_[A-Za-z-0-9]+)?)\.(.+)$/;

if (!regex.test(resource_info.filename)) {
throw new Error("The filename does not match the agreed naming convention");
}

if (regex.test(resource_info.filename)) {
upload_options["unique_filename"] = false;
upload_options["accessibility"] = true;

var filename = resource_info.filename;
var filenameWithoutExtension = filename.split('.');
var filenameArray = filenameWithoutExtension[0].split('_');

var context = {};

context["sku"] = filenameArray[0];
context["name"] = filenameArray[1];
context["season"] = filenameArray[2]
context["type"] = filenameArray[3];

// keywords
if (resource_info.faces && resource_info.faces.length > 0) {
context["people"] = resource_info.faces.length;
}

// analysis
if (resource_info.quality_analysis.jpeg_quality > 0) { context['quality_analysis: jpeg quality'] = resource_info.quality_analysis.jpeg_quality; };
if (resource_info.quality_analysis.focus < 0.5) { context['quality_analysis: focus'] = 'blurry'; };
if (resource_info.quality_analysis.noise > 0) { context['quality_analysis: noise'] = resource_info.quality_analysis.noise; };
if (resource_info.quality_analysis.contrast > 0) { context['quality_analysis: contrast'] = resource_info.quality_analysis.contrast; };
if (resource_info.quality_analysis.exposure > 0) { context['quality_analysis: exposure'] = resource_info.quality_analysis.exposure; };
if (resource_info.quality_analysis.saturation > 0) { context['quality_analysis: saturation'] = resource_info.quality_analysis.saturation; };
if (resource_info.quality_analysis.lighting > 0) { context['quality_analysis: lighting'] = resource_info.quality_analysis.lighting; };
if (resource_info.quality_analysis.pixel_score > 0) { context['quality_analysis: pixel score'] = resource_info.quality_analysis.pixel_score; };
if (resource_info.quality_analysis.color_score > 0) { context['quality_analysis: color score'] = resource_info.quality_analysis.color_score; };
if (resource_info.quality_score) { context['quality score'] = resource_info.quality_score; };

// accessibility
if (resource_info.accessibility_analysis.colorblind_accessibility_score) { context['accessibility: colorblind score'] = resource_info.accessibility_analysis.colorblind_accessibility_score; };
if (resource_info.accessibility_analysis.distinct_edges < 0.5) { context['accessibility: distinct edges'] = 'Issues Found'; };
if (resource_info.accessibility_analysis.distinct_colors < 0.5) { context['accessibility: distinct colors'] = 'Issues Found'; };
if (resource_info.accessibility_analysis.distinct_edges < 0.5 && resource_info.accessibility_analysis.distinct_colors < 0.5) { context['accessibility: most indistinct pair'] = resource_info.accessibility_analysis.most_indistinct_pair.toString(); };


// context
upload_options['context'] = Object.keys(context).map(function(k){ return k + '=' + context[k]; }).join("|")
}

Mannequin

If you update any of the values below, please cross reference with the Cloudinary Restore Asset lambda which uses these values and would also need updating if anything changes: https://gitlab.com/rapharacing/rapha-middleware/cloudinary/restore/-/tree/master/services/restore-asset

var regex = /(([A-Z0-9]{7})|([A-Z0-9]{5}))_(([A-Z0-9]{3})|([A-Z0-9]{6}))_([A-Za-z-0-9]*)_([A-Za-z0-9-]{4,5})_(mannequin|MANNEQUIN|model|MODEL|macro|MACRO)_([0-9]{1,2})\.(.*)$/;

if (!regex.test(resource_info.filename)) {
throw new Error("The filename does not match the agreed naming convention");
}

if (regex.test(resource_info.filename)) {
upload_options["unique_filename"] = false;
upload_options["accessibility"] = true;

var filename = resource_info.filename;
var filenameWithoutExtension = filename.split('.');
var filenameArray = filenameWithoutExtension[0].split('_');

var context = {};

context["sku"] = filenameArray[0];
context["variant"] = filenameArray[1];
context["name"] = filenameArray[2]
context["season"] = filenameArray[3];
context["type"] = filenameArray[4];

// keywords
if (resource_info.faces && resource_info.faces.length > 0) {
context["people"] = resource_info.faces.length;
}

// analysis
if (resource_info.quality_analysis.jpeg_quality > 0) { context['quality_analysis: jpeg quality'] = resource_info.quality_analysis.jpeg_quality; };
if (resource_info.quality_analysis.focus < 0.5) { context['quality_analysis: focus'] = 'blurry'; };
if (resource_info.quality_analysis.noise > 0) { context['quality_analysis: noise'] = resource_info.quality_analysis.noise; };
if (resource_info.quality_analysis.contrast > 0) { context['quality_analysis: contrast'] = resource_info.quality_analysis.contrast; };
if (resource_info.quality_analysis.exposure > 0) { context['quality_analysis: exposure'] = resource_info.quality_analysis.exposure; };
if (resource_info.quality_analysis.saturation > 0) { context['quality_analysis: saturation'] = resource_info.quality_analysis.saturation; };
if (resource_info.quality_analysis.lighting > 0) { context['quality_analysis: lighting'] = resource_info.quality_analysis.lighting; };
if (resource_info.quality_analysis.pixel_score > 0) { context['quality_analysis: pixel score'] = resource_info.quality_analysis.pixel_score; };
if (resource_info.quality_analysis.color_score > 0) { context['quality_analysis: color score'] = resource_info.quality_analysis.color_score; };
if (resource_info.quality_score) { context['quality score'] = resource_info.quality_score; };

// accessibility
if (resource_info.accessibility_analysis.colorblind_accessibility_score) { context['accessibility: colorblind score'] = resource_info.accessibility_analysis.colorblind_accessibility_score; };
if (resource_info.accessibility_analysis.distinct_edges < 0.5) { context['accessibility: distinct edges'] = 'Issues Found'; };
if (resource_info.accessibility_analysis.distinct_colors < 0.5) { context['accessibility: distinct colors'] = 'Issues Found'; };
if (resource_info.accessibility_analysis.distinct_edges < 0.5 && resource_info.accessibility_analysis.distinct_colors < 0.5) { context['accessibility: most indistinct pair'] = resource_info.accessibility_analysis.most_indistinct_pair.toString(); };


// context
upload_options['context'] = Object.keys(context).map(function(k){ return k + '=' + context[k]; }).join("|")
}

Bundles

var regex = /BUN-([A-Z0-9]{6})\.(.+)$/;

if (!regex.test(resource_info.filename)) {
throw new Error("The filename does not match the agreed naming convention");
}

if (regex.test(resource_info.filename)) {
upload_options["unique_filename"] = false;
upload_options["accessibility"] = true;

var context = {};

// analysis
if (resource_info.quality_analysis.jpeg_quality > 0) { context['quality_analysis: jpeg quality'] = resource_info.quality_analysis.jpeg_quality; };
if (resource_info.quality_analysis.focus < 0.5) { context['quality_analysis: focus'] = 'blurry'; };
if (resource_info.quality_analysis.noise > 0) { context['quality_analysis: noise'] = resource_info.quality_analysis.noise; };
if (resource_info.quality_analysis.contrast > 0) { context['quality_analysis: contrast'] = resource_info.quality_analysis.contrast; };
if (resource_info.quality_analysis.exposure > 0) { context['quality_analysis: exposure'] = resource_info.quality_analysis.exposure; };
if (resource_info.quality_analysis.saturation > 0) { context['quality_analysis: saturation'] = resource_info.quality_analysis.saturation; };
if (resource_info.quality_analysis.lighting > 0) { context['quality_analysis: lighting'] = resource_info.quality_analysis.lighting; };
if (resource_info.quality_analysis.pixel_score > 0) { context['quality_analysis: pixel score'] = resource_info.quality_analysis.pixel_score; };
if (resource_info.quality_analysis.color_score > 0) { context['quality_analysis: color score'] = resource_info.quality_analysis.color_score; };
if (resource_info.quality_score) { context['quality score'] = resource_info.quality_score; };

// accessibility
if (resource_info.accessibility_analysis.colorblind_accessibility_score) { context['accessibility: colorblind score'] = resource_info.accessibility_analysis.colorblind_accessibility_score; };
if (resource_info.accessibility_analysis.distinct_edges < 0.5) { context['accessibility: distinct edges'] = 'Issues Found'; };
if (resource_info.accessibility_analysis.distinct_colors < 0.5) { context['accessibility: distinct colors'] = 'Issues Found'; };
if (resource_info.accessibility_analysis.distinct_edges < 0.5 && resource_info.accessibility_analysis.distinct_colors < 0.5) { context['accessibility: most indistinct pair'] = resource_info.accessibility_analysis.most_indistinct_pair.toString(); };


// context
upload_options['context'] = Object.keys(context).map(function(k){ return k + '=' + context[k]; }).join("|")
}

Resources