Skip to content

Instantly share code, notes, and snippets.

@thomas-maschler
Last active July 18, 2018 20:57
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save thomas-maschler/388554ddb6deae6371db to your computer and use it in GitHub Desktop.
Save thomas-maschler/388554ddb6deae6371db to your computer and use it in GitHub Desktop.
Update ArcGIS online metadata
import requests
import json
def request_token(user, password):
d = {"username": user,
"password": password,
"referer":"http://www.arcgis.com",
"f": "json"}
url = "https://www.arcgis.com/sharing/rest/generateToken"
r = requests.post(url, data = d)
response = json.loads(r.content)
if 'error' in response.keys():
raise Exception(response['message'], response['details'])
return response
def update_metadata(user, item, token, metadata):
d = {"overwrite": "true",
"token" :token,
"f":"json"}
f = {'metadata': ('metadata.xml', open(metadata, 'rb'), 'text/xml', {'Expires': '0'})}
url = 'http://www.arcgis.com/sharing/rest/content/users/{0}/items/{1}/update'.format(user, item)
r = requests.post(url, data = d, files = f)
response = json.loads(r.content)
if 'error' in response.keys():
raise Exception(response['message'], response['details'])
return response
if __name__ == "__main__":
metadata = PATH_TO_METADATAFILE
user = USERNAME
password = PASSWORD
item = AGOL_ITEM_ID
token = request_token(user, password)['token']
print update_metadata(user, item, token, metadata)
@FrieseWoudloper
Copy link

Thank you very much for this code!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment