環境はCentOS6.6です。
デベロッパートークンはすでに取得済みであることを前提とします。
node.jsのインストール
$ sudo yum groupinstall 'Development tools'
$ wget http://nodejs.org/dist/v0.12.0/node-v0.12.0.tar.gz
$ tar xvf node-v0.12.0.tar.gz
$ cd node-v0.12.0/
$ ./configure --prefix=/usr/local
$ make
$ sudo make install
バージョン確認。
$ node -v
v0.12.0
$ npm -v
2.5.1
プロジェクトを作成
ディレクトリを作成&移動して、jsファイルを作成します。
$ mkdir EvernoteSampleApp
$ cd EvernoteSampleApp
$ touch index.js
モジュールのインストール
$ npm install evernote
$ npm install enml-js
$ npm install --save node-note
$ npm install async
コード
index.jsをエディタで開いてカタカタ。ちなみに私はAtomで。
ここでやってるのは、新規ノートの作成と、最初のノートの情報を取得→ENML→HTML変換。
index.js
var Evernote = require('evernote').Evernote;
var ENML = require('enml-js'); //ENMLをHTMLにしてくれたり。
var nodeNote = require('node-note'); //ノートを簡単に作成してくれたり。
var async = require('async'); //非同期処理を楽にしてくれたり。
var DEVELOPER_TOKEN = "<YOUR_DEVELOPER_TOKEN>"; //デベロッパートークン
var client = new Evernote.Client({ token: DEVELOPER_TOKEN });
var noteStore = client.getNoteStore();
var noteFilter = new Evernote.NoteFilter();
var notesMetadataResultSpec;
// 新規ノート作成
/*--------------------------------------------------------------------*/
var evernote = new nodeNote({token: DEVELOPER_TOKEN, sandbox: true});
var options = {
title: 'hoge',
body: 'Create new note'
};
evernote.createNote(options, function (err,createdNote) {
console.log('Create new note : complete' );
});
// ノートの各情報を取得
/*--------------------------------------------------------------------*/
notesMetadataResultSpec = new Evernote.NotesMetadataResultSpec({
includeTitle: true,
includeAttributes: true
});
// 非同期処理
async.waterfall([
// ノート検索?
function(callback){
noteStore.findNotesMetadata(noteFilter, 0, 100, notesMetadataResultSpec, function(err, notes) {
console.log(err || notes);
if(notes){
callback( null, JSON.stringify(notes) );
}
});
},
],function(err, result){
// ひとつ目のノートそ取得してHTML形式で表示
var getMetaData = JSON.parse(result);
noteStore.getNote(getMetaData.notes[0].guid, true, true, true, true, function(err, note) {
console.log(err || ENML.HTMLOfENML(note.content, note.resources));
});
});
ENMLは、Evernoteノートの記述に使用されるマークアップ言語。
HTMLタグもサポートされてるけど、idとかclassとかは使えない。
実行
$ node index.js
参考サイト
[1].npmの基本的な使い方まとめ - うなの日記
[2].Node.js error in noteStore.findNotes and noteStore.findNotesMetadata - Evernote for Developers - Evernote User Forum
[3].node.jsのいろいろなモジュール17 – asyncで非同期処理のフロー制御