如何从OpenRefine Client提取撤销/重做变换历史记录?
OpenRefine变换历史提取方案
基于你当前使用的openrefine-client提取方法
你用的这个客户端没有专门封装导出操作历史的命令,但它本身支持直接调用OpenRefine原生接口,不需要额外改造就能拿到JSON格式的变换历史:
- 先获取目标项目ID:命令行下执行
openrefine-client --list即可列出所有项目的ID和对应名称;如果是使用该客户端的Python库,直接读取实例的project_id属性就能拿到当前连接项目的ID。 - 调用原生接口获取历史:该客户端内置了已完成认证的请求能力,直接调用
get-operations接口即可。Python库版本可以直接执行history = client.do_json("core/get-operations", {"project_id": client.project_id}),返回结果就是完整的操作历史JSON结构。
纯Python提取方案
完全不需要依赖第三方openrefine-client,直接通过HTTP请求调用OpenRefine原生接口即可实现,适配自动化工作流场景:
- 确保OpenRefine服务正常启动,默认监听本地
127.0.0.1:3333端口,如果你修改过服务地址或端口,对应替换即可。 - 先调用项目元数据接口拿到目标项目ID:向
/command/core/get-all-project-metadata发送GET请求,返回结果里包含所有项目的ID、名称、创建/修改时间信息。 - 再调用操作历史接口拿到变换记录:向
/command/core/get-operations发送GET请求,携带参数project_id为目标项目ID,返回结果的entries字段就是按执行顺序排列的所有撤销/重做操作记录,直接存储为JSON文件即可。
最小可运行代码示例:
import requests import json # 按需修改为你的OpenRefine服务地址 OPENREFINE_ADDR = "http://127.0.0.1:3333" # 替换为需要导出历史的目标项目ID PROJECT_ID = "替换为你的项目ID" # 请求操作历史 response = requests.get( f"{OPENREFINE_ADDR}/command/core/get-operations", params={"project_id": PROJECT_ID} ) response.raise_for_status() op_history = response.json() # 保存为本地JSON文件 with open("openrefine_transform_history.json", "w", encoding="utf-8") as f: json.dump(op_history, f, ensure_ascii=False, indent=2)
注意:如果你的OpenRefine服务配置了访问认证,在请求中携带对应Cookie或认证参数即可;导出的JSON操作历史可以直接在其他OpenRefine项目中导入复用,完全满足自动化流程的步骤复现需求。
内容的提问来源于stack exchange,提问作者frankh07
相关产品推荐
相关产品推荐

