59 lines
2.1 KiB
Python
59 lines
2.1 KiB
Python
import json, requests
|
|
from APIHandler import APIHandler
|
|
|
|
def get_entry_from_elabid(elabid, entryType="items"):
|
|
'''
|
|
Function which returns entrypoint data (as dictionary) from its elabid.
|
|
'''
|
|
header = APIHandler(apikey).dump
|
|
response = requests.get(
|
|
headers = header,
|
|
url = f"{ELABFTW_API_URL}/{entryType}/{elabid}",
|
|
verify=True
|
|
)
|
|
if response.status_code // 100 in [2,3]:
|
|
entry_data = response.json()
|
|
return entry_data
|
|
else:
|
|
raise ConnectionError(f"HTTP request failed with status code: {response.status_code}.")
|
|
|
|
def get_sample_layers_data(elabid):
|
|
'''
|
|
Return the following data from every eLabFTW experiment linked
|
|
to a certain sample, identified by elabid.
|
|
|
|
- Title of the experiment
|
|
- Category (should check it's "PLD Deposition")
|
|
- Layer number - if present (PLD depositions)
|
|
- Deposition time - returns error if not present
|
|
- Repetition rate - returns error if not present
|
|
'''
|
|
# header = {
|
|
# "Authorization": apikey,
|
|
# "Content-Type": "application/json"
|
|
# }
|
|
sample_data = requests.get(
|
|
headers = header,
|
|
url = f"https://elabftw.fisica.unina.it/api/v2/items/{elabid}",
|
|
verify=True
|
|
).json()
|
|
related_experiments = sample_data["related_experiments_links"]
|
|
result = []
|
|
for exp in related_experiments:
|
|
experiment_data = requests.get(
|
|
headers = header,
|
|
url = f"https://elabftw.fisica.unina.it/api/v2/experiments/{exp.get("entityid")}",
|
|
verify=True
|
|
).json()
|
|
extra = experiment_data["metadata_decoded"]["extra_fields"]
|
|
result.append(
|
|
{"title": exp.get("title"),
|
|
"layer_number": extra.get("Layer Progressive Number").get("value"),
|
|
"category": exp.get("category_title"),
|
|
"deposition_time": extra.get("Duration").get("value"),
|
|
"repetition_rate": extra.get("Repetition rate").get("value")}
|
|
)
|
|
return result
|
|
|
|
if __name__=="__main__":
|
|
print("Warning: you're not supposed to be running this as the main program.") |