Skip to content

akhaku/evernote-django

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

23 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

evernote-django

A Django/python wrapper and example for the Evernote API

Author: akhaku

Feel free to fork, devlop and submit pull requests for this project on your own, or let me know if there's any specific functionality you want included. You're welcome to use this for your django/evernote app, just let me know that you're using it!

Credit to leehsueh for some great work that helped get me started.

N.B. The only apps you need are evernote_api, evernote and thrift. The rest are there for demonstration purposes.

Requirements

  • Beautifulsoup for XML parsing
  • The Evernote Python SDK (provided as evernote/)
  • A Python implementation of the Thrift protocol (provided as thrift/)

Setup

  • Download the repository.

  • Remove everything but the three folders evernote_api, evernote and thrift.

  • Install Beautifulsoup.

  • Add evernote, evernote_api, thrift and bs4 to your INSTALLED_APPS.

  • Add the following settings to your settings.py:

    EVERNOTE_HOST # sandbox.evernote.com for dev EVERNOTE_KEY # Your Evernote consumer key EVERNOTE_SECRET # Your Evernote secret key EVERNOTE_OAUTH_COMPLETE_URL # Redirect URL after the OAuth flow EVERNOTE_OAUTH_TOKEN_VALIDITY # OAuth token validity in days

Usage Instructions

OAuth

The following is an example for sending a user through the OAuth flow:

from evernote_api import EvernoteAPI
everAPI = EvernoteAPI()
callback_url = request.build_absolute_url(everAPI.token_callback_url)
return everAPI.get_token(request, callback_url)

The user goes through the OAuth flow and ends up at the url specified in settings.EVERNOTE_OAUTH_COMPLETE_URL. From the view that handles that url, the token and related info is stored in four session variables:

request.session['oauth_token'] # stores the OAuth token
request.session['expires']     # stores the token expires time
request.session['edam_shard']  # stores the shard the user belongs to
request.session['edam_userId'] # stores the user id

Remember to extract these and then delete them from the session.

Notestore API calls

All notestore calls must use an EvernoteAPI instance created with the user's oauth token and shard number. See the following example:

profile = request.user.profile
everAPI = EvernoteAPI(profile.evernote_token, profile.evernote_shard)
tagged = everAPI.get_notes_with_tag("sometag")

Currently, following API calls are implemented :

EvernoteAPI.get_notes_with_tag(self, tag) # gets notes with a specific tag
EvernoteAPI.get_note_text(self, note_guid) # gets the text of a note

To implement more functions, refer to the Evernote API reference and write the calls using EvernoteAPI's internal convenience function _get_note_store. Take a look at the two example functions written thus far as a guide for the function calls and datatypes.

About

A wrapper for the Evernote API in Django/Python

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published