Node.js client library for controlling OpenRefine.
- [] upload, apply operations, download results, delete project
- pipe
- CLI tool
var openrefine = require('openrefine')
// another server; same usage
var server = openrefine.server('http://localhost:3333')
// projects metadata
openrefine
  .projects()
  .then(project_metadata => ...)Project metadata format:
{
  "[project_id]": {
    "name": "[project_name]",
    "created": "[project_creation_time]",
    "modified": "[project_modification_time]",
    "customMetadata": {}
  },
  ...[More projects]...
}Create a project and clean up some data:
var project = 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 operations
project
  .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.