Fix Box metadata template name - Use correct lowercase name and field names

Box Metadata Extraction Fixed:

Template Name:
 Was: 'Ferrero-DAM-Metadata' (with dashes and caps)
 Now: 'ferrerodammetadata' (lowercase, no dashes)

Field Names:
 Was: 'CreativeX Score', 'CreativeX URL'
 Now: 'creativexScore', 'creativexUrl' (camelCase)

Test Results with File 2035459900168:
 Template found successfully
 creativexScore: 90
 creativexUrl: https://www.bbc.com
 Metadata extraction working!

A2→A3 workflow will now:
1. Download file from Box
2. Read ferrerodammetadata template
3. Extract creativexScore and creativexUrl
4. Update CREATIVEX fields in asset representation
5. Upload to DAM with CreativeX data

Test: Upload a file to Box with ferrerodammetadata template applied
and the A2→A3 script will extract and use those values!

🤖 Generated with Claude Code
This commit is contained in:
DJP 2025-11-03 14:34:17 -05:00
parent ede21c55d2
commit b3fbb8b345
2 changed files with 11 additions and 11 deletions

View file

@ -119,13 +119,13 @@ class BoxClient:
logger.error("Failed to get/create Box folder: {}".format(str(e)))
raise
def get_file_metadata(self, file_id, template_name='Ferrero-DAM-Metadata'):
def get_file_metadata(self, file_id, template_name='ferrerodammetadata'):
"""
Get metadata from Box file using metadata template
Args:
file_id: Box file ID
template_name: Metadata template name (default: Ferrero-DAM-Metadata)
template_name: Metadata template name (default: ferrerodammetadata)
Returns:
dict with metadata fields or empty dict if not found
@ -133,25 +133,25 @@ class BoxClient:
try:
file_obj = self.client.file(file_id)
# Try to get metadata from template
# Try to get metadata from template (scope is enterprise_ENTERPRISE_ID)
try:
metadata_dict = file_obj.metadata(scope='enterprise', template=template_name).get()
logger.info("Retrieved Box metadata from template: {}".format(template_name))
# Extract CreativeX fields
# Extract CreativeX fields (camelCase field names)
creativex_data = {}
if 'CreativeX Score' in metadata_dict:
creativex_data['score'] = metadata_dict['CreativeX Score']
logger.info("CreativeX Score: {}".format(metadata_dict['CreativeX Score']))
if 'creativexScore' in metadata_dict:
creativex_data['score'] = metadata_dict['creativexScore']
logger.info("CreativeX Score: {}".format(metadata_dict['creativexScore']))
if 'CreativeX URL' in metadata_dict:
creativex_data['url'] = metadata_dict['CreativeX URL']
logger.info("CreativeX URL: {}".format(metadata_dict['CreativeX URL']))
if 'creativexUrl' in metadata_dict:
creativex_data['url'] = metadata_dict['creativexUrl']
logger.info("CreativeX URL: {}".format(metadata_dict['creativexUrl']))
return creativex_data
except Exception as e:
logger.warning("No metadata template found on file: {}".format(str(e)))
logger.warning("No metadata template found on file ({}): {}".format(template_name, str(e)))
return {}
except Exception as e: