이번 포스팅은 Evernote 에서 무료로 제공하고 있는 Evernote API를 소개 하고

Evernote-SDK에 포함되어 있는 Sample 코드를 실행해보고자 한다.

Evernote API는 개발자들이 본인들의 프로젝트에 Evernote 연동을 할 수 있도록 제공해주는 오픈소스이다. 

Evernote의 기능 중 note, notebook 과 관련해서 작성, 판독, 갱신 및 삭제 기능등을 모두 연동해 사용할 수 있도록 

Thrift 방식으로 제공 하고 있다.

이번 포스팅에서는 Evernote API를 사용하기 위해 제공되는 Evernote-SDK에 포함된 Sample 코드중 EDAMTest.py 

라는 파일을 이용해 진행을 하려고 한다.


https://dev.evernote.com/

위 URL은 Evernote API 이용을 위한 SDK파일과 Documentation을 제공 하고 있는 에버노트 개발자 홈페이지 이다. 홈페이지에 접속 하게 되면 아래와 같은 페이지를 볼 수 있다. 

<Evernote 개발자 홈페이지>

1. 가운데에 있는   버튼을 통해 다운로드 페이지로 이동 할 수 있다.


Evernote API는 이 포스팅에서 진행할 Python용 외에도 IOS, Android와 같은 모바일 용과 Ruby, C++, Perl 과 같은 다른 언어를 위한 SDK파일도 제공하고 있다. 

우리는 Python을 이용 할 것이기 때문에 가장 위에 있는 Python용 Install SDK 와 Quick-start-Guide 를 이용하면 된다.


2. Install SDK를 클릭하면 Evernote-SDK-Python이 올려져 있는 GitHub로 이동된다. 이곳에서 SDK 파일을 다운로드 해 주도록 한다. 다운로드를 완료 했다면 그 다음 단계는 일종의 Tutorial 과정인 Quick-start-Guide 이다. 

zip파일을 받아 압축을 풀어도 되고 아래와 같이 git명령어를 이용해도 된다.


$ git clone  https://github.com/evernote/evernote-sdk-python.git



3. Quick-Start-Guide를 클릭하면 위에서 다운로드한 Evernote-SDK의 기본적인 사용법을 Tutorial 형식으로 제공하는 페이지로 이동하게 된다.


4. Tutorial 및 Evernote API를 이용하기 위한 준비

첫번째 단계는 준비 과정이다. 

1) https://sandbox.evernote.com (test용 Evernote 샌드박스 사이트) 의 계정을 만들어야 한다. 사이트에 접속하게되면 아래와 같은 설명을 볼 수 있는데 살펴 보면, 해당 사이트는 test용이고, 실제 Evernote와 별개로 운영되는 사이트 임을 알 수 있다. 

계정을 생성하였다면 그다음 단계는 Evernote API KEY를 발급 받아야한다.

2) 두번째 항목의 'get one here'를 클릭하거나 우측 상단의  를 클릭하게되면 아래와 같이 API KEY를 발급 받을 수 있는 화면을 볼 수 있다. 

좌측은 직접 작성을 하면 된다. 그리고 우측을 보면 API Permissions가 있다. 이는 Evernote API를 이용해 접근해서 처리할 수 있는 권한에 따라 2가지로 나뉜 것이다. Basic Access의 경우 생성하고 정보를 불러와서 읽는 것만 가능하고, Full Access의 경우 basic 기능에 추가로 업데이트와 공유 노트북의 생성까지 가능하다. 사용하려는 용도에 맞게 선택하면 된다. 우리는 우선 Full Access로 선택 하도록 한다. 

다음으로 바로 아래에 있는 3개의 check box를 살펴보면 첫번째는 사용자Data 동기화와 관련된 것이고 두번째는 Evernote에서 제공하는 업데이트 정보를 email로 구독할 것인지에 대한 것이고 세번째는 API KEY를 발급 받기위해 약관에 동의하는 것과 관련된 것이다. 

우리는 첫번째와 두번째는 제외하고 세번째만 체크 한뒤 Request Key 버튼을 클릭하면된다.

Evernote API KEY인 Consumer KEY와 Consumet Secret이 발급 된 것을 확인 할 수 있을 것이다. 발급 받은 KEY는 이후 진행할 Sample Script에서 사용 해야 되니 따로 적어 놓도록 하자. 해당 KEY는 발급 과정에서 작성한 e-mail을 통해 언제든지 다시 확인 할 수있으니 위 페이지를 벗어 났더라도 걱정 하지 말자.

3) Quick-start-guide의 What you need 에는 설명되어 있지 않지만 한가지 더 준비해야 될 것이 있다. 

바로 Developer Token을 발급 받는 것이다. Developer Token은 Evernote 계정에 접근해 작업을 할 수 있도록 승인 받기 위해 꼭 필요한 것이다. Developer Token은 아래 링크를 통해 발급 받을 수 있다. 

두개의 링크 중 우리는 Sample Script를 실행해볼 것이기 때문에 sandbox용을 발급 받도록 한다. Production용은 실제 개발에 적용할 경우 이용면 된다.

https://sandbox.evernote.com/api/DeveloperToken.action - Sandbox 용

https://www.evernote.com/api/DeveloperToken.action - Production 용

Developer Token의 경우 반드시 따로 적어서 저장해놓도록 하자. 해당 토큰은 잃어 버렸을 경우 재발급 받는 방법 밖에 없다. 아래 그림에서 가운데 위치한 Developer Token 을 저장해 놓으면 된다.

