I am looking to bulk update metadata for each layer in my ArcGIS Pro's map. When I try to update it, it is not saved. I have tried two methods (see below code examples) but none work. I might be missing a step somewhere to save the metadata. Any help will be appreciated. Thanks.
Option 1:
import arcpy
import json
from arcpy import metadata as md
aprx = arcpy.mp.ArcGISProject(r"CURRENT")
m = aprx.listMaps(aprx.activeMap.name)[0]
metadata_json_orig = {}
metadata_json_new = {}
for lyr in m.listLayers():
if lyr.isFeatureLayer:
metadata_json_orig[lyr.metadata.title] = {"summary": lyr.metadata.summary, "description": lyr.metadata.description, "tags": lyr.metadata.tags, "credits": lyr.metadata.credits, "access_constraints": lyr.metadata.accessConstraints}
item_md = md.Metadata(lyr)
item_md.title = lyr.name
item_md.summary = "My new layer's summary here"
item_md.description = "My new layer's summary here"
item_md.tags = "new,tag,list,here"
item_md.credits = "Credit to me"
item_md.accessConstraints = "You may use this layer"
item_md.save()
metadata_json_new[lyr.metadata.title] = {"summary": lyr.metadata.summary, "description": lyr.metadata.description, "tags": lyr.metadata.tags, "credits": lyr.metadata.credits, "access_constraints": lyr.metadata.accessConstraints}
print(f"{json.dumps(metadata_json_orig, indent=2)}\n#################################################\n")
print(f"{json.dumps(metadata_json_new, indent=2)}\n#################################################\n")
Option 2:
import arcpy
import json
aprx = arcpy.mp.ArcGISProject(r"CURRENT")
m = aprx.listMaps(aprx.activeMap.name)[0]
metadata_json_orig = {}
metadata_json_new = {}
for lyr in m.listLayers():
if lyr.isFeatureLayer:
metadata_json_orig[lyr.metadata.title] = {"summary": lyr.metadata.summary, "description": lyr.metadata.description, "tags": lyr.metadata.tags, "credits": lyr.metadata.credits, "access_constraints": lyr.metadata.accessConstraints}
lyr.metadata.title = lyr.name
lyr.metadata.summary = "My new layer's summary here"
lyr.metadata.description = "My new layer's summary here"
lyr.metadata.tags = "new,tag,list,here"
lyr.metadata.credits = "Credit to me"
lyr.metadata.accessConstraints = "You may use this layer"
metadata_json_new[lyr.metadata.title] = {"summary": lyr.metadata.summary, "description": lyr.metadata.description, "tags": lyr.metadata.tags, "credits": lyr.metadata.credits, "access_constraints": lyr.metadata.accessConstraints}
print(f"{json.dumps(metadata_json_orig, indent=2)}\n#################################################\n")
print(f"{json.dumps(metadata_json_new, indent=2)}\n#################################################\n")Thanks