|
| 1 | +import os, requests, json, math |
| 2 | +from caltechdata_api import get_metadata, caltechdata_edit |
| 3 | + |
| 4 | +token = os.environ["RDMTOK"] |
| 5 | + |
| 6 | +url = "https://data.caltech.edu/api/communities/0497183f-f3b1-483d-b8bb-133c731c939a/records" |
| 7 | +query = "?q=NOT%20_exists_%3Ametadata.description&f=allversions:true" |
| 8 | + |
| 9 | +headers = { |
| 10 | + "Authorization": "Bearer %s" % token, |
| 11 | + "Content-type": "application/json", |
| 12 | +} |
| 13 | + |
| 14 | +url = url + query |
| 15 | +response = requests.get(url, headers=headers) |
| 16 | +total = response.json()["hits"]["total"] |
| 17 | +pages = math.ceil(int(total) / 10) |
| 18 | +for c in range(1, pages + 1): |
| 19 | + chunkurl = f"{url}&size=10&page={c}" |
| 20 | + response = requests.get(chunkurl, headers=headers).json() |
| 21 | + for hit in response["hits"]["hits"]: |
| 22 | + idv = hit["id"] |
| 23 | + print(idv) |
| 24 | + result = requests.post( |
| 25 | + "https://data.caltech.edu/api/records/" + idv + "/draft", |
| 26 | + headers=headers, |
| 27 | + ) |
| 28 | + if result.status_code != 201: |
| 29 | + raise Exception(result.text) |
| 30 | + metadata = result.json() |
| 31 | + metadata["metadata"]["description"] = hit["metadata"]["title"] |
| 32 | + for desc in metadata["metadata"]["additional_descriptions"]: |
| 33 | + if "title" in desc["type"]: |
| 34 | + desc["type"].pop("title") |
| 35 | + for date in metadata["metadata"]["dates"]: |
| 36 | + if "title" in date["type"]: |
| 37 | + date["type"].pop("title") |
| 38 | + if "icon" in metadata["metadata"]["rights"][0]: |
| 39 | + metadata["metadata"]["rights"][0].pop("icon") |
| 40 | + metadata["metadata"]["rights"][0].pop("title") |
| 41 | + metadata["metadata"]["rights"][0].pop("description") |
| 42 | + metadata["metadata"]["rights"][0].pop("props") |
| 43 | + if "title" in metadata["metadata"]["languages"][0]: |
| 44 | + metadata["metadata"]["languages"][0].pop("title") |
| 45 | + if "title" in metadata["metadata"]["resource_type"]: |
| 46 | + metadata["metadata"]["resource_type"].pop("title") |
| 47 | + result = requests.put( |
| 48 | + "https://data.caltech.edu/api/records/" + idv + "/draft", |
| 49 | + headers=headers, |
| 50 | + json=metadata, |
| 51 | + ) |
| 52 | + if result.status_code != 200: |
| 53 | + raise Exception(result.text) |
| 54 | + publish_link = ( |
| 55 | + f"https://data.caltech.edu/api/records/{idv}/draft/actions/publish" |
| 56 | + ) |
| 57 | + result = requests.post(publish_link, headers=headers) |
| 58 | + if result.status_code != 202: |
| 59 | + raise Exception(result.text) |
0 commit comments