电子实验记录本的数据导入API接口,使用JSON格式进行数据交换。
接口支持一次使用一个模板导入到一个记录本中多条数据。如果使用的模板不同,或要导入到不同的记录本中,请多次调用此接口。
为了保证每次数据的导入时间不会超时,每次调用最多导入100条数据。超过100条,请多次调用。
注意:在调用API时,在Header里要加入如下的信息:
Authorization: Bearer {AccessToken}
AccessToken 的获取方式,见“认证接口”
请求URL: https://eln.iphy.ac.cn:61262/eln_api/import
https://eln.iphy.ac.cn:61263/matelab/index.php?do=eln_api&action=import(已废弃)
https://eln.iphy.ac.cn:61263/open_eln/eln_api_import.php(已废弃)
参数
| eln | 必填,文本。要导入的记录本名称; |
| user | 选填。字符串或整数。如果是自己的记录本,可不填写;他人的合作编辑记录本,需要填写记录本所有者的Email或系统userid |
| template | 必填。导入数据所使用的模板; |
| template_user | 选填。字符串。如果是自己的模板,可不填写;他人分享的组模板,需要填写模板所有者的Email |
| quote | 选填。数组。用于引用其他记录的数据。请确保被引用的数据是存在的,否则引用不会被替换;
|
| dataset | 必填。导入的具体数据。数据条数最少1个,最多100个。
|
示例
{
"eln": "记录本名称",
"template": "模板名称",
"quote": [
{
"name": "n1",
"uid": "VUCBG5CLJQR4417DTC8FGS2KDP",
"path": ["表格模板名称","列名",1]
},
{
"name": "n2",
"uid": "DTC8FGS2KDPVUCBG5CLJQR4417",
"path": ["表单模板名称","文本框"]
}
],
"dataset": [{
"title": "记录命名",
"keyword": "关键词1;关键词2;关键词3",
"path": ["一级分类","二级分类","三级分类"],
"uid": "aRxU2nalSYbb",
"data": {
"表单模块": {
"布尔值项": true,
"文本项": "#quote{n1}",
"多行文本项": "test",
"数字项": -21.23,
"日期项": "2022-9-6",
"时间项": "23:59",
"文件上传项": "#base64{test.zip, QmFzZTY057yW56CB56S65L6L}",
"级联选择项":"1"
},
"富文本模块": "test",
"表格模块": {
"文本列": ["a", "b"],
"数字列": [1, 2, 1],
"日期列": ["2021-9-6", "2021-9-6"],
"时间列": ["12:00", "12:21"],
"文件上传列": ["#file{name1}", "#file{name2}"],
"下拉列表列": ["1", "2"],
"布尔值列": [true, false, true]
},
"文件集模块":["#file{name3}", "#file{name4}"]
}
}]
}
| code | 错误代码;
|
| msg | 错误描述; |
| id | 新增记录的id; |
| eln_id | 记录本 id; |
返回错误示例
{
"code": 2,
"msg": "应为数字 (dataset: 1, data: Table, 项目: Number)"
}
返回成功示例
{
"code": 0,
"eln_id": 1264,
"id": [126456546687, 126456546688],
"msg": "数据导入成功"
}
| 一级 key | 模块名称 |
| 一级 value | 数组。模块中各项的数据 |
| 二级 key | 对应模板中的字段名 |
| 二级 value | 多种格式。不同的数据,格式要求如下
|
{
"表单模块": {
"布尔值项": true,
"文本项": "terst",
"多行文本项": "terst",
"数字项": -3.1415926,
"日期项": "2022-9-6",
"时间项": "23:59",
"级联选择项": "1",
"文件上传项": "#file{name1}"
}
}
| key | 模块名称 |
| value | 双引号包含的字符串 |
{
"富文本模块": "<p>text</p>"
}
| 一级 key | 模块名称 |
| 一级 value | 数组。模块中各项的数据 |
| 二级 key | 对应模板中表格的列名 |
| 二级 value | 多种格式。某列中的数据。不同的数据,格式要求如下
|
{
"表格模块": {
"文本列": ["a", "b"],
"数字列": [1, 2, 1],
"日期列": ["2021-9-6", "2021-9-6"],
"时间列": ["12:00", "12:21"],
"文件上传列": ["#file{name1}", "#file{name2}"],
"下拉列表列": ["1", "2"],
"布尔值列": [true, false, true]
}
}
| key | 模块名称 |
| value | 数组列表。
|
{
"文件集模块":[
{
"file": "#file{name1}",
"text": "<p>text</p>"
},
{
"file": "#file{name2}",
"text": "<p>text</p>"
}
]
}
api接口python示例:(https://gitee.com/iopwsy/iop_eln)
from iop_eln import eln
import pandas as pd
def my_template(data:pd.Series):
return [
{
"data type":"richtext",
"data name":"标题",
"data":f"""<p align="center"><font style="font-size:24px"><b><a href="{data["url"]}" title="{data["url"]}" target="_blank">{data["title"].replace("<","<")}</a></b></font></p>"""
},
{
"data type":"richtext",
"data name":"作者",
"data":data["author"]
},
{
"data type":"richtext",
"data name":"领域",
"data":data["subject"]
},
{
"data type":"richtext",
"data name":"摘要",
"data":data["abstract"].replace("<","<")
}
]
E2C = {
'battery':'电池',
'superconductor':'超导',
'topological':'拓扑',
'quantumcomputating':'量子计算'
}
df = pd.read_csv("D:/eln/input.csv",index_col=0)
#%%
arXiv = eln()
for name in E2C.keys():
df_n = df[df[name] > 0.5]
# 根据模板导入第一个数据
arXiv.import_data(
eln_name="测试",
template_name="arXiv更新",
title_list=[f"arXiv_{name}"],
uid_list=[f"arXiv_{name}"],
keyword_list=[f"{E2C[name]};arXiv"],
dataset_in=[{"Introduction":f"""<p align="center"><font style="font-size:24px"><b>arXiv文献关于{E2C[name]}的{len(df_n)}篇文献</b></font></p>"""}]
)
arXiv.update_dataset(
eln_name="测试",
uid=f"arXiv_{name}",
module_name=[f"arXiv_{name}_{index}" for index in df_n.index],
module_type=["form"]*len(df_n),
data_func=my_template,
data_in=df_n
)