{"id":4812,"date":"2016-07-28T03:29:19","date_gmt":"2016-07-28T03:29:19","guid":{"rendered":"http:\/\/www.garysieling.com\/blog\/?p=4812"},"modified":"2016-07-28T03:29:19","modified_gmt":"2016-07-28T03:29:19","slug":"access-opencalais-node-js","status":"publish","type":"post","link":"https:\/\/www.garysieling.com\/blog\/access-opencalais-node-js\/","title":{"rendered":"Access OpenCalais from Node.js"},"content":{"rendered":"<p>To access OpenCalais for entity recognition, you&#8217;ll need an API key, and some text to check:<\/p>\n<pre lang=\"javascript\">\nlet inputData = `\nProfessor Sir Richard Evans FBA is Provost of Gresham College and \nthe President of Wolfson College, Cambridge. He was Regius Professor \nof History at the University of Cambridge from 2008 until his retirement \nin September 2014. He is a world-renowned historian and academic, with \nmany of his books now acknowledged as seminal works in the field of \nmodern history.`;\n\nlet token = 'insert token here';\n<\/pre>\n<p>This requires the Node HTTPs library as a dependency (there are a couple unmaintained wrappers around OpenCalais for Node, but I found none of them work).<\/p>\n<pre lang=\"javascript\">\nlet https = require('https');\n<\/pre>\n<p>Once you do this, you just need to drop in all the parameters you need, and run a typical Node HTTP request:<\/p>\n<pre lang=\"javascript\">\nconst options = {\n  host: \"api.thomsonreuters.com\",\n  port: \"443\",\n  path: \"\/permid\/calais\",\n  method: \"POST\",\n  headers: {\n    \"Content-Type\": \"text\/raw\",\n    \"OutputFormat\": \"application\/json\",\n    \"X-AG-Access-Token\": token,\n    \"Content-Length\": new Buffer(inputData).length\n  }\n};\n\nconst req = https.request(options, \n  (res) => {\n    let resultData = \"\";\n    res.on(\"data\", (d) => {\n      resultData += d;\n    });\n\n    res.on(\"end\", () => {\n      console.log(\n        JSON.stringify(\n          JSON.parse(resultData), \n          null, \n          2));\n    });\n  }\n);\n\nreq.write(inputData);\nreq.end();\n<\/pre>\n<p>Once you do this, you&#8217;ll get a ton of detail (on first glance, this seems much more detailed than AlchemyAPI):<\/p>\n<pre lang=\"javascript\">\n  },\n  \"http:\/\/d.opencalais.com\/genericHasher-1\/8ab44b93-7601-3ce8-8b45-1bc2fa919150\": {\n    \"_typeGroup\": \"relations\",\n    \"_type\": \"Trial\",\n    \"forenduserdisplay\": \"false\",\n    \"_typeReference\": \"http:\/\/s.opencalais.com\/1\/type\/em\/r\/Trial\",\n    \"person\": \"http:\/\/d.opencalais.com\/pershash-1\/9af3227d-8f35-3529-8222-cc89ff24185a\",\n    \"instances\": [\n      {\n        \"detection\": \"[About Hitler: The Holocaust, History, and the ]David Irving Trial[ (2002), In Defe\nnce of History (1997), Rituals of]\",\n        \"prefix\": \"About Hitler: The Holocaust, History, and the \",\n        \"exact\": \"David Irving Trial\",\n        \"suffix\": \" (2002), In Defence of History (1997), Rituals of\",\n        \"offset\": 1742,\n        \"length\": 18\n      }\n    ]\n  },\n<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Accessing OpenCalais from Node.js<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"om_disable_all_campaigns":false,"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"footnotes":""},"categories":[4],"tags":[385,388,406],"aioseo_notices":[],"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/www.garysieling.com\/blog\/wp-json\/wp\/v2\/posts\/4812"}],"collection":[{"href":"https:\/\/www.garysieling.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.garysieling.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.garysieling.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.garysieling.com\/blog\/wp-json\/wp\/v2\/comments?post=4812"}],"version-history":[{"count":0,"href":"https:\/\/www.garysieling.com\/blog\/wp-json\/wp\/v2\/posts\/4812\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.garysieling.com\/blog\/wp-json\/wp\/v2\/media?parent=4812"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.garysieling.com\/blog\/wp-json\/wp\/v2\/categories?post=4812"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.garysieling.com\/blog\/wp-json\/wp\/v2\/tags?post=4812"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}