이것으로 준비과정은 끝이 났다. 이제부터는 위에서 준비한 1)Evernote-SDK 2) API KEY 3) Developer Token 을 가지고 Sample Script를 진행해 보자.


5. 우리는 위에서 Evernote-SDK를 이미 다운 받았기 때문에 다운 받은 Evernote-SDK-Python 파일이 있는 곳으로 이동해 진행을 하면 된다.

아래와 같이 해당 폴더로 이동했다면 setup.py 라는 파일이 있는 것을 확인 할 수 있을 것이다.

아래의 명령어를 실행한다.

해당 명령어는 Evernote SDK 에있는 Library들을 python directory에 위치 시켜 사용할 수 있게 해준다.

$ python setup.py install


6.  위의 install 이 제대로 진행 되었는 지 확인 하기위해  아래의 명령어를 실행해본다. Error 메세지가 없이 조용히 종료 된다면 제대로 install된 것이다.

$ python -c 'from evernote.api.client import EvernoteClient'


7.  ./sample/client/ 경로로 이동한다.

EDAMTest.py 파일이 있는 것을 확인 할 수 있다. 해당 파일을 열어서 아래와 같이 첫번째 auth_token 부분에 위에서 발급 받은 dev_token 을 입력한 뒤 저장 해준다.

다음 명령어를 실행해준다.

$ export PYTHONPATH=../../lib; python EDAMTest.py

명령어를 실행하게 되면 1개의 노트북을 발견하였고 노트북의 이름은 test1 이고 새로운 노트를 생성하였다는 메세지와 함께 새로 생성한 노트의 GUID를 출력하는 것을 볼 수 있을 것이다. 단지 콘솔에 메세지만 출력된 것이 아니고

https://sandbox.evernote.com/    샌드박스용 Evernote에 로그인하면 아래와 같이 새로운 노트가 생성된 것을 확인 할 수 있다.

노트가 생성되는 것 까지는 확인 하였지만 어떻게 활용을 해야될지 감이 잘 안올 것이다. 아래의 코드는 노트생성을 위해 가장 기본이 되는 형식이다. 

client = EvernoteClient(token=auth_token, sandbox=True)

note_store = client.get_note_store()

notebooks = note_store.listNotebooks()


# To create a new note, simply create a new Note object and fill in

# attributes such as the note's title.

note = Types.Note()

note.title = "Test note from EDAMTest.py"

note.content = '<?xml version="1.0" encoding="UTF-8"?>'

note.content += '<!DOCTYPE en-note SYSTEM "http://xml.evernote.com/pub/enml2.dtd">'

note.content += '<en-note>Here is the Evernote logo:<br/>'

note.content += '<en-media type="image/png" hash="' + hash_hex + '"/>'

note.content += '</en-note>'

created_note = note_store.createNote(note)


노트생성을 위해서는 사용자의 정보가 우선 있어야 한다. 이때 사용되는 것이 auth_token (dev_token)이다. 토큰을 이용해 노트를 작성할 계정의 사용자임을 확인시킨다.

client = EvernoteClient(token=auth_token, sandbox=True)

그다음 필요한 것은 노트저장소의 정보이다. 위에서 확인한 사용자의 노트저장소의 정보를 가져온다.

note_store = client.get_note_store()

노트 저장소에는 노트북이 있을 것이다. 한개일 수도 있고 여러개 일 수도 있다. Evernote-sandbox 계정을 생성하고 로그인 했을 때 노트북을 한개 만들었을 것이다. 해당 노트북이 기본 노트북으로 지정되고 노트를 생성할 노트북을 우리가 따로 지정해주지 않는다면 기본 노트북에 자동으로 생성이 될것이다.

notebooks = note_store.listNotebooks()

노트를 생성할 위치와 계정 정보를 확인 했다면 노트를 만들어보자. 노트를 만들기 위해 노트 객체를 가져온다.

note = Types.Note()

노트의 제목을 설정해준다.

note.title = "Test note from EDAMTest.py"

노트의 본문내용은 Evernote 에서 자체적으로 사용 하는 ENML 이라는 markup language를 사용해야된다. 때문에 3번째 줄의 '본문 내용' 을 제외한 나머지 코드의 형식을 맞춰 주어야 생성이 가능하다.

note.content = '<?xml version="1.0" encoding="UTF-8"?>'

note.content += '<!DOCTYPE en-note SYSTEM "http://xml.evernote.com/pub/enml2.dtd">'

note.content += '<en-note>본문 내용<br/>'

note.content += '</en-note>'

이제 위에서 작성한 제목과 본문내용을 가진 노트를 생성하면 된다.

created_note = note_store.createNote(note)


Evernote API 사용에 있어서 가장 기본이 되는 노트 생성과정을 알아보았다. Evernote API를 사용하기 위해 기억해야될 것은
auth_token (developer_token)과 모든 기능 사용에 기본이 되는 사용자의 정보를 확인시켜주고 노트저장소의 정보를 가져오는 것이다. 이 세가지를 잘 활용한다면 Evernote API 사용에 많은 도움이 될 것이다.





'Newbie's Log' 카테고리의 다른 글

On-ly 2.0 project review  (0) 2015.08.18
Django 설치 및 환경설정  (0) 2015.08.03
Evernote API 사용하기  (0) 2015.07.29
주니어 개발자의 On-ly 2.0 프로젝트 경험기-개발편  (0) 2015.07.21
On-ly 소개 Prezi  (0) 2015.07.16
Ubuntu에서 OracleJDK설치하기  (0) 2015.06.23
Posted by 한종민