Node.js client library for controlling OpenRefine.
- [] upload, apply operations, download results, delete project
- pipe
- CLI tool
varopenrefine=require('openrefine')// another server; same usagevarserver=openrefine.server('http://localhost:3333')// projects metadataopenrefine.projects().then(project_metadata=> ...)Project metadata format:
{"[project_id]": {"name": "[project_name]","created": "[project_creation_time]","modified": "[project_modification_time]","customMetadata": {}},
...[Moreprojects]...}Create a project and clean up some data:
varproject=openrefine.create('data_cleanup_project')// .create() auto-generates a project name.accept('csv').accept({separator: ',',ignoreLines: 1}).expose('csv').keep(true)// keep data after end() or pipe; default is not keeping.use([{"op": "core/column-split","description": "Split column DATE by separator","engineConfig": {"facets": [],"mode": "row-based"},"columnName": "DATE","guessCellType": true,"removeOriginalColumn": true,"mode": "separator","separator": "-","regex": false,"maxColumns": 0}]).use(customCleanupAddress())// customCleanupAddress() returns an array of operationsproject.load('input.csv').end(function(data){// ...}).then(()=>project.destroy())Or use the stream interface:
fs.createStream('input.csv').pipe(project).pipe(fs.createWriteStream('output.csv'))A project may have some internal states (project metadata such as name and ID, data imported previously, etc.) To open an existing project, use numeric ID of OpenRefine:
server.open(1234567980)Delete all data in a project:
project.clean()Destroy a project after use:
project.destroy()- Refine API and implementations in Python and in Ruby.